Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: BASeBlock 2.0.0  (Read 13688 times)

0 Members and 1 Guest are viewing this topic.

BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #15 on: February 23, 2012, 01:24:10 PM »
And a possible infringement of copyright.
It would be infringement if I included the resources as part of BASeBlock. since it instead retrieves them- and can only retrieve them- if the game is installed. if it's not found it just shows nothing and nobody is the wiser.
I mostly did it to test my additions to how the editor enumerates blocks.

Will try to get the new version uploaded soon. Ideally with some less boring levels.
I was trying to dereference Null Pointers before it was cool.

BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #16 on: February 23, 2012, 06:10:42 PM »
Uploaded Version 2.2.0.0 ;D Didn't get to create a nice large set of "main" levels to, but got something of a sampling done in Demonstration.blf" which has a level with some less-common blocks, followed by a Level that demonstrates a "boss fight" of sorts, as well as triggers (killing the boss destroys a group of invincible blocks). The added perk being that typically you wouldn't see the "Boss" (a Snake of blocks) without the editor....  (Which, testing on this laptop, doesn't work to play directly from the editor *adds to buglist*).



More buttons. Many of These were in previous versions but I never mentioned them:
 
F3: Toggle "debug" output. shows a few bits of extra info in the bottom left with the FPS display.
F4: It's best if you ignore this. Is a test for my partially coded implementation of "in-game" menus.
F12: Screenshot (saves to %APPDATA%\BASeBlock\Screenshots as PNG files).
Control-Alt-K: Kill yourself. Can be useful if the ball or balls get stuck.


I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #17 on: February 26, 2012, 01:44:05 PM »
Hah, I can play the game now but when there's a lot of things happening on the screen, everything slows down to a crawl. And when I say crawl I mean "slide-show". Using the energy shooter achieves this effect within no time.


BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #18 on: February 26, 2012, 01:56:39 PM »
Hah, I can play the game now but when there's a lot of things happening on the screen, everything slows down to a crawl. And when I say crawl I mean "slide-show". Using the energy shooter achieves this effect within no time.

the biggest slowdown is usually the lightorbs,(which are the primary reason for explosions being slow)  because they use PathedGradients which are one of the more resource intensive drawing objects.

The other is of course particles. More particles/gameobjects/balls/blocks translates into slowness. I've, in my current version, capped the number of particles at 800 and reduced the number of particles and their TTL (Time to live) for several effects, which has helped keep things smoother.
I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #19 on: March 10, 2012, 05:36:31 AM »
I tried the latest version and it runs without slowing down it seems.

Do you want my opinion on the overall product?

BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #20 on: March 10, 2012, 06:03:44 AM »
I tried the latest version and it runs without slowing down it seems.
That's good.

Quote
Do you want my opinion on the overall product?
Why not. If you think it's bad though you should see my first block breaking game. Oh boy is that embarassing.

I have a later version in dev that I've yet to release... haven't even worked on the game in a while, actually, due to some stuff coming up afk. Latest feature was a controllable platform character that can run around,jump, break most blocks(mario style, heh), as well as a few items. I've had a few ideas for ways to optimize speed further (I realized some of the code I have is rather redundant), because the FPS drops are much more noticable when on platforming levels. I figure a good idea is some sort of weird cross with a platform character and the standard paddle, somehow working together as a team or something. At least it would be somewhat unique that way.

I might unhook the hashed key check-a-majig from it too, and keep the entire thing unlocked, mostly because as it stands now the editor is completely useless since the function I added to allow for testing levels is broken, and it's easier to just say to *censored* with it and make it free. (That, and I've gotten nothing from it anyway*)

My biggest project isn't even on my site(in fact most of the stuff I wrote isn't) I'm not really sure what to do with it, but that's another story altogether.

*Well, actually, that's not true, I did sell the Product Key stuff to a freelance employer with some modifications for a few hundred dollars a few weeks ago.
I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #21 on: March 10, 2012, 07:24:08 AM »
It reminds me of Arkanoid and that's not a bad thing.

