Blog Stats
  • Posts - 14
  • Articles - 0
  • Comments - 1
  • Trackbacks - 15

 

Saturday, July 01, 2006

Download "Admiral Overalls" today!


Well, the contest is finally done and over with. Well, almost. The judging will take place this week, and an XBox 360 will be sent to one lucky fellow who claims victory in the contest.

But, it's not all about winning. Sure winning is nice -- no doubting that! -- but one should always live for the experience. I had a really fun time developing Admiral Overalls, and I'm still somewhat in shock and awe at what me and Draffurd have managed to put together in only a month. (Actually, only half! Exams chewed up most of early June!)

I'm extremely proud of myself for what I've created here. By true game standards, it's nothing impressive, but in relativity to what I've developed so far, I'm very happy at the solidness and functionality of Admiral Overalls. So I certainly hope that you guys have a fun time with it, too. :)

Irregardless of victory or defeat, I present: Admiral Overalls. (~2.7MB)
And the source can be acquired here: AO Source. (You'll need SDL.NET to build!)







A huge congratulations to all of the other contestants as well. Taking on the challenge of the contest is a big step in itself, but those who coded until the end and sent in an entry deserve a big pat on the back. Sure, there will always be the folks who say, "It's just some contest!", but the experience is way more intense than such terse words could possibly deter. :P

Although the game in its 'contest form' is technically complete, I'd like to (gradually, albeit) add another Episode to the game, with more music, content, and functionality/polish. Now that there's no solid timeframe, I think that the quality can take a jump upwards, too. If there's any interest in user-created levels, I have no qualms with fixing up the map editor to be made public. :)

Good night everyone. I'll toss out that link one more time: Admiral Overalls.

Friday, June 30, 2006

"Admiral Overalls" submitted!


That's right, it is done.

And I couldn't be prouder. :D

I'll post in more detail tomorrow when I'm not asleep. Sooo tired...

Just about done!


Yes, I'm well aware that I'm cutting it down to the very limits. I'll likely be submitted my entry somewhere in the realm of 11:45PM CST. :P

Technically speaking, the game is practically completed. I just need to implement saving/loading, the intro screen -- with a GWB.net logo :P -- and the Game Over sequence. Not that bad at all. And I still have like 2.5 hours left! ;)


Also, I'd like to extend a big congrats to everyone who managed to submit an entry, complete or not. It's not that hard to take on a contest challenge, but it takes some real kazoodles to stay in the game until the end and actually send in something. Pat yourselves on the backs, my noble game developer friends. :)

Wednesday, June 28, 2006

Vague update!


No screenshots to show tonight, mostly because what is complete can't be seen visually, really, and what's semi-complete is using programmer art which I refuse to show publically. :D

All enemies done. Phew, this took a while. Admiral Overalls has 12 different types of enemies, which I think is pretty good considering the time frame. 8 of them are unique, and 4 are variations of the same AI type of a few of the foes. Each is rather unique -- and in a few cases, VERY unique. I must warn everyone however of the sheer scariness of Crocodile-Man, hehe.

Overworld partially done. The overworld is the spiffy name for the big map that the player moves around to select what level they are to play next. Some levels will block passageways, so that the player must beat one level before being able to access others. I'm waiting on Draffurd's good-art(tm) for this, so no programmer art screenshots tonight!

Just two points? They sound small, but they've been a heck of a lot of work. It's also not to mention all of the bug fixes, optimizations, and refactoring that's been going on behind the scenes. You can trust me when I say that I've been working very hard on this. :)

Once again I'll mention the awesomeness of the other entries also on the verge of completion. Fantastic work! Both of you should be boundlessly proud of yourselves for what you've created. I'm very eager to play through both of yours! :)

(Oh, and two more days left until the contest is over. I'm very sure that we'll make it, but it's going to be heck-of-a tight!)


Visual C# Express Discussion: This IDE has treated me wonderfully over the course of the contest. No crashes, no really annoying 'features' of anysort to note. It's been stable, supportive, and even makes me cappucinos once and a while! Thanks to my experiences with Visual C# 2005 Express, I'll definitely be making use of it again in future projects.

Monday, June 26, 2006

Keep the ball rolling, Admiral!


'Admiral Overalls' progress continues to move forward tirelessly. Me and Draffurd have until the end of Friday to finish our game, which means just a meager 4 days remain! I have a feeling that it's going to be very tight, but we should be finished the game by then.

Allow me to toss some more screenshots at you, dear reader. :)




(Easy to tell which maps I make, and which Draffurd makes :P)



