Here's a progress thread for the LPC game I'm working on. The game itself doesn't have a name yet, but the engine is called Rempel (a random word) and that may end up being part of the final name too.
I started creating the engine about 3 weeks before the coding competition began, and it started life as a stock Quake 1 engine. It seemed like that would be an interesting base to make a fast pace shoot'em'up type game, adding a 2D tile-based world and renderer on top of it. I also thought it'd be cool to go old-school and use software rendering, as all the FOSS 2D engines out there are OpenGL based.
The game I'm making will be something similar to Gauntlet, perhaps with a bit less monster bashing and a bit more exploring and finding items and treasure. It would've been nice to have quiet areas with various NPCs to chat with, buy stuff etc, but I simply won't have time to do that. The levels are going to be randomly generated, and that is something I will start working on tomorrow.
Today I worked on detecting that a player is standing on water and making a drowning animation, screenshot:
Progress report #2:
Most of the time since the last report has been spent on the engine, such as:
- supporting alpha channel of images and sprites
- the logic for sound spatialization
- getting gamma working
- improving how characters move
- changed the basic font and able to draw it in different colors
- getting the console to play nicely with the menus
- joystick support
- and today I spent a lot of time improving the way tile data is transmitted from the server to the client.
At least the engine is feeling more polished now, and I have a better idea on where the actual game is going -- for example I originally planned for it to be an endless dungeon-crawl kind of game, but now I'm planning to have a fixed number of worlds (each with their own name and style) and an actual goal to complete.
Today I worked on the logic for taking a vague map, where each square holds a material like GRASS or WATER, and picking the closest-fitting tile. See screenshot below.
Now I need to make it handle the DIRT material too, and then I will muck around with code to create simple buildings that the player can enter and (eventually) unlock with the right key.
shot05.png 109.1 Kb [48 download(s)]
Is there a repo on github or bitbucket somewhere from where we can download and play this ?
It's in a Bazaar repository (with a bunch of other projects) here: http://sf.net/projects/awwports
(I probably should've made a new SF project for this -- though I wasn't sure at the time if I'd keep working on it).
BTW, I just made an exit building
shot07.png 100.9 Kb [50 download(s)]
how do I clone it ? I saw this :-
bzr://awwports.bzr.sourceforge.net/bzrroot/awwports
Is this correct? While I'm familiar with mercurial,git and svn, bzr is not known to me. How do I clone the repo and do the updates ?
Update :- got it.
bzr co bzr://awwports.bzr.sourceforge.net/bzrroot/awwports
I do see a makefile in rempel but no README nor any instructions how to compile in the rempel directory.
I will add a README shortly -- but once you have the needed libraries installed (SDL and ogg/vorbis) then just "make" to build the binary and ./rempel to run it.
Been working on ability to use the mountain tileset, obligatory screenshot below.
Now if I can some rivers and waterfalls on there (and some bridges to cross them), I'll be pleased as punch.
shot08.png 61.8 Kb [39 download(s)]
hmm.... thanx for sharing. Btw is there anyway to disable sound? It craps out saying :-
~/games/awwports/rempel$ ./rempel
Console initialized.
UDP Initialized
Exe: 19:53:00 Jul 17 2012
64.0 megabyte heap
Joy_Init: 0 joysticks found.
execing rempel.rc
execing default.cfg
execing config.cfg
FindFile: can't find autoexec.cfg
couldn't exec autoexec.cfg
fullscreen = 0.0
VIDEO BPP: 32
VIDEO MASKS: R=00ff0000 G=0000ff00 B=000000ff
Sound Initialization
Sound Info: 44100 Hz, 16 bits, 2 channels, 256 frags
======== Rempel Initialized =========
VERSION 1.09 SERVER
__________________________________________________________
Rempel'Sasu
precache image 1 : 'char/mage.tga' 64x64
precache image 2 : 'char/mage_sword.tga' 128x128
precache image 3 : 'char/monk.tga' 64x64
precache image 4 : 'char/ranger.tga' 64x64
precache image 5 : 'char/soldier.tga' 64x64
precache image 6 : 'char/soldier_sword.tga' 192x192
precache image 7 : 'char/archer.tga' 64x64
precache image 8 : 'char/fbi_guy.tga' 64x64
precache image 9 : 'effect/bolt3.tga' 32x32
precache image 10 : 'obj/grave.tga' 32x32
precache image 11 : 'back/dirt.tga' 32x32
precache image 12 : 'back/mountains.tga' 32x32
precache image 13 : 'back/grass.tga' 32x32
precache image 14 : 'back/watergrass.tga' 32x32
precache image 15 : 'back/water.tga' 32x32
precache image 16 : 'back/castle.tga' 32x32
precache image 17 : 'back/house1.tga' 32x32
precache image 18 : 'obj/bridge.tga' 32x32
precache image 19 : 'obj/waterfall.tga' 32x32
precache image 20 : 'obj/tele_pad.tga' 64x32
FindFile: can't find sound/char/female_death.wav
Missing sound file: sound/char/female_death.wav
Error: S_CacheSound: failed to load: sound/char/female_death.wav
I use any character and it dies giving the above error of the missing sound file.
I thought that it might be due to the local repo being not updated but it's not so.
~/games/awwports$ bzr up
Tree is up to date at revision 2773 of branch bzr://awwports.bzr.sourceforge.net/bzrroot/awwports
Looking forward to response.
Looks like the sound was initialized correctly, since it shows the frequency and other info.
Do you get any error message, e.g. Segmentation fault or "caught signal 11" ?
Also, do you have a 64-bit machine? It is quite possible that this codebase won't work on 64 bit cpus without some fixes (perhaps major fixes, I dunno). Unfortunately I don't have access to a 64-bit machine to do testing on.
no segfault nothing and yes it's a 64-bit machine. Also is there a way you can disable sound. Sound has been giving me problems on this system (a software/kernel issue rather than an hardware issue).
Even if you can update the rempel so I can do something like
./rempel --disable-audio or something like that at least I would know it's not the sound issue which is doing whatever.
There is a -nosound option, but I just tested it and it didn't work, so I have fixed that now. If you "bzr pull" the latest code, do a "make veryclean" followed by "make", hopefully it might actually run for you :)
If you want to try debugging it, you can install the "gdb" package and run it with this command: gdb ./rempel
Then when rempel crashes, gdb will catch the crash and you can enter the "bt" command to show a backtrace -- posting that would be very helpful for me to try and diagnose the problem. If rempel just seems to hang, you can click in the terminal and press CTRL-C and gdb should stop the program running, and the same "bt" command will show where it was stopped.
(BTW do not run gdb when fullscreen mode has been enabled, or when it crashes you won't be able to get out of fullscreen mode to do anything)
No crashes so far so that's also good. I am guessing it's gonna take time to understand what the different characters mean and how are they supposed to act. For e.g. my FBI guy doesn't even have a gun so how he can fight ? But guess this is what is gonna be in the days to come.
No crashes is good :)
Shame about the sound though.
All the characters can shoot -- press the CTRL key.
Yeah gameplay is still mostly absent, I am working on the inventory items at the moment, and soon I will work on the monsters.
Quick progress report....
I have been working on the player characters and the ability to use the items that they have in their inventory (half the items are directly usable, and the other items are passive, mainly armor).
I'm fairly glad that all the usable items are working now (except wand beams don't hurt monsters yet). I was planning to have bombs that you could throw and they'd bounce off walls and explode, however I doubt I will have time to implement them (sadly).
lol, was able to kill my monster using CTRL. Got the following error on the game
missing entity tile 5:6 in mon/ghost.tga
and it goes on and on but guess that will work something out in the coming days.
I have been working on the dungeon generation code, and really stumbled when trying to devise the algorithm for adding locked doors and placing the keys somewhere else in the level. The algorithm I had come up had the serious problem where a player could unlock a door and then not find any keys to be able to continue -- so that was frustrating, though I think it is working properly now.
The following screenshot shows the current state of the dungeon levels, they are still very primitive, but something is better than nothing, right? :-) Tomorrow I need to add the exit door, and get locked doors working.
shot014.png 35.3 Kb [11 download(s)]
Please add the compiling instructions to the README in the rempel directory. This way I don't have to come this thread everytime to know the info. for compiling (which you have already shared.)
Btw I was able to locate the door locked but was not able to know how to unlock it. I was not able to find the key :( .
You must have got the revision which only had the locked doors and no keys, the keys are there now.
@andrewj , I have :-
revno: 2936
committer: Andrew Apted <aapted@alfresco>
branch nick: aww
timestamp: Sun 2012-07-22 12:01:48 +1000
message:
Rempel | dungeon: spawn the locked doors.
I am going to update it and see if there is anything newer and if I can see the keys anywhere.
Update: I updated it.Now at this :-
revno: 2973
committer: Andrew Apted <aapted@alfresco>
branch nick: aww
timestamp: Sun 2012-07-22 23:46:39 +1000
message:
Rempel | dungeon: enable the CUP logic only for a single level.
------------------------------------------------------------
I am slightly confused though. For compiling you have given this :-
Now many of the games I play have two instructions
a. Make clean
b. Make
I got this after doing make clean all, didn't know what to make of this :-
'make: warning: Clock skew detected. Your build may be incomplete.'
No idea what gives.
The 'make' program lets you specify more than one thing to do, so "make clean all" is the same as "make clean" followed by "make all".
I don't know either what that "clock skew" message means, I don't think I've ever seen that before, and there is nothing about it in the 'make' documentation. The game still runs though?
P.S. I have added some code which may fix the sound -- please try running it with sound and see if it works for you.
P.P.S. the dungeon level with the keys is map 3 -- the README.txt has some information on the cheat commands, including how to start the game at a particular level.
Who ya gonna call? GHOST BUSTERS
This shot also shows multiplayer, two separate clients connected to a server via the networking system. All three were running on the same computer, but it should work fine on a LAN -- dunno how it will work over the internet though. I suspected the large number of enemies on-screen at the same time might cause problem,s but so far it is working OK.
I probably won't have time to have proper menus for setting up LAN games, I really gotta concentrate now on making more monsters and placing items on levels.
Good luck to everybody entering the LPC competition!
shot015.png 62.4 Kb [138 download(s)]