{"name":"598985","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/0\/e0a1420c36476fdcd1130c692c65d8ec.png","w":629,"h":479,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/0\/e0a1420c36476fdcd1130c692c65d8ec"}
{"name":"598984","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/a\/8a6d03e81944522228f9784a41c18e4c.png","w":639,"h":481,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/a\/8a6d03e81944522228f9784a41c18e4c"}
{"name":"599079","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/0\/b0b12fa487049e87cbb3f1c22cb47a8c.png","w":640,"h":479,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/0\/b0b12fa487049e87cbb3f1c22cb47a8c"}
Secret of Fantasy The Calcium Crystals is a role playing game that revolves around buying milk.
Binary: http://www.allegro.cc/files/attachment/599104 version 7 (past deadline)
Source: http://www.allegro.cc/files/attachment/599122 version 7 (past deadline) (should compile in Linux with CMake)
Use arrow keys to move around. Use left ALT for actions, left CONTROL for attacks, SPACE for usable items and I to open the inventory.
Caution: pressing ESCAPE exits the game without prompting!
Note: the game requires Microsoft Visual C++ 2008 Redistributable Package (x86) to run!
Bugs
Doors suddenly not working - FIXED
Crash when dying - FIXED
No continue - FIXED
Player get stuck in walls when taking damage - Might be fixed, no promises
Crash in one of the dungeons - FIXED
Windows line feeds in txt-files - FIXED
GCC compilation issues - FIXED
Missing CMakeLists.txt file - FIXED
I just finished this and I must say I almost gave up in my quest for the calcium crystals. The game itself didn't motivate me much. I just wanted to get it done with and check out what was at the end.
I understand you guys love RPGs, but I don't think you have enough time to make a truly enjoyable RPG in a compo like this. Maybe it's just me...
This game was actually nice though. Pretty much everything worked as it should. I have only two things to point out as far as gameplay goes:
1. It sucks when stuff goes off the limits and you can't get it, i.e. a heart getting stuck inside a wall. That irritates me a lot.
2. For stupid people like me, it'd be cool to know I had to press "alt" to start the game, without actually having to read the readme... It's much more intuitive to press "enter".
Congrats, it's a nice and polished game.
Nice game. Great music.
I haven't finished it, but I will.
I don't think you have enough time to make a truly enjoyable RPG in a compo like this
You are probably right. We wanted a real challenge this year so we decided to try to make a RPG. Personally I'm quite pleased with the result, but the hunt for crystals tend to get boring. We should cut down the number of crystals to three or something so players don't quit without battling Lord Vapor (and hopefully see the end).
I don't think it's a matter of cutting down on the number of crystals. Once you know that "hard work pays off", the last two crystals are pretty much a given. It's just that before you realize this you're already running desperate with the price of the damn thing. I don't wanna give it away, but people need to know there's a faithful RPG element in this game that makes all the difference. (and I think that's remarkable) Be a good boy to mother and try to be good to others too.
I'm thinking about making a director's cut of the game. We had a lot of ideas we never had time to implement that should make the game more fun to play. To be honest, we never actually played the game through until after the deadline... But before I do a director's cut I'm looking forward to play all the other entries. The creativity Speedhack and TINS bring to this forum is amazing!
I liked the game very much. However it crashes sometimes when i die (apparently, when I die in a cave level previous to the deepest reached or if I die in the map screen). And this is really very irritating and frustrating.
I also noticed that you've used some save state internal feature. There is someway to load a previous gameplay?
A the moment there is no way to load a previous game. All the code to load a previous game is in place as you have pointed out, it's just a matter of putting an option in the start menu, but we were out of time. I'll fix it in a future update.
The crashes sound very annoying. When you die we try to load the previously saved game state, my guess is that there is something wrong with that state. Are you running the game under Windows, or do you use Wine or something fishy like that? I can look into our save function and look for any errors. The game should NOT crash when you die... My apologies.
Yet another pretty impressive Team Darkbits game. 
IMO, this does an excellent job at employing a team in a SpeedHack game - by having people working for 72 hours on art and levels, you can actually dream of making a playable RPG game.
Most of the game is pretty well-made, and it has a very strong nostalgic flavour. If this was SH05, it could have taken the "Make it a Classic" award. 
There are its share of problems (the ones that codnik pointed out, plus the slooow movement that bores me to tears and lack of usable savestate), but it's overall a very good entry.
I'll try to beat it once you release a binary with save/load hacked in, even if it's just F1/F2, I don't care.
Nice graphics and music (although a lot was made beforehand?). I got the magic gun and returned to the previous room (with the brownish bats) and I got pushed inside the wall from getting damaged. That was the end of Ted.
Looks great. Another game from SH09 that I'm excited to try.
The game should NOT crash when you die...
Næssén:
I am using windows XP in an (somewhat old) Aspire 3000 notebook.
The crash happens sometimes, it's somewhat rare. But when this occurs I will need to redo it all again. I played your game 4 times, but never reached the final tower (the best time I could get 3 calcium crystals, without buying one). I die sometimes in the game and starts the cave where I died again, no problem here. But eventually if I got some bad luck, that bug kills me definitively.
Victor, if you quit the game on a crash recently could you perhaps upload the files data/gamestate.sav and data/inventory.txt?
Short and sweet.
I played the game through without getting bored, although I wonder if I would have if I haden't found "you know what" that gives me huge amounts of money.
Well done.
When it crashed, it said that was the line 285 of some file, saying something about save/load inventory. I make a screenshot of that, but I was dumb enough to make a Ctrl+c of other thing before pasting the screenshot in paint.
The files are attached.
I died inside the central cave which has the entrance blocked by some stones just after the middle bridge (not sure if I was in the second or third level). I was in the middle of a crowd of bats. There were at least 3 bats coliding with me and a lot more very near.
EDIT: *** Spoiler deleted ***
I've fixed the bug now thanks to your save files. I've also added a continue option and tweaked some of the levels sizes (to make it easier). Victor, if you want to continue playing your game just replace the exe file and change the name of your inventory.txt file to inventory.sav.
As I tweaked the level sizes, and all levels are generated randomly, things might get weird if you simply add your save files to the updated release. Many thanks Victor for pointing out the bug!
PFFFF Victor! Way to spoil the fun! There are other people still playing this.
PFFFF Victor! Way to spoil the fun! There are other people still playing this.
Sorry. I deleted the spoiler.
that's a nice little engine. I like the animation of the coins and hearts as they bounce out of enemies.
Just finished the game, very nice entry - probably my favourite.
But the walking speed kiiiiiiiills me... 
Anyway, what's with heroic mode? I don't quite get what it does?
: "We don't go down there anymore..."
Okay, I've got three of the five crystals. When I go to the lowest dungeon, I can walk through one door, but on the second, I get this:
An STD exception occured: "bad allocation".
Hopefully this can be fixed without me having to start over...?
By the way, I'm totally digging it...
An STD exception occured: "bad allocation"
Which version of the game are you running Onewing? Version 5?
Edit: Found the bug. One of the dungeon generator files had an invalid character. Onewing, you can just copy your sav-files in the data directory to the new release's data directory and continue playing.
Anyway, what's with heroic mode? I don't quite get what it does?
In heroic mode dungeons get a random seed when you start. Also enemies has twice the amount of HP and when you die you get game over, instead of returning to the map.
Nice graphics and music (although a lot was made beforehand?).
All of the music except the menu music was made before the competition. The graphics however was made during the competition.
This game looks really good.
I'm excited to try it.
Shame it's Windows only...
Shame it's Windows only...
It works just fine with Wine, if you have Linux that is...
It works just fine with Wine, if you have Linux that is...
I do, but I'm not sure if Wine is installed, let alone correctly...
Wine just feels...dirty to me.
I just spent a bunch of time trying to get Secret of Fantasy to compile in Linux, but a bad sed command resulted in overwriting all the source with empty files...
I'll have to start again and this time maybe I'll create a temporary Subversion repository to hold onto my progress.
Is there anything in the source that would prevent it from running in Linux (or would make porting it more than a couple of hours work)?
Is there anything in the source that would prevent it
There are a couple of things you have to do, check os.hpp header and add a define for the data prefix (in the file or by using a gcc -D flag), check includes as we were lazy and didn't use full paths at some places, convert all dungeon and room files to use Unix line feeds. You should also really use the latest source as a couple of bugs have been fixed. I've updated the source package with the latest source (it now also includes Guichan and Dumb).
Unfortunately I don't have Linux installed at the moment, if I did I would make a Linux package.
You should probably change line 33 in game.cpp to use windowed mode when trying to compile and run the game.
Fun all the way around. Great entry!:D
Onewing, you can just copy your sav-files in the data directory to the new release's data directory and continue playing.
Sweet, thanks!
Finished the game, definitely enjoyed it. Although, I think the music, which was created beforehand, had a lot to do with it. There's definitely potential in the gameplay with some different monster AI. I think you should spend just a little more time on it and it could vastly improve the fun value. None the less, great speedhack entry. Congrats on your team's success.
This is my favourite speedhack 2009 entry that I had tested so far (tested about half of them). Great job. I bet that you will probably be the winners or at least the second place.
Fuck it. I'm booting Windows. And I hope you're happy. 
** EDIT **
Very nice entry. You should implement a skip feature on the dialog though. As a habit from Final Fantasy, I talk to each person multiple times to see if they have other things to say and it's nice when you know the dialog is a repeat to be able to skip past it rather than wait. The ESC feature bit me when trying to figure out how to skip the repeat dialog. 
Also, the redundancy is very clever. I like it.
** EDIT **
Motherfucker!
Before I play some more I should go and implement an exit prompt.
Just pull the ESC key off your keyboard.
Beaten.
Great game.
I like it a lot.
I was interputed once, but only for a minute.
I'm happy to see people enjoying the game!
Motherer! Before I play some more I should go and implement an exit prompt.
We totally forgot exiting this year and added the escape button in the last minute of the competition. If I make an update of the game, exiting is on the TODO list
the TODO list 
Joystick support?

Joystick support?
Nah, I don't own a joystick
I've hacked the game to double player speed (which had the side-effect of doubling enemy speed as well...) and I found the game to be far more fun and enjoyable that way. Makes me wonder why it wasn't that way out of the box.
In case anyone wants to patch it, change lines 20-23 in normalactor.cpp like this:
This also has the (IMO) nice side effect of making the game a bit more challenging by making monsters faster.
[EDIT] BTW, this is the second time I find myself hacking a Darkbits game... I also felt compelled to hack Dr. Madness so I could hold down the mouse button and not develop RSI while playing the game.
I wouldn't really call that a "hack". The source was freely available and you just tweaked it. 
I found in many "rooms" the enemies were decently challenging. At least, it took me a good few retries in the beginning to do well enough to survive to the end (albeit, my inventory was plentiful when I did...). The final boss was a little disappointing.
FYI, the <code> tag supports a name attribute (if you're going to do the line number you might as well do the file as well).
Well,
Hack has several related meanings in the technology and computer science fields. It may refer to a clever or quick fix to a computer program problem, or to what may be perceived to be a clumsy or inelegant (but usually relatively quick) solution to a problem.

And thanks for the tip, edited the post!
P.S. I thought the game was really easy, never died on it... and I never figured what the energy drinks did until the battle with Vapor.
...and I never figured what the energy drinks did until the battle with Vapor.
Now that you mention it I never did use those...
The time a hit would freeze Vapor was plenty to hit him again. I beat him in a matter of seconds, IIRC.
Took me a few seconds as well.
I tried to compile this for Linux, but I got stuck with too many bugs. Something with line endings in text files - anyway, didn't get it to run.
Makes me wonder why it wasn't that way out of the box.
I'm not sure. The walk speed never bothered us, but I can understand if people find it annoying. Isn't it difficult to enter doors when walking faster?
BTW, this is the second time I find myself hacking a Darkbits game...
I remember your last hack. It's always fun when people modify our games as it hopefully means they are worth playing
I beat him in a matter of seconds
Lord Vapor turned out a bit lame in the end. It's really difficult to balance a game in Speedhack, especially considering we never played the game through until after the deadline. I made Vapor able to teleport to counter the fact that he could easily be killed by cornering him. To make Vapor more fun I think the freeze time after a hit should be lowered, his HP should be increased and he should teleport more frequently.
I tried to compile this for Linux, but I got stuck with too many bugs. Something with line endings in text files - anyway, didn't get it to run.
That's not bugs, it's called Windows line feeds. You have to replace all the Windows line feeds in our txt files with Unix line feeds. The game works fine with Wine by the way.
That's not bugs, it's called Windows line feeds.
Or do what I've done in the past, write the file loader to support all three line ending formats.
That's not bugs, it's called Windows line feeds. You have to replace all the Windows line feeds in our txt files with Unix line feeds. The game works fine with Wine by the way.
Ok, some files had mixed DOS and UNIX line feeds (mostly CRLF, but some lines had LF only). I converted those text files by hand and now it runs. Thank you.
Or do what I've done in the past, write the file loader to support all three line ending formats.
I should remember that for the next competition.
I finally get to try this game. It's a very cool game, with nice graphics, and it's an RPG!
And I really like the music too. I'll try my best to finish the game.
I converted those text files by hand and now it runs.
Are you saying you got Secret Of Fantasy to compile and run in Linux!? Do please post the modified source!
<cough>dos2unix</cough> 
Or do what I've done in the past, write the file loader to support all three line ending formats.
I've always just used 'nix style line endings and it's always worked fine for me on Windows. I guess pre-OSX macs wouldn't like it though.
Ok, some files had mixed DOS and UNIX line feeds (mostly CRLF, but some lines had LF only). I converted those text files by hand and now it runs. Thank you.
IIRC the Allegro install routines have dtou and utod ("dos to unix" and "unix to dos"), also there's source available on the web for lots of variations.
<cough>dos2unix</cough>
IIRC the Allegro install routines have dtou and utod ("dos to unix" and "unix to dos"), also there's source available on the web for lots of variations.
Thanks for the hints - dos2unix would have worked.
Are you saying you got Secret Of Fantasy to compile and run in Linux!? Do please post the modified source!
Yes, got it to compile and run. Here's the modified source -- I included a Code::Blocks project and a CMake file, so compiling should be easy.
The dtou and utod were DJGPP programs. I'm not sure if anything exists in Windows land outside of that.
I beat him in a matter of seconds, IIRC.
Took me a few seconds as well.
I've made an update where I've tweaked Vapor to be more challenging. I've also changed some of the dungeon's sizes to be more challenging.
I included a Code::Blocks project and a CMake file, so compiling should be easy.
I've updated our source package with your CMake file and I've also converted all text files to use Unix line feeds. Thanks for the CMake file Simon!
Yes, got it to compile and run. Here's the modified source -- I included a Code::Blocks project and a CMake file, so compiling should be easy.
[bamccaig@rufus build]$ cmake .. ... [bamccaig@rufus build]$ make ... [ 98%] Building C object src/CMakeFiles/secret_of_fantasy.dir/dumb/it/itorder.c.o [ 99%] Building C object src/CMakeFiles/secret_of_fantasy.dir/dumb/it/loadmod.c.o [100%] Building C object src/CMakeFiles/secret_of_fantasy.dir/dumb/it/itmisc.c.o Linking CXX executable ../secret_of_fantasy /usr/lib/gcc/x86_64-redhat-linux/4.3.0/../../../../lib64/liballeg-4.2.2.so: undefined reference to `_i_cx_r' /usr/lib/gcc/x86_64-redhat-linux/4.3.0/../../../../lib64/liballeg-4.2.2.so: undefined reference to `_i_is_cpuid_supported' /usr/lib/gcc/x86_64-redhat-linux/4.3.0/../../../../lib64/liballeg-4.2.2.so: undefined reference to `_i_get_cpuid_info' /usr/lib/gcc/x86_64-redhat-linux/4.3.0/../../../../lib64/liballeg-4.2.2.so: undefined reference to `_i_is_486' /usr/lib/gcc/x86_64-redhat-linux/4.3.0/../../../../lib64/liballeg-4.2.2.so: undefined reference to `_i_cx_w' /usr/lib/gcc/x86_64-redhat-linux/4.3.0/../../../../lib64/liballeg-4.2.2.so: undefined reference to `_i_is_cyrix' /usr/lib/gcc/x86_64-redhat-linux/4.3.0/../../../../lib64/liballeg-4.2.2.so: undefined reference to `_i_is_fpu' collect2: ld returned 1 exit status make[2]: *** [secret_of_fantasy] Error 1 make[1]: *** [src/CMakeFiles/secret_of_fantasy.dir/all] Error 2 make: *** [all] Error 2
What am I missing?
On Linux you are supposed to use allegro-config instead of specifying the library directly.
Specifically, alleg_unsharable library is not linked.
I'm completely unfamiliar with CMake so I have no idea how to look into that...
A small addition in the CMakeLists.txt located in the src subfolder fixed it for me.
LIST(APPEND Src ${SrcGame} ${SrcGuichan} ${SrcDumb}) execute_process(COMMAND allegro-config --libs OUTPUT_VARIABLE LIBS OUTPUT_STRIP_TRAILING_WHITESPACE) link_libraries(${LIBS}) add_executable(secret_of_fantasy ${Src}) set(EXECUTABLE_OUTPUT_PATH ..)
LIST(APPEND Src ${SrcGame} ${SrcGuichan} ${SrcDumb})
Where do SrcGame, SrcGuichan, and SrcDumb come from?
I'm guessing I need to define them somehow, but as I said I'm completely unfamiliar with CMake.
Sorry, what I posted was a handmade diff, heh. Just look at the end of the CMakeLists.txt in question and you'll see what I mean (look at its end).
The modified CMakeLists.txt is attached for your convenience.
[bamccaig@rufus build]$ cmake ..
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/lib64/ccache/gcc
-- Check for working C compiler: /usr/lib64/ccache/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/lib64/ccache/c++
-- Check for working CXX compiler: /usr/lib64/ccache/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at CMakeLists.txt:27 (add_executable):
add_executable called with incorrect number of arguments
CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as
cmake_minimum_required(VERSION 2.6)
should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring incomplete, errors occurred!
[bamccaig@rufus build]$ cmake -Wno-dev ..
CMake Error at CMakeLists.txt:27 (add_executable):
add_executable called with incorrect number of arguments
-- Configuring incomplete, errors occurred!
[bamccaig@rufus build]$
I'm not very familiar with CMake either, so I didn't know about the execute_process command. Thanks to SiegeLord for pointing that out.
bamccaig, you have two CMakeLists.txt files, one in the main directory, and one in the src/ subdirectory. Maybe you replaced the wrong one.
I've updated our source package with your CMake file and I've also converted all text files to use Unix line feeds. Thanks for the CMake file Simon!
Sorry for not telling you right away, as I stated above there are two CMakeLists.txt files, you only included one of them. Also I had to make a few changes to the source code, or it wouldn't compile with GCC.
The following things turned out to be problems:
- MSVC supports class declarations inside functions, GCC doesn't
- MSVC provides _strupr, GCC/ANSI C doesn't
- MSVC tolerates declarations like vector<vector<blah>>, GCC doesn't (>> is an operator)
- MSVC includes modules like <algorithm>, <string> and <vector> by default, GCC doesn't
- MSVC allows additional qualifiers inside class declarations (like int Blah::x inside class Blah{ }), GCC doesn't
On the other hand, there were zero problems concering case sensitive path names on UNIX, which made porting a lot easier than usual.
I'm not very familiar with CMake either, so I didn't know about the execute_process command. Thanks to SiegeLord for pointing that out.
bamccaig, you have two CMakeLists.txt files, one in the main directory, and one in the src/ subdirectory. Maybe you replaced the wrong one.
My bad.
Thanks both of you.
I've only briefly played it ... but it was well done.
In terms of rating it as a SpeedHack game, I have a hard time giving it a good score if there was a lot of code re-use and not much attention paid to the rules. But I haven't played it enough to judge it in terms of the rules, nor have I checked to see how much recycled material was included.
So if I get a chance to play it, I'll give you a better review.
you have two CMakeLists.txt files, one in the main directory, and one in the src/ subdirectory.
Ah, I see. I should have known as I'm familiar with CMake, guess I was tired or something. I should really boot up my Linux machine and make a decent source package.
if there was a lot of code re-use and not much attention paid to the rules
There was not a lot of code re-use in this game. In all our Speedhack and TINS entries the engines have always been rewritten from scratch, it's not like we have a finished engine laying around that we use in Speedhack and TINS (as a lot of people seem to believe). Of course we reuse some code like utility code - for handling strings, files and such - and some Guichan widgets - like the dialogue widget. Sometimes we are lucky (perhaps experience is a better term), adding a bomb in this games was very easy as I have written two other games that included a similar bomb (just as you have written a lot of Tetris games). As far as I understand, code reuse is a part of the competition and not something that should make a game less competitive as long as there is a code reuse at a reasonable level. A games code structure is usually very similar, having written a couple of games you get pretty fast at structuring your engine.
The rule we didn't really pay much attention to was the "Fantastically Mundane" rule (although the game is about buying milk, the implementation was quite lame...), all other rules are present. Read our readme file.
We always take these competitions quite seriously and we usually work our asses of during the whole competition. I think we enjoy Speedhack and TINS not so much for the sake of competing, but for having a good excuse for family and friends to sit infront of our computers for 72 hours making silly games
Fantastic game. I was impressed by both the ambition and the execution of this project. I always looked at RPG's as insane amounts of work, that Team Darkbits put one together for a Speedhack and made it good just boggels the mind. I salute you.
I've updated the source package with the missing CMakeLists.txt file and with the changes that Simon Parzer did to the code. I managed to get it up and running with my Ubuntu installation (no sound though... which bothers me...). Again, thank you very much Simon!
I always looked at RPG's as insane amounts of work
We did too! I've never done an RPG before but we just couldn't resist the challenge. Most of the game content, all the dungeons, are generated using a custom rand function. Thanks to the generated content we could focus on adding cut scenes, enemies, items and design a couple of custom rooms (like the map, the cut scene rooms and the grocery store) making the game look and feel like an RPG with a lot of content for a Speedhack game. As I've said before, we never got around to play the game through until after the deadline, we relied on the generated content to work (and it did, but we forgot to add a dungeon in the Speedhack version so the game shouldn't be beatable, but thanks to a clever mistake by me letting the player begin with 6 calcium crystal in the inventory there really was no need to look for crystals in the Speedhack version...).