(You'll just have to wait until you play to see what THIS enemy does!)



(Hey, who is that Commander beneath those sheets?)



What's new?

Music! Now a music track (MIDI format) can be associated with a map, to play continuously while the map is being played on. Draffurd is pumping out some wonderful tunes that really spice up the atmosphere of the game.

Death! Yes, now the poor Admiral can meet his demise. Luckily, he's armed with a number of extra lives that lend him a second chance. Thank goodness!





Door fixes! Now doors properly block enemies from passing through them -- who neglect to ever carry keys of their own -- and tomatoes now splatter all over the door frame rather than passing through unscathed. Both seem trivial, but it's the thought that counts. :P

Enemy death! Enemies now either "POP!", "BOIK!", or "SPLAT!" out of existance when pummeled with an ample number of tomatoes. There is also a rather attractive tomato-splatter animation. :)

And of course, as usual, a healthy number of bug fixes.


Once again, I think I'll reiterate (and brag a little, hehe) over how extremely pleased I am with how the game is turning out. I think AO will be me and Draff's most professional/polished game we've made, and maybe even the most fun! I certainly enjoy myself when I play over the few test levels we have, and I wrote the darned thing!


Visual C# Discussion: Another not-so-positive point about VC# Express. I really really really dislike how running the game from the IDE doesn't force the current directory as the root project directory. Instead it makes it the /MyProject/bin/Release/ folder. This irks me because I need to include a "Environment.CurrentDirectory = "" when I'm developing, so I can run it from the IDE properly. Otherwise it won't find the game resources in the \Data\ folder off of the project root dir. Then, when I'm distributing, I need to comment out that line in order for it to work with the executable in the project root dir rather than off in the bin/Release dir. Aaaah!

