http://www.speedhack.allegro.cc/blog/post/9658
Fire Starter
No one knows how the city of devils, Endsville, was born.
As soon as it was created, it prospered,
And then it slowly ate up the world.
You serve Cantido, god of the black flame,
And must hinder its growth by setting it afire.
Trick the fire fighters, hide from the police,
And torch the city to purge it of its devils.
But you mustn't burn everying.
If the entire city burns down, you will have no place to stay.
You will not be able to live.
There can be no final victory.
The only thing you can do is burn the city.
Your only hope is to receive the blessing of Cantido, god of black flames.
~FLCL, Gainax
Download windows binary (and source):
http://files.cellosoft.com/marcello/firestarter010.zip
Enjoy.
(Made for Speedhack 2005)
Looks really nice! But what's up with the screenshot to the right? Is that "square" some intense fire or? (I will download later and check it out in depth)
Looks good.
It plays pretty well too! The scorching sound is especially satisfying.
But what's up with the screenshot to the right?
I think that would be the "map."
I think that would be the "map."
Doh!
I can see clearly now, the rain is gone, I can see all obstacles in my way Gone are the dark clouds that had me blind It's gonna be a bright (bright), bright (bright) Sun-Shiny day It's gonna be a bright (bright), bright (bright) Sun-Shiny day
Can anyone compile mac/linux versions?
I tried it now. It's polished graphics wise and has nice music as well. As for gameplay something is still lacking, a bit more GTA feeling would be nice. Still, impresive! You got skillz man!
/ Kent Larsson AKA Napoleon Dynamite
Very impressive entry, especially considering it was started halfway through Speedhack.
The idea to actually make the game from the FLCL episode is really awesome, and it plays well enough for the time that was spent on developing it. It's my second favorite entry so far.
Linux compile: Some flaws, then it runs good:
-Had to make directories obj_debug and obj_debug/partypack
-In the "LIBS=..." line of Makefile I had to replace "-lalleg" with "`allegro-config --libs`"
-Had to change "c:\allegro\tools\dat" to simply "dat"
Then, when the program compiled, the Makefile tried to start Firestarter, but it couldn't!
I started it manually with "./firestarter_debug.exe".
The first time the game started superb and I could play, but then I looked up the keys (::)) in the readme.txt, and when I tried to restart the game, it crashed all the time. I used the debugger to see where it crashes: In MainGame.cpp, line 20: gSys->maingame->paused = false;
This is because maingame seems to be NULL.
EDIT: The game seems to run again sometimes if I wait some time, but then it crashes again.
I tried compiling libpng under OSX in order to compile this, and it flipped out. I'm not sure if I should have tried it on the source instead of building it as a lib (the docs said to do this).
Got Fire Starter to compile, but I think something is terrible wrong. See attachment.
How did you get it to compile with libpng? Tossing it into the source area instead of using it as a standalone library?
Already had libpng installed. I don't remember how/when I installed it.
Maybe using Fink, or prebuilt binaries.
About the strange colors bug, I looked in log.txt but I saw no errors.
Edit: And I hear music too.
The strange colors looks to me like the pallete is messed up and the transparency isn't being masked out at all. This might have to do with OSX's weirness in dealing with color depths (for instance: it doesn't like 16bit, but rather prefers 15bit. It's also picky about color depths in fullscreen mode as opposed to windowed mode. Some it can do, some it cannot. I've never tried anything that was in 8bit)
I got similar results as deps. The title screen worked fine, but after pressing the button I got garbled colors. Music worked fine.
The first time the game started superb and I could play, but then I looked up the keys (::)) in the readme.txt, and when I tried to restart the game, it crashed all the time. I used the debugger to see where it crashes: In MainGame.cpp, line 20:
gSys->maingame->paused = false;
This is because maingame seems to be NULL.
Curious, this should be impossible. Here's my reasoning:
1) that line is from inside my alt tab detection code:
static void switch_in() { gSys->maingame->paused = false; } static void switch_out() { gSys->maingame->paused = true; }
2) those functions are 'initialized' using the following lines, from the constructor of the MainGame class (MainGame.cpp:26):
MainGame::MainGame() { set_display_switch_callback(SWITCH_IN, switch_in); set_display_switch_callback(SWITCH_OUT, switch_out)
3) MainGame class is only constructed in one place in the entire game. (A file search finds only one call to new MainGame, and no stack-based instances of the class.) That constructor is in FireStarter::setupGame() (FireStarter.cpp:74):
maingame = new MainGame;
4) Additionally, the global pointer, gSys, points to a FireStarter class, and is initialized in FireStarter's constructor (FireStarter.cpp:18):
FireStarter *gSys; FireStarter::FireStarter() { gSys = this; game = 0; mp = 0; datafile = 0; }
5) So with all that in mind, gSys is clearly valid before any MainGame's are constructed, and gSys->maingame is set as soon as a MainGame class is constructed. So my conclusion is if somehow a switch-in/out happens in the middle of MainGame's constructor, then I guess the pointer could be invalid. That seems highly improbably, but if that is the case, moving the lines for setting the callback (MainGame's constructor):
set_display_switch_callback(SWITCH_IN, switch_in); set_display_switch_callback(SWITCH_OUT, switch_out);
To MainGame's setup() function, which should only be called after MainGame has been constructed properly (and the gSys->maingame pointer is set), should fix the problem.
--
Would 24/32bit be better? Edit FireStarter.cpp and change line 32:
virtual int getScreenBPP() { return 16; }
Thanks for your reply, Marcello! Now it runs flawless!
A cool game!
EDIT: I've noticed that when the program quits there is a segmentation fault - again at the gSys->maingame->paused place.
Tried changing getScreenBPP to 15,24 and 32 but the game still looks like the image I attached earlier. :/
michael: probably linux does weird crap with the switch in/out stuff. you can just take out the two lines that set the callback and it'll be fine... I'll have to think about a better solution to that.
deps: Fun, any clues mac users?
Looks great, very nice gfx and also polished.
Adding more to the gameplay would help, but I do understand this was started half-way through a speedhack. Impressive!
Thomas Harte reported problems with 8 bit modes in MacOS X a week or so ago. I don't have the link handy, but it's in my mailbox somewhere.
i'm loving the game-boy style of this entry. I must say that i spend more than half an hour to burn , burn , BURN ! (burn baby burn , mwwahahaha i'm the shadow warrior ! )
Looks great!, good pixelwork!, nice music too.
The only problem that I had is a very little slowdown(music stops too) every ~5 seconds, I don't know what can it be.
Very polished looking, looks like you had a lot of help (credits make it seem that way anyway)
I tried compiling libpng under OSX in order to compile this, and it flipped out. I'm not sure if I should have tried it on the source instead of building it as a lib (the docs said to do this).
Could you just convert the graphics from png to something else and use load_bitmap instead of load_png (or whatever libpng uses?)
static void switch_in() { gSys->maingame->paused = false;}static void switch_out() { gSys->maingame->paused = true;}
gSys is clearly valid before any MainGame's are constructed, and gSys->maingame is set as soon as a MainGame class is constructed. So my conclusion is if somehow a switch-in/out happens in the middle of MainGame's constructor, then I guess the pointer could be invalid. That seems highly improbably, but if that is the case, moving the lines for setting the callback (MainGame's constructor):
maingame = new MainGame;
This makes sense, because until the constructor returns the assignment to maingame doesn't happen. Switching in/out should crash the game on any platform since it is assigned an invalid or possibly NULL value... it seems that maybe Mac OS just likes to send this event as the program is starting.
Actually, it is linux that is doing this, but I've already fixed the problem by simply making it a global variable.
As for help, yep. But that's all part of making a game.
Marcello
had a lot of help
Sorry if jeasousy seems evident. -- Take it as a compliment
All in all, Nice work.
looks like you had a lot of help
Well, it was mostly Marcello and I who made the game. Travis and Maiko were both consulted on how the game should play at one point or another, but as far as actual work on the project goes, Travis made one of the two songs, and Maiko made the graphic for the title screen (where it says "press a to start"). Those were both very much appreciated, but the game could have survived without them. I don't know how much AMZ (Rodrigo) helped as I had literally nothing to do with the coding, but it's a safe bet that he was more concerned with his own entry. (his help is very much appreciated though)
The only problem that I had is a very little slowdown(music stops too) every ~5 seconds
I actually noticed this too; it seems to be due to multiple requests to start/stop the "fwoosh" sound effect at once. I suggested a workaround to Marcello but he said it wouldn't be easy to fix.
All in all, Nice work.
Thanks!
A bit offtopic, but just for the hell of it, here are a couple discarded drawings I made to pass the time while we were still deciding on what game to make (i.e. the first 36 hours of compo): urf and bucketman
On another note, my personal high score on Firestarter is 41,705.
I actually ended up not using any of AMZ's code in the speedhack version, but intend to (and have) used bits in the upcoming patch version.
As for the slowdown every 5 seconds, I have a badass computer, so I haven't noticed this, nor do I have any idea why it happens. Maybe because I update logic at 100fps? Or maybe it's an STL or garbage collection thing.
Marcello
urf and bucketman
I saw both of those screen shots on the blogs and wondered where they were! Too bad they never got made.