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 14479 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?