Creating an oldschool game with new engine

Discuss your creative projects: game development, writing, film making or any thing else, fantasy related or otherwise! Talk about art you like, display your own artwork or stories, or offer help and insight.
Forum rules
Please read the Forum rules and policies before posting.
Post Reply
User avatar
Zalewa_PL
Neophyte
Posts: 8
Joined: Sun Feb 03, 2008 11:06 pm

Creating an oldschool game with new engine

Post by Zalewa_PL »

The thing with sections on most boards is that I can never figure out where exactly I should make a new topic... let's try this one.

Hi.

You probably don't know me but if you check out Diablo and Beastmaster Dungeons for DM by Robikz then know that these were made by me (and I think I was 13 when I made these so imagine the quality...)

Introduction to what I've made already:
For past 6 months I've been doing a college project where I developed an engine for 3D arcade space shooter - it's kind of an Asteroids game but in full 3D. The game itself sucks of course and you get bored after 5 minutes :) but nevertheless the engine is there and I'm thinking about the future applications.

A small list of features:
  • Written in C++
  • Uses SDL + OpenGL and CMake to generate makefiles/projects and will compile on Windows and Unix (and MacOS I think but I don't care).
  • Is able to do model-to-model collisions (obviously not useful for oldschool dungeon crawler), with collision reaction based on objects' bounding spheres.
  • Is unable to create level geometry ( this needs to be implemented :) )
  • Defineable actors through a Decorate based interface, with simultaneously running actions instead of states (Me either walks or eats your brains out is not an acceptable model nowadays :) ; right now must be hardcoded though ).
  • Reads TrueType fonts, .png (and other formats) pictures, unanimated .3DS models, can read resources from both .zip files and directories at the same time, is able to render sprites.
  • Configuration stored in .INI files instead of retarded Bill invention called system registry (portable application model for Windows and $HOME/.<whatever-you-wanna-put-here> on *nix).
  • UI controlled by keyboard (mouse for UI needs to be implemented).
  • Plays sounds and music (including MIDI and modules) through FMODEx.
  • Rather minimal use of external libraries: SDL, SDLimage, FreeType, FMODEx, OpenGL, ZLib - none of these have any heavy dependencies unlike some other libraries available on the net (I remember what I did to get Agar working only to discover that it's a piece of crap...)
The code is on FreeBSD license, although I don't want to release the source just yet because I don't believe it's ready. Some stuff require overhaul. Also if anyone asks why I didn't use one of available solutions like Ogre3D or Bullet or whatever then my answer is: Because I love reinventing the wheel, because I feel that is the only way I am ever gonna learn anything and because it is 1337.

Some screenshots:
1 2 3 4 5 6 7
Sorry for links instead of pics but I didn't want to destroy the site's layout and spoiler tag works different here than what I'm used to.
It's not yet finished as you can see by the lack of textures on the actual asteroids.

Let's get to the point though:
Recently I've been playing some of the good ol' RPGs (or rather re-playing some of them) and I thought to myself "Hey, I can do that too". We've already got many DM clones but I have issues with all of them.
  • RTC - very nice, very easy to modify, but still requires complicated wall themes to make things work. I aim for single wall - single texture approach (like Doom/Wolfenstein). Also it's really annoying that it needs to play all the introduction animations fully before starting the actual game. That's what thrown me away from creating a custom dungeon for this engine. I once read somewhere that RTC actually "loads" the data in the background and I'd have to wait anyway... Sorry sir, been there, done that, you're wrong or your code is extremely wrong.
  • Lua scriptable engine - Lua is nice and I really need to learn how to connect this to C++ classes but apart from that it really scared the heck out of me and I didn't get into that engine at all.
  • Modern clones with full 3D environment, smooth move and 3D models instead of sprites - sorry brother, but that's not oldschool anymore and doesn't have the same appeal.
What I'd like to achieve:
The opposite of the things mentioned above.
A game with modern looks but oldschool gameplay. 3D models for wall/level objects but sprites for enemies and items. Grid based map with 90 degrees rotation and fixed step (midsteps like in DM2 or Lands of Lore as optional feature, personally I think they're nice). Easy to use map editor and easy editing with Doom like linedef/sector approach where you can texture entire dungeon section with single click instead of spamming cells with "theme" objects. Minimal use of scripts - seriously, if the game requires from the mapper to learn a scripting language in order to open a door when a button is pressed then someone has screwed his job. Also texturing the level would be done with a single picture instead of "near texture set", "medium texture set" and "far texture set".

What I need
Sum tasty hoo-mans!
No really, my school is full of Java. At first it was Java basics, then it was Java basics where the main class inherits from Servlet class, then it was Java basics where the main class inherits from MIDlet class and I have no one to help me. Most of my current knowledge was obtained through Internet and trial and error. Ironically it's easier to find people who can do graphics instead of actual programmers, and anyone who's skilled enough is not interested in doing a free project, because why if they can make money. And to be honest I got a work too now so I don't know how much time I could sacrifice for a project like this, especially since my BSc Thesis (I think that's how it's called in English) is also coming up. If anyone would be willing to help then Uncle Sam will welcome you :)

Some thoughts
I think I've played most of the dungeon crawlers of the old era (I don't count those that had Commodore like graphics because I don't count them as games). Eye of the Beholder trilogy, Dungeon Master 1&2, Black Crypt, Albion, Ambermoon (didn't finish it), Knightmare, Lands of Lore, Betrayal at Krondor, Stonekeep, Perihelion, Realms of Arkania: Blade of Destiny, Menzoberranzan (a terrible game), Realms of Arkania: Star Trail (even worse game), Wizardry 7 (the worst game EVER), and so on. I've been wondering how to solve the combat system.
This might be the wrong board to say this but DM style of combat is flawed. If you can side step then even the mighty beholder Xanathar and even mightier Dran Draggore are wusses. I really like Arkania style of combat, where the game goes to a battlescape and you fight the Sectoids (err.. I mean Orcs) there and it adds some strategy aspect to the game. However this doesn't cope very well with monsters being able to walk around the dungeon and what I didn't like about Blade of Destiny was that the dungeon was an empty place where all interactions were done by text messages and you couldn't drop anything on the floor. Anyone has an idea how to combine these features to create the "best of both worlds" thing here?
Former alias: RobikZ
User avatar
beowuuf
Archmastiff
Posts: 20687
Joined: Sat Sep 16, 2000 2:00 pm
Location: Basingstoke, UK

Re: Creating an oldschool game with new engine

Post by beowuuf »

Hi, I remember both those dungeons. I seem to recall the diablo one being quite basic (deliberately hack and slash) but that beastmaster was fun.

Fighting: Most modern clones, and even the custom dungeon conflux, have it now that the monster group can separate. Because Conflux is faking the monster splitting it actually works out well - monsters move together to still be a combined threat, but then split apart especially right beside the part to start flanking. You are right though, the sidestep is still to easy. I think level design and creature design can alleviate it somewhat. Monsters that have attacks (liek a dragon that when you are at its side can turn and hit you with a tail) or levels that have obstacles to stop simple movement can work.

I guess you can separate combat form usual movement by having monsters who are engaged in combat have a much faster movement rate than those outside combat. So creatures can still roam, but once combat is engaged its much harder to manouver around them. You coudl try and fake D&D turn separations too, where in an encounter situation the party can only move and do one action in a descrete block of time. So they can move around to get best attack, but at some poitn they will be forced to slow down to actually do anything (unless they have cool abilities to grant extra manouverability)
User avatar
Ameena
Wordweaver, Murafu Maker
Posts: 7516
Joined: Mon Mar 24, 2003 6:25 pm
Location: Here, where I am sitting!
Contact:

Re: Creating an oldschool game with new engine

Post by Ameena »

You've reminded me of the combat system in the Might and Magic series. In case you're not familiar with the way they worked (since I'm not sure whether you've played any of them or not), I've played games VI-VIII. All three games are basically running in real-time in as much as creatures can freely run around while you're within a certain range of them - outside that range they just stand still, or if you're only just outside their range, wander back to the spot they started in if they've moved from it. So if you're inside a dungeon, you can be closer to creatures that can't actually get to you because they're in the next corridor along or something - if you have the Wizard Eye spell active (which shows mobs as red dots on the mini-map), you can see them all herding against the walls trying to get you, something they'll try to do if they've caught sight of you previously. If you haven't "triggered" a creature in this way yet, it isn't visible on the mini-map even if you have Wizard Eye up.
But I'm sidetracking myself here. Anyway...any time you like, you can enter a turn-based mode by pressing the Enter key. You can do this whenever you like and can deactivate it whenever you like. When you press it, the game enters a turn-based mode so your party members will be able to attack, then the creatures will move/shoot/hit you (depending on range and ability, obviously). In MMVI, the party couldn't move when in turn-based mode (unless you were flying, in which case you could freely move up and down even when it was the mobs' go - so dodging ranged attacks was easy :twisted:), but in VII and VIII, the party had a few steps of movement - when turn-based mode was active, an open hand appeared in the bottom-right corner of the screen (which happened in VI too), and when it was the party's turn to move, the fingers would count down as you moved each step. But as the party's runspeed was always greater than that of any creature, if you had enough room to outdistance them you could just deactivate turn-based mode and leg it in order to lose some of them or just open up some space if they were a bit too close.
I haven't played so much of the latter two games but in MMVI creatures in free-move mode would come running toward you at an angled path, heading toward you but moving diagonally left and right as they did so, so hitting them with a ranged attack was bloody hard. If you activated turn-based mode, they would always just move directly toward you. Even if you were standing on something tall and they had no chance of actually hitting you when they got to it ;). Ranged attackers were the same - in free-move, they'd mill about at a distance and try to zap you whilst mainly moving from side to side, but in turn-based mode they'd copy the melée attackers and just home straight in on you.
______________________________________________
Ameena, self-declared Wordweaver, Beastmaker, Thoughtbringer, and great smegger of dungeon editing!
User avatar
Zalewa_PL
Neophyte
Posts: 8
Joined: Sun Feb 03, 2008 11:06 pm

Re: Creating an oldschool game with new engine

Post by Zalewa_PL »

beowuuf wrote:Hi, I remember both those dungeons. I seem to recall the diablo one being quite basic (deliberately hack and slash) but that beastmaster was fun.
Not to mention I didn't have a blank dungeon template for Beastmaster and I eventually grew tired of removing original Dungeon Master content so for final levels I left it inside and simply added a few more corridors to make it look a little different. Of course this clever disguise didn't work and people saw through it :)
beowuuf wrote:Fighting: Most modern clones, and even the custom dungeon conflux, have it now that the monster group can separate.
Naturally.
beowuuf wrote:I guess you can separate combat form usual movement by having monsters who are engaged in combat have a much faster movement rate than those outside combat. So creatures can still roam, but once combat is engaged its much harder to manouver around them. You coudl try and fake D&D turn separations too, where in an encounter situation the party can only move and do one action in a descrete block of time. So they can move around to get best attack, but at some poitn they will be forced to slow down to actually do anything (unless they have cool abilities to grant extra manouverability)
Imagine your characters' hands in EOB going gray each time you make a step. I'd think it's some kind of a bug.

D&D is flawed - at least the D&D version that the games back then were based on, like EOB. Apart from the silly things like lower armor class actually translating into better protection or helmets giving no protection at all unless being magical (In Baldur's Gate helmets protected from critical hits as far as I remember but I don't know what's their purpose in EOB) it's really stupid that strength doesn't have anything to do with actual damage and it only makes it easier to hit a target, which in my opinion should be decided by dexterity. The most powerful weapon does 20 damage so you don't feel any power at all, especially when you see Baccata dealing 250 points of damage in LoL or the mighty-lame Vorax axe.
Ameena wrote:You've reminded me of the combat system in the Might and Magic series. In case you're not familiar with the way they worked (since I'm not sure whether you've played any of them or not), I've played games VI-VIII.
Yes, these are the only M&M games that I've actually beaten. I tried M&M V but it had the same sense of direction as Wizardry 7 (read: none) and M&M IX but it was a bad game. I don't count Might & Magic VI+ games as 'old games' however, since old games are supposed to run on Amiga computer or in pure DOS :)
Ameena wrote:But I'm sidetracking myself here. Anyway...any time you like, you can enter a turn-based mode by pressing the Enter key.
And how boring it was! Given the horrendous amount of enemies in these games I actually preferred to run into the horde, murder them with swords that were significantly more powerful than bows and retreat to heal. That is until I got laser rifles (or dragons in M&M VIII). Lasers were actually weaker than the swords but turn based mode had a bug that allowed one of your characters (randomly selected) to fire a lot more shots that he/she should be allowed to. Bye bye titans, bye bye dragons, bye bye everyone.

--------------
The thing is I really like the isometric battle screen from Realms of Arkania games and the strategy aspect it adds. It removes that feeling where the party always moves in perfect formation and everyone minds are telepatically connected so every single person in the party knows exactly where and when to step - these are some freaking ninja skills and last time I checked Torham still sucked at being ninja and so did Cletus.
Of course there were some flaws in RoA games: you had to be in a direct horizontal or vertical line to shoot at enemy and you could only attack him from 4 sides instead of 8. I think one of these was later fixed in Shadows Over Riva but it's been a while since I saw this particular game.
I just don't know how to connect this model with first person view.
  • Betrayal at Krondor solves this by putting enemies at fixed locations. They can't move but usually they block your path so you have to fight them anyway. In my opinion that looks weird and is annoying because the game enforces fights so you can't outmanuever the strong enemies and you have infinite time to prepare.
  • Albion has enemies charging the party once they get in visual range (there is no prior roaming) and if you run away from the battle they are standing in a single spot allowing you to actually get away from the "monster-map-piece". This also looks weird.
  • Realms of Arkania - there's no warning. You step on a blank spot in a dungeon and the game goes into the battle screen and you are attacked by 20 orcs and a sorceror. If the game wasn't actually good this would be a nail to its coffin.
  • Wizardry 7 battle model but let us not speak of this heresy. Burn!
  • And of course the already mentioned DM style where you can sidestep everyone.
I don't think there's any logical way to connect both FPS style of outmanuevering the enemies in the grid-based gameplay and have battles in isometric view at the same time but maybe someone here will have a brilliant idea.
--------------
One last thing.
Is there anyone here experienced in game development (whom I could bother of course, because I know that Sophia is and George Gilbert too but after what I said about RTC I don't think he'd be eager to help :twisted: )? There are some questions (a little bit more offtopic) that I'd like to ask and articles on some of them are not easy to find. I don't want to do more attempts of inventing my own programming solutions only to discover later that mine is bogus and that simplier one is known and commonly used.
Former alias: RobikZ
User avatar
beowuuf
Archmastiff
Posts: 20687
Joined: Sat Sep 16, 2000 2:00 pm
Location: Basingstoke, UK

Re: Creating an oldschool game with new engine

Post by beowuuf »

Zalewa_PL wrote:Imagine your characters' hands in EOB going gray each time you make a step. I'd think it's some kind of a bug.
Other way around - when you make an attack action, you'd freeze for a moment during the 'backswing'.
D&D is flawed - at least the D&D version that the games back then were based on, like EOB. Apart from the silly things like lower armor class actually translating into better protection or helmets giving no protection at all unless being magical (In Baldur's Gate helmets protected from critical hits as far as I remember but I don't know what's their purpose in EOB) it's really stupid that strength doesn't have anything to do with actual damage and it only makes it easier to hit a target, which in my opinion should be decided by dexterity. The most powerful weapon does 20 damage so you don't feel any power at all, especially when you see Baccata dealing 250 points of damage in LoL or the mighty-lame Vorax axe.
All systems need to do compromises. D&D does make strength count for damage, plus the reason it counts for hitting as the 'hit' is an abstration. A successful hit is actually penetrating defenses and armour. If you have to pick a general set of stats, then the ones governing muscle control and power seem better than the ones for suimply flailing. 4th ed actually has expanded each classes hit with their skills to the logical ability (such as intelligence for spellcasting, dexterity for relfexive precise hits).

As for helmets not giving armour - again, you need to decide on a design space and level of abstraction. A helmet won't stop concussion from a powerful blow. Most people won't put their heads in the way of a blow, so most blows would be to the body. Therefore, a helmet is negligabel. Plus, in the RPG design space, not losing mechanical advantage because you remived a helm to talk means you aren't missing a beat between RP discussions and mechanical combat. Plus, if a small scrap of armour makes a difference, where does it stop? DM had the four body sections able to be removed, and I think people still debate the level that parts help or not :)

Also, are you planning on a full party, or a single player? A single player of course means you can have perhaps some attack/defense options during the combat, so combats can be tactical.
User avatar
Ameena
Wordweaver, Murafu Maker
Posts: 7516
Joined: Mon Mar 24, 2003 6:25 pm
Location: Here, where I am sitting!
Contact:

Re: Creating an oldschool game with new engine

Post by Ameena »

In MMVi, you had the Blasters - I'm not sure whether their damage was any worse than that of a bow (in fact, I think it was better, but possibly not as good as some melée weps), but they were super-fast so you could get in tons of shots in the time it took to fire one shot each from bows. And in outdoor combat, Fly + Starburst/Meteor Shower (depending on mob immunities) could pwn anything, and you could avoid being hit due to being able to still fly up and down when it wasn't your go. Easy enough way to empty the places with the best loot - Dragonsand and Paradise Valley :D. For anywhere else, blaster rifles for singles/small groups and Dragon Breath for larger groups (provided they weren't immune to poison, of course) was much fun :D. Numerous bugs mean that I can play that game with a full group of Paladins, each with all schools of magic, tons and tons of cash, very high level, tons of mana and stuff, able to zonk pretty much everything. Once you've done all the quests that require you to go to a castle, you never have to worry about how bad your reputation's got because you can only be arrested if you try to enter a castle with too low a rep - and if you have been nuking places like New Sorpigal and suddenly find you need to visit, say, Sir Wilbur Humphrey up in Castle Ironfist, just donate a bunch of times to the temple (preferably the one in New Sorpigal 'cause it's only 10 gold per donation and I think you still get the same amount of reputation as you would at any other temple) to get your rep back up to Respectable.
Ahhh, such a fun game :D.
Anyway, sorry, this thread was about combat, wasn't it? Whups. Hmm, maybe I should play MMVI again some time soon...
______________________________________________
Ameena, self-declared Wordweaver, Beastmaker, Thoughtbringer, and great smegger of dungeon editing!
User avatar
Hajo
Craftsman
Posts: 106
Joined: Tue Mar 02, 2010 11:33 am
Location: Between chair and keyboard

Re: Creating an oldschool game with new engine

Post by Hajo »

beowuuf wrote:As for helmets not giving armour - again, you need to decide on a design space and level of abstraction. A helmet won't stop concussion from a powerful blow. Most people won't put their heads in the way of a blow, so most blows would be to the body. Therefore, a helmet is negligabel. Plus, in the RPG design space, not losing mechanical advantage because you remived a helm to talk means you aren't missing a beat between RP discussions and mechanical combat. Plus, if a small scrap of armour makes a difference, where does it stop? DM had the four body sections able to be removed, and I think people still debate the level that parts help or not :)
Generally if you have less items affecting a stat (e.g. defense), usually each item contributes much and the player will notice changes - that makes each item meaningful to the player. If you allow a lot of items contribute to defense each one will only do a minor effect, and often the effect of one item is too small then to be noticed clearly.

Diablo II has helms and belts with noticeable defenses, but lets out legwear, so there still are only about 5 slots contributing to defense.

Such questions are game design questions. Realism is often a bad guide here. Beowuuf is right that games need abstraction. Also, sometimes things may be completely unrealistic and can still be great fun in games, like most magic effects.

As a rule of thumb, people can only notice changes clearly if they are 30% of the former value. If we have 4 armor slots it's 25% on average for each slot, and if we have 5, it's 20% - and actually you see few games which go further.
User avatar
Zalewa_PL
Neophyte
Posts: 8
Joined: Sun Feb 03, 2008 11:06 pm

Re: Creating an oldschool game with new engine

Post by Zalewa_PL »

Some news:

Project deadline was last Monday and me and my friend scored the best notes possible and an applause so I think the engine is worth something. I'm thinking about uploading the original game with source code to SourceForge. I have to get rid of the propertiary content first, though, however knowing the Internet no one will give a damn about a single sprite and a title music stolen from Doom. Also I think I could get sued to hell and beyond just for using "Star Trek" in the game title and for using a ship that was named and modelled after the Enterprise...

About the engine:
I've fixed input issues today - added some additional layers above the already platform independent SDL event loop, wrapping keyboard and mouse events (almost) nicely. The system should now be ready for key rebinds so (if anything comes of it in the future) the player won't be forced to use numpad to move their party. I think Black Crypt was the only dungeon crawler that allowed the user to rebind their keys. What a relief it was to play using WSAD instead of the pain-in-left-wrist-causing arrows.

But that's just rambling. I've run into another issue and that's what I actually want to say here.

How to represent objects like stairs or pits in the floor/ceiling? Or holes in walls? Or pressure plates that should go deep into the floor? With the old engines it was pretty simple. The resolution was low and the engine itself was not 3D at all. They used "intelligently" done graphics that created an illusion of depth. I don't think any of these games actually done any 3D calculations. These were only pre-made sprites splattered on the screen to form a fake 3D labirynth. With high resolution engine such fakes will be obviously visible, even if the gameplay is still grid based and the party movement and rotation is rigged to fixed values. Also what about the stairs? You can't just paste a texture on the wall - that will be an obvious fake. If you look at stairs from the side in the EOTB Dungeon for RTC you will see even there that this is a flat picture painted on the wall. Of course you can put a 3D model of the stairs on the dungeon grid but that still doesn't solve the problem of stairs going into the fixed-height ceiling/floor.

As I said I like reinventing the wheel and I'm not interested in using premade solutions in a form of already done 3D engines.

I've been thinking about a very weird way to fix this problem. I think it's weird because I don't think anyone ever tried to do something like this:
Doom has a very VERY well done editor called "Doom Builder 2". Also Doom map format is easy to learn and there is a huge tutorial written specifically for that editor. ALSO Doom Builder 2 supports custom engine configurations so it wouldn't be a big problem to use this for a game that has absolutely nothing to do with Doom. It wouldn't be a problem to split such created map into a grid based format either and it would give potential mappers a great flexibility in creating wall decorations.
So basically "My Dungeon Game" could use exactly the same format as the first person shooter of 1993 :)

Any input on this? (I feel like this particular post is more of me talking to myself, trying to rethink the ideas, but whatever...)
Former alias: RobikZ
User avatar
zoom
Grand Master
Posts: 1819
Joined: Tue Sep 23, 2003 1:27 am
Location: far away but close enough

Re: Creating an oldschool game with new engine

Post by zoom »

it is probably a good idea to remove up /down looking completely, for a 3d-ish dungeon master clone..
User avatar
Zalewa_PL
Neophyte
Posts: 8
Joined: Sun Feb 03, 2008 11:06 pm

Re: Creating an oldschool game with new engine

Post by Zalewa_PL »

Errr... if you read my posts carefully, zoom, you'll see that I aim for oldschool gameplay.
Zalewa wrote: [...] Grid based map with 90 degrees rotation and fixed step (midsteps like in DM2 or Lands of Lore as optional feature, personally I think they're nice).
I think it is obvious that this implies that I don't want any form of smooth camera movement and any form of looking up or down. This doesn't change the fact that wall objects require depth, and stairs can't just disappear into a solid floor or ceiling.
Post Reply