I played Shatter a while back (http://www.shattergame.com/) and that's more along the lines of what people expect from games nowadays, even if they're made by an indy developer, graphics wise. (I must say I thought the game was sort of boring and not true to its precedessors, I never finished it because of stupid boss fights)

I haven't played your game all that long because I was hindered by all sorts of bugs first (Which you skillfully fixed) so perhaps it has more going for it gamewise but the presentation is rather .. Psychedelic. I don't know if you wrote the musical score yourself but it's the wrong kind of up-beat. These two things bother me a lot.

BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #22 on: March 10, 2012, 09:18:10 AM »
I played Shatter a while back (http://www.shattergame.com/) and that's more along the lines of what people expect from games nowadays, even if they're made by an indy developer, graphics wise. (I must say I thought the game was sort of boring and not true to its precedessors, I never finished it because of stupid boss fights)
yeah... no way I'd be able to do that. At least not as it stands now. my "engine" supports rotating, moving, animated backgrounds, though, I just don't use them in any of the "default" builders.

Quote
I haven't played your game all that long because I was hindered by all sorts of bugs first (Which you skillfully fixed) so perhaps it has more going for it gamewise but the presentation is rather .. Psychedelic. I don't know if you wrote the musical score yourself but it's the wrong kind of up-beat. These two things bother me a lot.
That DPI thing was a huge pain! But it works better overall thanks to those changes, which is the ultimate aim.

Honestly, the built-in "levels" are absolute crap. To the point where I don't even play them. I need to make a proper, designed set of levels to act as the default, not just have a few random blocks tossed into a level.

The music, I made two or three of them. The old default level music, the newer default level music (probably what you are referring to) and the music on the secret credits screen. The rest of the music is pretty much just resequenced and reinstrumented NES and SNES music. (Main intro music is Megaman 2, Game over music is From Zanac). Definitely needs better music, and possibly a few sound effects changed. I know somebody who actually does it for a living who might be willing to help with that, so what I have now could be considered "filler", just so it isn't silent. And I didn't want <all> the music to be taken from other games- even if what I ended up using wasn't that great, (because I'm hardly a composer)

I'm not 100% sure I know what you mean by psychedelic... I've sort of felt that a lot of it is sort of bland, that's why I keep adding new blocks/powerups/effects/etc.

I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #23 on: March 10, 2012, 11:20:45 AM »
Quote
I'm not 100% sure I know what you mean by psychedelic... I've sort of felt that a lot of it is sort of bland, that's why I keep adding new blocks/powerups/effects/etc.

The splash screen at start-up; very colourful. And the picture-within-a-picture when you play on the right-hand side mostly.

BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #24 on: May 05, 2012, 02:56:07 AM »
Updated to version 2.3.0 :D

Code: [Select]




*fixed intermittent/rare NullReferenceException crash with FrustratorBlock. Oh multithreading, the only time a NullReferenceException

can occur immediately after you've confirmed the value you want to access isn't null.

*tweaked Block Category Attributes so that base classes can be hidden and derived classes can be visible (rather than the base classes inheriting the invisibility).

(They still inherit it, but it can be reversed with the BBEditorVisible attribute)

*reduced default life of fireparticle and reduced number of fireparticles generates by temp balls.

*reduced life of lightorbs as well

*fixed SpawnerBlock to be more flexible (and allow for "instant" spawning, essentially acting as a "spawn location" marker for GameObjects

*tweaked brickblock. Now uses a function to construct a 8x8 pattern bitmap, rather than relying on one existing. Now implements IGameInitializer, as well, to add the brick texture.

*made some changes to the "protection". It still sucks but now it uses SecureString instead of normal strings so it won't be easy to simply see the key by inspecting memory.

that need to spawn instantly.)

*Fixed bug that occurs when generating "random" highscore values when different random scores end up the same.

*_Removed Editor Save check, game is now completely "open" in that it doesn't require "registration". However, one will still need to click-through the nag screen :P)_

*Fixed myriad issues dealing with music changes. Now works solidly.

*Changed NormalBlock so it looks less stupid.

*refactored quite a bit of the code to tease apart some of the files that were getting gigantic. (Block.cs was almost 200KB).
*splash screen no longer throttles the CPU when it doesn't have the focus.

+Added "BuilderShot", which is a power-up that "shoots" a block; first click shoots the block, second expands the shot to grow into the block.

+Added code to make some paddle behaviours exclusive. This is the case for terminator and buildershot; if you have one and collect the other, it replaces it.

+Added frustratorball. This is spawned when you get a Frustrator Powerup. It acts like a standard ball, but only bounces off blocks that were destroyed. Yes, it's as confusing as it sounds.

 Still trying to figure out a way to make it somehow worthwhile to keep it in the game field, or at least hard to get rid of (or at least harder than just letting it fall).

+New enemy, SpinnerGuy. Similiar to EyeGuy, but shoots bullets.

+Added GameCharacter, and platforming elements. Distributed installer has basic set of levels showing some of the capabilities.  Control with WASD and space jumps... I think.

 GameCharacter can hit bricks by hitting them from below.

+Added Shell; kills GameCharacter, also, breaks/hits blocks when it impacts in the side.

+Added Powerupblock that dispenses the GameCharacter powerups. current powerups are extra life, a mushroom which just gives you points, and a invincibility star which does make the character invincible.

+Added Orbs. There are three kinds- Score Orbs, Healing Orbs, and MacGuffin Orbs. the MacGuffin Orbs are counted in the status pane. They do actually do something, and it is useful. You lose half your MacGuffins when you die, but they

 explode out of the paddle Sonic-Rings style. Orbs are spawned by almost any block when it is destroyed.

+Added OrbBlock, which dispenses 50 random Orbs when destroyed.

+Changed Paddle so it takes 1 damage from balls. Balls also increase speed as the game is played.

+Added "Randomizer" powerup, which randomizes the velocity of all balls in play.

+Highscore entry screen (and other entry screens) now support editing (arrow keys and backspace, currently).

+Added some cheats that I'm not going to tell you. (bah you can just use ILSpy to find out, I guess...

+The Paddle now shows when it takes damage. It also takes damage from bullets now (well obviously you cannot shoot yourself).

+Fixed EyeGuy (and by extension spinnerguy). They were forcing the entire frame to redraw every frame when they were alive when it was not necessary.

Known bugs:



-the "machine gun" modes of the Terminator Powerup are broken. Well, they... sorta work, but they are so fast you just end up shooting everything you have in one frame and then exploding.

Platforming. Currently uses a Mario sprite, but that will be replaced with something... at some point.


The New Normal Blocks:



The Orbs somehow add to the gameplay as well, and the ball speeding up over time actually adds a challenge.

And even since then I have implemented framerate stabilization code, which stops the problem whereby lower framerates slow down the game.
I was trying to dereference Null Pointers before it was cool.

Linux711



    Mentor

    Thanked: 59
    • Yes
    • Programming Blog
  • Certifications: List
  • Computer: Specs
  • Experience: Experienced
  • OS: Windows 7
Re: BASeBlock 2.0.0
« Reply #25 on: May 05, 2012, 09:12:15 PM »
The installer for the 2.3 version appears to be corrupt and it is only about half the size of the previous, so I think something is wrong. I couldn't find the link for 2.0, but I just assumed the name of it would use the same convention and be in the same directory and it was. I'll report back when I try it.
YouTube

"Genius is persistence, not brain power." - Me

"Insomnia is just a byproduct of, "It can't be done"" - LaVolpe

BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #26 on: May 05, 2012, 11:12:51 PM »
The installer for the 2.3 version appears to be corrupt and it is only about half the size of the previous, so I think something is wrong. I couldn't find the link for 2.0, but I just assumed the name of it would use the same convention and be in the same directory and it was. I'll report back when I try it.
Thanks for letting me know, my connection is extremely upredictable, and at the time it took nearly 8 hours to upload (and I wasn't able to test the download itself and just hoped for the best). I was able to upload it again now, and the file seems more complete.

It was probably corrupted during the upload. (it took almost 8 hours at the time... huge pain) The previous one would be BASeBlock221.msi (not 200, though that one is there). 2.0.0 is about twice the size of the later ones, since I culled out a lot of large files.

OK, 2.3.0 version re-uploaded. File size is the same now. Changed the information on the page to show <ALL> the older versions that I have uploaded, too.
I was trying to dereference Null Pointers before it was cool.

Linux711



    Mentor

    Thanked: 59
    • Yes
    • Programming Blog
  • Certifications: List
  • Computer: Specs
  • Experience: Experienced
  • OS: Windows 7
Re: BASeBlock 2.0.0
« Reply #27 on: May 06, 2012, 09:12:57 PM »
My general impression of the game is good. Here is some constructive criticism.

Loading window (about window) causes graphics to not refresh on right and bottom side. Might be something about my graphics driver.

Make the images the same size as in the game, so they don't have to be scaled so much. It seems like that much scaling causes them to loose their antialiasization and look pixelated.

The combo text that slides up the screen seems very pixelated.

The music gets annoying after a while. Have it change to a different song sooner (if it ever does).

Quote
I haven't played your game all that long because I was hindered by all sorts of bugs first (Which you skillfully fixed) so perhaps it has more going for it gamewise but the presentation is rather .. Psychedelic. I don't know if you wrote the musical score yourself but it's the wrong kind of up-beat. These two things bother me a lot.

I agree, but it sets the game apart from all the other breakout clones, so it doesn't bother me. Just think of Mario with all of its references. The music is way too repetitive though and it never seems to change. I use FLStudio too and it takes a surprising amount of work for me to create a good melody. I have a few goodish ones though if you're interested. They would probably only be suitable for the ending scene though.

Quote
Thanks for letting me know, my connection is extremely upredictable, and at the time it took nearly 8 hours to upload

Wow. I thought my internet sucked. What do you have dial-up or something?

Quote
OK, 2.3.0 version re-uploaded. File size is the same now.

I tried it; it's good.

Anyway, what do you use for the graphics? Is it just the default for C#?
YouTube

"Genius is persistence, not brain power." - Me

"Insomnia is just a byproduct of, "It can't be done"" - LaVolpe

BC_Programmer

    Topic Starter

    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: BASeBlock 2.0.0
« Reply #28 on: May 06, 2012, 10:41:14 PM »

Quote
Loading window (about window) causes graphics to not refresh on right and bottom side. Might be something about my graphics driver.
Is that for both the about and the splash screen? (Is it something you can get a screenshot of if you're willing- that would give me an idea what might be causing it).

Quote
Make the images the same size as in the game, so they don't have to be scaled so much. It seems like that much scaling causes them to loose their antialiasization and look pixelated.
They are being scaled down from 256x128. There is no "size in the game"; I just use 33x16 as the normal size, but blocks can be any size, so I made the images much larger than needed.

I found that that slowed things down considerably, of course- having to constantly downscale 256x128 bitmaps to the smaller size, so I added logic that scales all images that meet certain criteria by a scaling factor specified in the INI file. I believe it doesn't do any interpolation of the image, which is likely why they experience some aliasing. (I had a reason for making the sizing linear but I've forgotten what it was, I'll probably be reminded when I change it though..)

Quote
The combo text that slides up the screen seems very pixelated.
Yeah, I keep forgetting about that. A lot of the blitting stuff was set for maximum speed which in the case of text seems to make it come out a bit aliased. I changed the class used for the scores, combo text, and so forth just now and it looks much better.

Quote
The music gets annoying after a while. Have it change to a different song sooner (if it ever does).
I've only made two songs and they both suck. There are some other songs that it never plays. The Default level music is the same and none of the level-builders change it from the default, with the exception of the one that builds it from a saved file.
You can change the music manually though, I actually do that a lot; Control-Alt-C, and PlayMusic <filename> can play a lot of different file types.

Quote
The music is way too repetitive though and it never seems to change.
Not on it's own. that "Playmusic" thing above can also play a few of the other tracks, (commando, galway, smwbonus, poing2music (very annoying), wart, and zaark. (for example the code 'playmusic commando' (without quotes) would play that tune. The Sound Manager already supported "queued" sounds, so it should be possible to make it so that a level can have multiple tracks or something to that effect.

Quote
I use FLStudio too and it takes a surprising amount of work for me to create a good melody. I have a few goodish ones though if you're interested. They would probably only be suitable for the ending scene though.
It's a huge pain to make music. Actually, I put the game in indiegogo so with any luck I might be able to get some actual music done properly. In the meantime I was going to use my remixes of NES music.

Wow. I thought my internet sucked. What do you have dial-up or something?

I tried it; it's good.

Quote
Wow. I thought my internet sucked. What do you have dial-up or something?
I don't have my own internet anymore, Currently I'm using my neighbors connection (with permission and the WPA key). It's wildly unpredictable. Sometimes I get 1MB/s, sometimes I can't even see the access point. I think it depends on the weather.

Quote
Anyway, what do you use for the graphics? Is it just the default for C#?

Just GDI+ (System.Drawing). I separate some stuff into layers so, for example, it doesn't draw every single block every single frame, instead only drawing blocks when they are hit or destroyed, stuff like that. For external libraries I think it only uses BASS.NET (for sound) and the Windows API code pack (for things like showing the progress in the win7 taskbar for the splash screen). There are a few other references to things like OpenTK but those are only kept around because of a few half-finished ideas to try to replace the BASS.NET Sound implementation with something more open and available.

Anyway, I made a class diagram of the game a few versions ago. It's pretty big.




Bit of trivia is that the "Spartan" level set isn't actually in the game code itself but rather is actually coded in %appdata%\baseblock\scripts\SpartanLevelBuilder.cs. I keep it there now so that I can be sure that the code that deals with the scripts and integrates them during startup still works.
I was trying to dereference Null Pointers before it was cool.