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 14480 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
BASeBlock 2.0.0
« on: February 18, 2012, 07:01:15 AM »
Game I've been working on for a good year or so now.

http://www.youtube.com/watch?v=fODwiLkgBss

Has a Level Editor which I don't show there. (which was of course used to design the level that I play on in the clip)




^everything is better with explosions and messy debris all over the place.


^ everything is better with lasers.

Uploaded it yesterday morning, and got everything setup for it. Spent the three days previous to that (without sleep. dead serious) going nuts fixing issues all over the codebase, fixing the high-scores (which hadn't worked since I implemented them), touching up the neat-o game-over high-score display that I had since forgotten, fixed a few race conditions etc.

Finally managed to get everything working thanks to some help from Mulreay, Camerongray, and Craig (Cengbrecht on the forum), at which point I was able to collapse and get some rest :)

Technically, it's shareware since the save feature is locked (weakly... I keep point that out for some reason...) without a registration code- don't know if this counts as the bad kind of advertising.  I would hope not.

Written in C#, requires .NET 3.5 SP1.

Works best on a machine with at least a dual core processor (otherwise the UI thread get's starved and that can make things difficult). The uploaded version has some cosmetic issues and flicker problems on XP due to the way XP's painting works which I believe I worked around in my current build.

I still need to replace some of the sounds with "original" ones. Most of them are created by me but a few bleedingly obvious ones are still essentially the filler sounds I used when I first developed the feature they are for.

On the bright side, it can have blocks and various other extensions added by merely plonking a C# file in appdata; the game will compile it using the codeDOM and then use reflection to inspect the contained types for implementations and deriviations of the various base classes and interfaces it is interested in. (the installer has two relatively simple blocks provided with scripts). Of course without understanding and knowing the object model I guess the applicability of that feature is pretty poor.

Spent yesterday starting on the framework to support blocks being scripted via JavaScript using the JINT interpreter. Everything would be going well if JINT would cooperate with me and stop giving me silly errors that make no sense. On the bright side at least the code I tweaked (which basically meant I rearranged some of the editor's guts) will make it possible to allow several block types that are otherwise invisible to the editor to be used.
I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #1 on: February 18, 2012, 10:26:27 AM »
Those are some horrible sound effects. Where do I play the game?

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 #2 on: February 19, 2012, 04:04:17 AM »
Those are some horrible sound effects. Where do I play the game?

It installs locally. The Download link is at the bottom of box.
I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #3 on: February 19, 2012, 04:55:48 AM »
Alright. I don't seem to have a ball bouncer and the explosions slow the game down.  ???

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 #4 on: February 19, 2012, 07:21:38 AM »
Alright. I don't seem to have a ball bouncer and the explosions slow the game down.  ???
(OS/specs?)

No idea about the first one.(which levelset/generator did yu try?) Second one depends on specs, but if it's really bad it could be swallowing exceptions, which could be related to the first issue. Though I couldn't fathom why.

there should be a few files in it's %APPDATA% dir (%APPDATA%\BASeBlock\) baseblock.log and init.log. If you could post/attach those it might help.
I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #5 on: February 19, 2012, 08:05:26 AM »
I denied your application access to the internet. Don't see in why it should have that if it's single player.

I picked basic levels. See PM for other stuff/

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 #6 on: February 19, 2012, 09:36:20 AM »
I denied your application access to the internet. Don't see in why it should have that if it's single player.
It checks for updates. You can add /skipupdate to the shortcut to skip it. It handles exceptions at that point, though, so unless blocking it makes it throw something other than a WebException I doubt that's the problem.

Quote
I picked basic levels. See PM for other stuff/

Quote
Language: Dutch (Regional Setting: Dutch)
This <might> be the cause, it's the only thing inconsistent with the configurations of machines it works on.

I've updated it to support a /FILELOG option, which will log some extra stuff to a .log file in it's appdata folder. My suspicion atm is probably FormatException, or something similar as a result of changed number/date formats or the like.


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

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #7 on: February 19, 2012, 10:06:00 AM »
Your installer refuses to install to my C:\games\bb folder. I thought I did it wrong the first time but now it has done it again. Actually, it doesn't refuse. It just doesn't do as I say and installs it in program files any way.

This is what it looks like on my computer:



Where would I find your log? I ran the game with the /FILELOG parameter.

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 #8 on: February 19, 2012, 10:30:29 AM »
Looks like you are using a non-standard DPI, that's probably why it looks funky.

You could try changing the compatibility settings for BASeBlock.exe, and checking off "disable display scaling at high DPI settings".

Also fixed the installer project for the next version


The log should appear in %APPDATA%\BASeBlock\ and will have a name generated from the date/time.

Thanks for your help :)
I was trying to dereference Null Pointers before it was cool.

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #9 on: February 19, 2012, 10:36:50 AM »
I run it at 125% indeed! However, Windows considers that "normal". 100% is considered "small".   ;)
The compatability setting didn't make it work, though.