(And nobody had better reply to tell me how I've missed some obvious option that solves this entirely!)*

*(Help me!)

Saturday, June 24, 2006

Another step towards the finish-line (I hope!)



I'm still hugely pumped. Every day now it's starting to look and feel more like a real full game. :D









Tomato Shooting: Luckily most of the inhabitants of Trozak are vulnerable to tomato-juice! Admiral Overalls takes a moment of charge-up time before firing, but the tomatoes pack a powerful punch. They travel in an arc-like motion that enables you (craftily) hit enemies on lower platforms. Not shown in the screenshots since they are rather motion-dependant.

Player Health: Shown in the second shot. When the player or an enemy takes damage they flicker white for a moment, to indicate such. I was surprised SDL.NET handles it so well, since it's changing all non-transparent pixels to white on a per-frame basis, which I thought .NET would slow down to heck for since it needs to go through the managed/unmanaged DLLs for nearly all of its pixel-manipulation calls. Oh, and cool hearts I drew. Woot.

Enemy Life/Death: Enemies also have health and react similarly to tomatoes; flickering white upon being damaged. Most of the Bounder enemies only have 1 or 2 health points and are easily evaded or dispatched. I just need a few animations for tomatoes splattering and enemies dieing (POP!) to be done with this.

Map-Scrolling Edges: No more black void beyond the edges of the map. This was a small addition, but it already feels more professional with it added.

Map Backgrounds: Draffurd whipped up a bunch of really awesome paralax backgrounds to be used in the game; these Blue Hills being one of them. I love it, myself.


Kudos to Draffurd for all of the awesome art he sent me today. All of which will be unveiled when you play the game. You are going to play, aren't you? :)


Visual C# Discussion: I have absolutely nothing to say about VC# today; I barely even noticed it. Which is exactly the way it should be. If your IDE is doing it's job properly, you shouldn't even realize that it's there. Like a carburetor. ;)

Friday, June 23, 2006

Steady progression wins the battle. Right?


Gotta rush, gotta rush! Just 7 days left! Thank goodness the deadline for the contest is at 11:59PM on June 30th, thus giving me virtually an extra 24 hours!


Refactoring

What project is complete without its own share of tedious refactoring? Today I realized a few follies in my code design, and shifted some logic around. For one, sprites (sprites==entities=='things') are now created from a set of 'sprite templates', rather than generated from a hard-coded list every time one is created. This set contains things like: the player, enemies, fruit, and doors. The 'Sprites.txt' file in my Data\ folder resembles:

04,16,16,Blue Bounder
04,16,16,Red Bounder
00,16,32,Boxman
00,16,16,Roller
00,16,16,Spikes
00,32,32,Croc-Man

The first field is the ID of the sprite template (zero being a non-template, generic sprite), and the next two are the width/height of each frame in the animation. The last being both the sprite's name and filename; coincidentally paying homage to Java's equally restricting naming style. :P

I also formed an AddList and DeadList, for adding and removing sprites from the game. Since I can't directly modify a list while I'm in a foreach() loop, I toss to-be-destroyed and to-be-added sprites in their respective lists, and they get added in the next iteration of the game loop. Is this elegant enough? I'm no optimzation buff. Feedback is good. :)


Foes!

I added the (arguably) most basic foe there is: The Bounder! This little fellow jumps up and down in whatever direction it's facing, and reverses directions upon hitting a wall. These squirts come in three flavours: green (jumps a medium amount and moves at a medium speed), blue (jumps really far at a fast speed), and red (jumps really high very frequently). I figured I'd take the multiple enemies per-AI approach, since time is in low supply. Not only is it easier, but it still looks pretty cool! Here's a shot from the map editor whilst making my little test-map:



(The editor's viewport is 50% the actual game screen, for ease of use)




Points! (and HUD)

I implemented the "points" system today, which is essentially a trivial accumulation of values by collecting fruit sprites and other tasks. As trivial as it might seem, when I grab an apple and I see some flashing numbers appear and fade up into the air...well, it just feels good!



(Points++)



Also shown here is the HUD/status-bar, which currently shows points (functional), lives (non-functional), and tomato(e)s left (non-functional) in a cool semi-graphical fashion.


Overall

Overall I'm very pleased with how the game is coming together. Granted I only have one week left until I need to finish it -- so stress is a factor -- but I'm surprised how easy it's been to toss together a game in C# -- a language I've never made a game with before -- and SDL.NET -- a library I've never used before. The other cool thing is that there's been zero speed issues. The game runs wonderfully, and I haven't even optimized that much of the drawing!


Visual C# Express Raving: I *really really* like the auto-complete feature on overriding virtual functions. Right after you hit the spacebar after typing the 'override' keyword on a function declaration, it pops up a beautiful listing of all virtual functions open to overriding. Awesome. And of course it'll fill it in for you after hitting enter, and even includes a "base.Foo()" call as well! Sweet. I was eyeing the "Refactoring" tab on the top menu as well today. Smells like a good topic for my next VC#-talk. (Am I the only one logging my VC# experiences, here? I thought this was on the rules page :P)

Thursday, June 22, 2006

It's all about cramming..


"What of gamedev!?"

An excellent question. With an equally excellent answer. I'll illustrate this by showing you Draffurd's friggin' awesome title screen for 'Admiral Overalls', in all of its 4-bit glory!




(MSPaint FTW!)



It's done in the same general style of Apogee's (old) wonderful games: show a cool shot of what the game is like in a location that never actually appears in-game. Awesome. :D

The Map Editor is now also virtually complete. I had to revamp a bunch of things of a boring nature that I won't babble about here, but needless to say, it's looking good. Looking so good I won't even post a screenshot (today).


"Let's see a random in-game shot!"

Okay. Glad you asked.






Next on the Roadmap is collecting fruit to gain (elusive) 'points', followed by basic enemy logic and tomato-shooting action.

All of which in the next ~6-7 days before the contest ends. Oh joy. :)


Visual C# Express Rant: Not a praising rant today! I really wish there was an option to hide the Property window when you are in code-mode. It's very handy when you're working on a WinForm, but it just gets in the way of my 'beautiful' code when I'm working on it. I also dislike the way that the Start Page must be closed manually after loading a project (even via link on it). I mean, it's a VERY nice start page, don't get me wrong, but once I've opened my project I just don't want to deal with its existance anymore. :) Oh, and I'd really like some way to track run-away processes in Release mode. :P

Wednesday, June 14, 2006

Motivation plunge (temporary!)


My "Admiral Overalls" motivation is rock-bottom at the moment. In ye olde days, this the point where I'd say "nuck this!" and quit the project. But I'm far l33ter now, so I just fall into a lapse of depression until I get back on the horse again.

The only problem is: this time around, time counts! The contest ends June 30th, and I should be roughly half-way done. Well, I'm not. I'm still struggling to get the (very buggy) map editor finished so that Draffurd can start pumping out some content. My lack of extensive C# experience (especially with SDL.NET) combined with the time limit is really nerve-wracking.

On the upside, I did implement object placing/deleting, which includes the player start-point, tomatoes, and various fruit. (The fruits being collectable for 'points' of a trivial nature)

But it'll get done. By George, it'll get done! Whenever I feel down, I just look below for motivation:





Obligatory VC# Express Rant

Solution management is COOL! I played around with my two projects, "Admiral Overalls" and "AO Map Editor" and rather than running each in a seperate instance of the IDE for testing, I combined them into one solution. I don't really like the term "solution" for it; I think MSVC6's "workspace" was cooler, but oh well. I'm just a little too oldschool for my own good, though. Still, the usage of solutions to manage multiple projects is cool. *thumbs up*

Oh, and did I mention how lightning-fast the C# compiler is on that thing? Gah! Everything always compiles almost TOO fast. ;)

Sunday, June 11, 2006

Le Editeurè du mappè!


Yes, it truly is Le Editeurè du mappè! Excuse my horribly broken French, but I am in fact referring to the map editor for my contest entry, Admiral Overalls.

So far the map editor is basically the modified game's source, with a bigger resolution, scrollable via the arrow keys, and able to edit the map with the mouse buttons (left for place tile/sprite, right for delete tile/sprite). It's so easy it should be illegal. It very likely is.





As you can see the interface is quite simple. Since time is the major constraint, as with any contest, the KISS method (Keep It Simple, Stupid!) was deemed the most appropriate. We have the left SDL-rendered window that draws the map and its tiles/sprites -- sprites being entities like enemies, powerups, and their ilk -- while the window on the right lets the user choose their palette (tile or sprite) and choose whichever they please.

Currently placing tiles/sprites is pretty simplistic: point and click. This gets to be a royal pain when needing to fill in solid areas, like the large region of 'dirt' at the top-left area of the screenshot, so I'll probably end up implementing a rectangle-fill feature sometime in the near future to avoid future pain. ;)

Draffurd has drawn a few really cool enemies that are both comedic and will make for some interesting gameplay. I won't unveil anything, except that one of them is inside a cardboard box. Literally. Don't worry, you'll get it when you play. :P


Visual C# Express Rant-of-the-Day: The debugger is nice. I had a number of (silly, doh) errors on my behalf and through debugging with VC# Express I managed to catch virtally all of them. In fact, even when I ran the game without Debugging turned on I'd still get helpful (albeit less vague, naturally) hints as to the nature of my bug, and a callstack of exceptions that gives some pretty strong pointing-at in the direction of whereever I messed up. ;)

Thursday, June 08, 2006

Jumping forward in development! (/pun)


Implemented jumping today, along with it's (groovy!) character animation. Hard to see in a still-frame screenshot, but he bends his knees and pauses for a moment before each leap, in tribute to the original Commander Keen. ;)





Hope to get the map editor mostly written during Friday/Saturday!

Wednesday, June 07, 2006

Admiral Overalls -- The Lost Episode!


That's right, folks. Be sure to hold onto your hats, because Admiral Overalls -- a suspiciously similar character to the infamous Commander Keen -- is making his debut at the end of June. :)


Gameplay

The game will play a lot like the classic 16-colour DOS PC platformer, with cool levels, cool features, and really lame sound effects. The main idea is to get together a really solid, functional, but not overly flashy game together. I've found that focusing too much on glitz *pokes at the 3D entries :P* is the road to incompletion, or an unpolished entry. Platformers are fairly simple in general, and I've written a tile engine and sprite manager over 50 flippin' times, so no problems there.

Admiral Overalls will wield his trusty slingshot, ready to unload countless rounds of tomatoes from his trusty tomato-basket (not drawn yet :P) upon his back. His mission: to recover the energy-crystals spread out across the hostile alien world he haphazardously landed on, in order to escape from their clutches back to Earth!

It's almost so corny it's cool!!


Progress

The SpriteManager class is now written, and is more or less fully functional. The Player class derives from the generic Sprite class, enabling user-input in order to walk left/right, and allow our hero to jump (fully affected by gravity). The spaceship was tossed in there for fun, the graphic being from another project, but we may 16-colour-ify it and use it for the Admiral's spaceship. :)

The standing animation is as far as Draffurd has right now, but it looks infinitely better than my hideous placeholder art, which I will not post here lest you gouge your own eyeballs. :P

The map is also still semi-random, providing a few interesting jumps around before getting stuck in a pit somewhere in that random rubble. The map editor is the next item on the list, so the screenshots will hopefully get more exciting, hehe. And of course, kudos to Draffurd on his awesome tiles, and really cool cloud-city backdrop!



(How do you plan on getting out of THIS one, Admiral Overalls?)



Visual C# Express Banter

Generics are really cool. The List<> generic makes life massively easier compared to the boxing/unboxing hell of .NET 1.1 and its coveted ArrayList class. I'm also using the Dictionary<> generic in the SpriteManager too, in order to refer to loaded images by name instead of memorizing obscure index numbers. VC# Express is doing a wonderful job of boosting productivity. If I were using SharpDevelop or another 3rd party IDE, I'd likely still be only half as far as I am now.

If I had to complain about *something*, it'd be how Intellisense likes to pop-up after every modifier keyword preceeding a function. Typing out 'public virtual static void OnUpdate()' makes me wade through like five Intellisense popups as I go. Arg!

Tuesday, June 06, 2006

Groundwork 101 and Project 4BP


And with much hesitation, I've finally begun on the actually groundwork that the game will run on.

But just what is this fabled project, you might be asking yourself? Although the name has already been chosen, I'm going to throw a crude Work-In-Progress name until a more dramatic moment of unveiling: Project 4BP! More specifically: Project 4-Bit Platformer!

This game will be a tribute of sorts to all of those wonderful elderly PC DOS games that ran in 320x240 resolution and made use the massive 16-colour palette. Such legendary games as Commander Keen, Halloween Harry, Crystal Caves, and others. (Sans my bias towards Apogee :P)

Today was spent getting going on the actual code itself. I've decided to use C# for this project -- as I've already mentioned -- alongisde the raw 2D pixel-pushing power of the .NET flavour of SDL, SDL.NET. So far it's proving WAY more effective than GDI+, giving me FPS times of ~150 while rendering a full tile-map. If I were using GDI+ via WinForms, I'd be lucky to get over 10. :( Huzzah for native DirectDraw acceleration!

As I was saying before that little tangent arose, today was spent on getting the groundwork going for the game engine. Since it'll be a nice juicy platformer, the integral parts are: a) a solid tile engine for the map itself, and b) a sprite manager to keep everything in check. There's also a relatively simple game state mechanism that keeps track of just where we are in the game. So far the TileEngine class takes care of holding map data, camera offset, and rendering the actual map. It's currently just full of random tiles that Draffurd (the game's [wonderful] artist) has drawn so far. Nothing fancy, but it shows that it works:



("All real purty-like!")


As you can see it's just the Random class pumping out values to fill what would otherwise be an empty tilemap. Later on I'll focus on writing somesort of simplistic map editor to accomodate the content creation process.

Next up -- which I'm working on as we speak -- is the SpriteManager class. This will take care of rendering virtually everything that will be considered an "entity": enemies, spikes, the player, tomatoes, and all of that wonderful stuff. Likely I'll hack in text rendering as well for the heck of unification. :P

VC# 2005 Express Pro: That neat "highlight your latest mistake" feature along the bottom is really neat. Helps me catch the rare typos that I make. :)

VC# 2005 Express Con: For some reason, every time I use the "Add New Item.." "Class" it adds references to System, System.Data, and System.XML every time, even after I remove them previously. Blah.

In other words, progress is moving along steadily. Me and Draffurd are both very confident in the product that we'll be pushing into the finish line, come the end of this month. :)

Thursday, June 01, 2006

Onward, VS.NET Express! *lashes*


Hello everyone.

So, it looks like I'll be competing in this coveted Exclusive GeeksWithBlogs Member Game Design Contest that I've been hearing so much about. It's only a short one (one month) so I'm confident that I can at least spew out something in time that resembles a game. Plus, I've been looking for an excuse to brush up on my C# skills.

Due to the previous paragraph, I suppose it's obvious that I'll be making use of Visual C# Express 2005 for my contest entry. I've had it installed/registered for a few months now, but it's only now that I've really had a reason to boot 'er up and actually see what I can do with it. Should be a fun powertrip. ;)

Maybe after every entry I'll add a little "Thing I like" and "Thing I dislike" bit to fulfill the requirement of speaking of my experiences with the IDE. Yeah, that sounds good. :P

Thing I Like: The intellisense is awesome. I love the way it pops up the popular items first, and knows the ideal times to materialize to offer its infinite wisdom. A big improvement over VS.NET 2003.

Thing I dislike: VC# 2005 seems to (by default) enable "code fixing". This "feature" likes to change the formatting of my code as I type it. Ie.

"Foo.BarAt(x,y);" it'll mangle into "Foo.BarAt( x, y );"

Which is just "ew" to me, since I like to be really esoteric about my code. ;) And I won't even go into the ugliness it does with my beautiful for() loops. However, this can be turned off. It took me somewhere in the realm of 5 minutes to finally find the option and get it all deactivated so it wouldn't interrupt anymore. I know the intention was to reenforce good coding habits/formatting of newer coders who are using the IDE, but man is that a pain. :)

(Ew, and I seem to need to manually insert linebreaks or else I get a huge block of ugliness. Doh.)
 

 

Copyright © Stephen "HopeDagger" Whitmore