demo of Dungeon Crawl (WIP)

Previous topic - Next topic

BlueSteel

hi, I'm busy working on my project . A game i call "Dungeon Crawl" or DC for short.

Its been inspired by the likes on games like (just toname a few)
Sword of Fargoal
nethack
larn
ultima (1-7)
Kaiv
questron
..
..
..
(the list goes on)

please look at it and ley me know what you think of it so far.

so far tou can generate new lvls , reveal the map, walk around , and quit the game.
NOTE: nothing except for the walls do anything yet.. eg: NO you can't go up/down the stairs yet .. and NO there are no monsters yet , they are all well on the way though

ALL images and code are not to be reused by anyone.. they are copywrite ..

in Zip are the Windows and linux versions
to moce use the numeric keypad (yes you can even move diagonally)

[attachment deleted by admin]

kamakazieturtle

Looks like a good start to me. Although I couldn't figure out how to move around?

BlueSteel

#2
oops sorry numberic key pad at the moment  ( I'll also be adding in other keys .. and maybe even mouse and joystick)

Moru

Sounds great, always loved Nethack :-)

The problem with not being able to move repeatedly can be fixed if you use Gernots small routine "KeyHit", http://www.glbasic.com/forum/index.php?topic=679.0

That should fix the keyboard event problem.

BlueSteel

the problem isn't that.. its the responce time for reading a keypress when i have the limitfps set to a low value. (which i need as the game runs way to fast otherwise) I have it limited to the speed that i want the character to move at (max). the problem that has been reported is that sometimes it doesn't read the keypress (ie: its being held up by limitfps or something) NOT that the keys aren't repeating when being held down .. thats working fine.. its the responce / recognition of when a single key gets hit

Hatonastick

#5
Hey cool, I'm a big fan of Nethack, Omega, Moria/Angband, Rogue and the like.  I love the concept of Dwarf Fortress too, but it's too complicated for me.  Planning on doing my own mini-Rogue-like later on.  There's stacks of info out there on the various aspects, but it's more fun working it all out yourself.  Anyway look forward to having a go at the finished product. :)

Yes, the movement is a bit odd which isn't surprising.  I wouldn't be using LIMITFPS to handle your speed issues.  I think you'd be better off looping as per normal and using a counter/timer to limit how often the keyboard is read.  There's probably a better way to do that though than what I'm thinking.  My GLB is ultra-rusty.  The other guys will be able to help you with that if you want.

A couple of points (I like how it looks btw):


  • You might want to consider adding a line-of-sight algorithm to your map reveal.  This isn't that hard to do (depending on how complicated you will be getting with the room layout and whether some rooms are lit and some are dark) and it adds a lot to the game.  I used to use the Bresenham Line Algorithm to do mine, sort-of raytracing.  Probably better ways to do that now.

  • Since you are going the graphic route add a couple of frames of animation here and there as it will add a lot without detracting from the retro feel.  Might even just update/animate them as keys are pushed giving it that old Rogue-like feel still.
Mat. 5: 14 - 16

Android: Toshiba Thrive Tablet (3.2), Samsung Galaxy Tab 2 (4.1.2).
Netbook: Samsung N150+ Netbook (Win 7 32-bit + Ubuntu 11.10).
Desktop: Intel i5 Desktop with NVIDIA GeForce GTX 460 (Win 8.1 64-bit).

Moru

Limit FPS is not realy an option for controlling the speed of the game, you need to build in a timer and check if a certain number of seconds/milliseconds passed since last move. Otherwise you will miss key events and other similar things.
GETTIMERALL() is the function you need for that. If your game uses up too much processortime not doing anything, put in a SLEEP 2 or similar in the wait loop.

And yes, dwarf fortress looks realy good but I never understood much :-)

BlueSteel

#7
looking into timers .. i'll need several in the game anyway ;).
there is going to be a light spell which will be able to do that .. the more light spels you have in operstion the more you'll have the opportunity to see.
spells like regerate , light, will also be limited by time. hence the need for me to look into using timers..
I'll think about adding in animation (although i'm not a fan of needless animation)

IF you care to look at the .png file for the graphics you'll see whats been designed so far. quite simple and characteristic ;)

its basicly going to be like the Original sword of fargoal.. with elements drawn in from other games like this.. kind of like a tribute to them all..

the first release will be quite simplistic and will grow as time permits into a full on stat based game with cities/shops and full inventory..

The main thing about this game is unlike games like "eshilon" (Great game BTW) where everything is set.. and once you've played theres no need to play again.. EVERYTHING in this game will be Random and dynamic to each time you run it. .. including scrolls, potions , dungeon levels , end goals , city/shop layout (down the track)

this isn't a new project of mine i've been doing it now off and on for many years.. always not getting very far. but all the ground work, structures , types etc.. are all there .. I started this program in LibertyBasic , then portewd it over to Blitz2d.(which still works BTW on win7.. both executable and programming language) and now GLBasic..
BTW the converted program compiled to about 200-300k less with GLBasic than it did in Blitz2d. Same format structure types etc.. (i simply changed the commands to the syntax of GLBasic..)

bigsofty

Looks good, Roguelikes are amongst my favourite games!  :good:
Cheers,

Ian.

"It is practically impossible to teach good programming style to students that have had prior exposure to BASIC.  As potential programmers, they are mentally mutilated beyond hope of regeneration."
(E. W. Dijkstra)

Slydog

Here's a simple timer function that may help you:

Code (glbasic) Select
CONSTANT TIMER_UPDATE_PLAYER = 100 // Update the player every 100ms
LOCAL t_update_player% = TIMER_UPDATE_PLAYER // Initialize player timer

IF Timer(t_update_player, TIMER_UPDATE_PLAYER) = TRUE THEN
// Update player code
ENDIF

FUNCTION Timer%: BYREF time%, timer_length%
DEC time, GETTIMER()
IF time <= 0
time = timer_length // Reset timer
//time = timer_length-time // Reset timer  (Optional to above to prevent timer drifting)
RETURN TRUE    // Timer has ended
ELSE
RETURN FALSE      // Timer still executing
ENDIF
ENDFUNCTION


It automatically resets your timer variable too, one less thing to handle manually.
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

Hark0

Hi!

I downloaded and tried your game... good job, continue working on it please, don't abandone  :P!!!

Currently I'm are working on a roguelike gameplay in my project too  ;) (see my blog)

For my gameplay I decide NOT use keys, only mouse/touch control. (you can see video post on blog)


and... YES!!! I'm another fanatic of roguelike games!!!  ;)


Greetings, Hark0
http://litiopixel.blogspot.com
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica Development Indie Videogames · Pixel-Art · Retrocomputing · Electronic