There is a debuglog present now (debug2012219991) but there's noting inside of it.

Another thing is that when you first run your program, the splash screen doesn't have a task bar entry which means it'll get lost behind all the other windows if you do not click on the image immediately.

CBMatt

  • Mod & Malware Specialist


  • Prodigy

  • Sad and lonely...and loving every minute of it.
  • Thanked: 167
    • Yes
  • Experience: Experienced
  • OS: Windows 7
Re: BASeBlock 2.0.0
« Reply #10 on: February 20, 2012, 02:54:37 AM »
How sad, Arkanoid gets a tag but Breakout doesn't.

Anyway, I still don't see a way to download this.  By "box", I assumed you were referring to the description on Youtube, but that doesn't appear to be the case.  I'm sure I'll find a way to download it, but I thought I'd mention that.  EDIT:  Aha, silly me, I see what you were referring to.  Downloading now.

Also, is the "death" sound effect taken from Bionic Commando?  It sounds very similar.  Of course, it's fairly generic, so it probably sounds similar to a lot of things.


EDIT 2:  What's the normal/expected frame rate for this?  I'm running it at 333 FPS.
« Last Edit: February 20, 2012, 03:09:42 AM by CBMatt »
Quote
An undefined problem has an infinite number of solutions.
—Robert A. Humphrey

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #11 on: February 20, 2012, 04:09:03 AM »
the link is in his signature. http://bc-programming.com/index.php?page=downloads&dltype=1

Quote
I'm running it at 333 FPS.


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 #12 on: February 20, 2012, 08:41:27 AM »
Also, is the "death" sound effect taken from Bionic Commando?  It sounds very similar.  Of course, it's fairly generic, so it probably sounds similar to a lot of things.
it's taken from Megaman- sort of- I took the megaman sound effect,  ripped it to a MIDI, and messed with it in FLStudio.

Quote
EDIT 2:  What's the normal/expected frame rate for this?  I'm running it at 333 FPS.
I get around 150. It depends entirely on how many things are going on. highest FPS would probably be from the "spartan" set. (which interestingly enough is actually a .cs script in %appdata%/BASeBlock/scripts/ that could be edited directly if you knew what you were doing)

