Thread: Developing a RL
View Single Post
Old January 25, 2009, 15:24   #1
pndrev
Scout
 
Join Date: Sep 2008
Location: Fürth, Germany
Age: 40
Posts: 38
pndrev is on a distinguished road
Lightbulb Developing a RL

Ok, I suppose technically it would fit better on r.g.a.*, but I don't feel comfortable with such a large audience yet.

All the threads here about variant development have me inspired to start work on my own roguelike!
Nothing too detailed is fixed yet, as I want the basic engine up and running before really presenting anything.


I'm roughly following the 15 steps from the roguebasin wiki, as a guide for milestones. So far I got a scrolling map, the base classes for actors, items, terrain and effects (already used for testing purposes).

Time is implemented through firing heartbeat events in the main loop, received by all objects on the map. Actions cost energy and receiving a heartbeat restores energy or calls the action routines. The only difference so far between PC and NPCs is that if a PC has its 'currently active' flag set, the heartbeat stops until the PC is no longer active (energy below the action threshold) - effectively waiting for keyboard input.

The message system is event-driven as well, which is especially nice for debugging, as I can just listen to all messages directly in the game window.

Display is traditional ASCII (tiles shouldn't be a problem, as the representation is the responsibility of the object, the display class just draws what it is told), although I had to implement my own double-buffering to avoid flicker.

Not too bad for a couple of evenings, although I expect that progress will get slower once I get to data files, inventory management and effects. Not to mention map generation beyond the current completely random fill. Truth be told, I dread map generation. I'm tending towards a tree based approach - dividing the map into parts, dividing the parts again... then placing a room in each part and traversing the tree, connecting the parts. So far, that is the only approach that I could wrap my head around when it comes to thinking about the actual implementation.


But next up is the menu system - I'm still not decided if I should display it in a separate area or in the message panel. Right now, I just want the basic 'Really quit? y/n' message to work. Any further menus should then be a matter of inheritance and responding to inputs.

Wish me luck.
pndrev is offline   Reply With Quote