Also, I fixed the DPI-related issues, The splash screen now has a taskbar button, which if on Win7 will show a progressbar as well, made some gameplay changes (the ballsplitter makes it way to easy to have a ridiculous number of balls, so I added a ball limit that can be set per-level), Also made it stop playing that utterly annoying tune, instead now it plays a different yet equally annoying tune. (you could change the music using the cheat window, Control-Alt-C, and enter Playmusic <soundfile> AFAIK it will work with MP3 files, but don't tell fraunhaufer.

Can't upload the new version yet because the connection I'm using is getting dangerously close to it's limit. May as well take this time to actually design some levels to include with it, rather than rely on the random generator things. And make some actual documentation...

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 #13 on: February 22, 2012, 09:19:36 AM »
Current dev changelog for 2.1: (not released yet, FYI)

2.2:
Code: [Select]
*Attempted to resolve DPI-related issues. .NET/winforms was resizing things to fit the new DPI, but I needed "pixel perfect" calculations. Seems to work (tested on 120DPI on Win7 and XP with no issues)
 resolved by forcing the Game PictureBox to a specific pixel size in both the main game and the editor. Also fixed some resizing issues on the splash.
*Added Left Pane to the Editor. Has nothing, currently. Not sure what to add to it. a Toolbox of Blocks? maybe a Task pane?
*made Editor more friendly to resizing. (Editor portion itself remains static, everything else sizes around it)
*Installer now respects where you actually want the game installed.
*changed default music to BASESTOMP instead of BASEC ("Ode to the square wave")
*fixed delay being set wrongly on the LaserSpinBall (for the terminator behaviour)
*fixed /FILELOG parameter, saved to appdata rather than executable directory. Oh by the way there is a /FILELOG parameter. Also switched
 important segments of code to use Trace.WriteLine() rather than Debug.Print (so it will show up in the log files for the release build)
*Enabled "ShieldPowerup" which creates a Strongblock beneath the paddle.
*fixed "cLevel::DrawIntroBitmap", now it actually centers properly. Applied  this fix to other locations as well, and centralized
 bitmap font size measurements.
*fixed "Frozen" paddle behaviour
*changed terminator powerup to use paddle energy, as well as changing it's first-level to a more useful shotgun (rather than a pea shooter)
*added Charger powerup whose explicit purpose is to charge the paddle. (Energy wise)
*fixed odd behaviour from balls bouncing at a shallow angle to the right wall
*now uses the Windows API Code pack to support things like win7 Taskbar progress bar (in splash screen).
 also improved handling of errors during initialization.
*tweaked StickyPaddleBehaviour; when shift is pressed, the vector for all the balls stuck to it are drawn rather  than the top one on the stack.
*added a field for each level to set the maximum number of balls.
*Terminator behaviour now uses up power
*changed GamePowerup: powerups are not hard-coded but instead enumerated just blocks. Technically, they already were, I was just ignoring the enumerated values.
 the powerup chances are acquired by calling a static "PowerupChance" method; if none is found, 1 is returned. (This will make it possible to add new powerups to the game via scripts).
*hopefully fixed font clipping issues. You'd expect MeasureString() to actually measure the string but apparently not.
*increased volume of "spitfire" sound effect
*fixed Another XP/ non-composited oversight with the pause screen
*Made cheat/value entry screens friendlier for single core machines (more cooperative)
*changed FileDialogs to start in sensible locations (browsing for levelSet's starts you in the levelSet's folder)
+Added Undo/Redo to the Editor. Rudimentary, but works OK. At least now I don't have to pull hair out when I accidentally delete a bunch of blocks...
+Added Icons to various elements. retitled Set Properties Window (frmCreatorProperties didn't really have the feel I was going for)
+added "Silent" property to InvincibleBlock (useful in editor for caging balls).
+added a "Shell" item (mimics the koopa shell from SMB; breaks/damages  bricks to either side but slides along their top
+added a few Triggers/Events
-removed hard-coded references to "Consolas" font. Now refers to INI setting monospace in the "game" section comma delimited list, first entry found will be used.)

Also redefined some more internals... now there is a "minecraftblock" that, if minecraft is installed, will actually read the terrain.png from it's jar file and allow the use of blocks from minecraft. Totally pointless, but oh well.

Works much better now. I'd even go so far as to say slick. Errors during load now make the splash screen turn red (and on win7 the taskbar button as well) and stop- clicking will close it (instead of trying to open the main game window), and you can copy the initialization information (for reporting problems) Only caveat for the entire thing is the sound library. You'd think that playing Ogg files would be pretty simple- it's Open, after all. Not the case. Every single one I've found that actually works either required x86, wasn't truly free (like BASS.NET, which I'm using now) or required some goofy bunch of dlls that didn't even work properly (DragonOgg). And XNA laughably only supports WAV files, which makes it nothing more than a glorified PlaySound() API.

Thankfully at least the sound support is done with adapter classes, so if I ever find a sound library that can play Ogg files and works (and so forth) I'll only need to write another implementation of that same interface. Heck, as it is now, a entirely new sound system could be used by merely writing a new dll and plonking it in the proper place and changing the INI.

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

Raptor

  • Guest
Re: BASeBlock 2.0.0
« Reply #14 on: February 22, 2012, 10:21:13 AM »
Quote
Also redefined some more internals... now there is a "minecraftblock" that, if minecraft is installed, will actually read the terrain.png from it's jar file and allow the use of blocks from minecraft. Totally pointless, but oh well.

And a possible infringement of copyright. Also useless stuff has a name: bloatware.  ;)

So can we try the new version yet?

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.