Page 1 of 1

First-person grid-based dungeon-crawler RPG like Wizardry?

Posted: Wed Jun 08, 2011 11:26 pm
by thrash242
I'm looking to make an old-school Wizardry-style game with a modern-ish 3D engine like Etrian Odyssey or any of the other similar games for DS, PSP, or PS3.

I'm wondering how practical it'd be to do this in Irrlicht. I'm not sure how I'd represent maps and level geometry.

I'm thinking I could make a map as a grid and then make several blocks as static meshes and then load them to match the grid map based on the configuration of the walls at that grid square.

Or I could just make the maps normally like in any other 3D game, but I'm not sure how I'd tell the game which blocks are legal for the player to move to, etc.

I don't need animation or anything like that, since characters and monsters would be 2D images. It'd be cool to have nice-looking dynamic lighting and such for atmosphere, though.

Any ideas? Pretty much all the resources I can find for Irrlicht are for making FPS or third-person action games with premade levels.

I just want to make sure this is semi-practical to do with Irrlicht before I start. I don't want to spend weeks or months learning my way around the engine only to realize it's not the best tool for the job. I have very little experience with 3D graphics programming, so sorry for any dumb questions.

Posted: Wed Jun 08, 2011 11:38 pm
by Radikalizm
Irrlicht is very general-purpose, so yes you could use it to build this game
Game logic and rules are completely up to you though since irrlicht is not a game engine, but this shouldn't be a problem I suppose

About your map issue, I'm not familiar with the games you mentioned, but a tile-based solution is completely possible and has been done before with good results

Posted: Thu Jun 09, 2011 12:09 am
by thrash242
Here are some videos showing what I'm going for.

This one is from the latest Wizardry game:
http://www.youtube.com/watch?v=G5xKt_M8zGQ&t=56s

This demo was apparently done in Irrlicht, but I can't find any info about it:
http://www.youtube.com/watch?v=pYiCB8DZOFE

I assumed it'd be possible, I was more wondering how I'd go about doing this, since it's pretty unusual to build maps out of blocks these days. I wonder if I'd have to make my own grid-based editor or what.

Posted: Thu Jun 09, 2011 9:45 am
by KP84
Irrlicht is a 3D rendering engine. Wich means you can create everything then uses 3D graphics. for sound add irrKlang or another sound engine.
You can create applications like, games, 3d editors, normal applications with your own IDE components and even things like an OS.

As Radikalizm said, the logic is up to you. Irrlicht does not narrow the functionallity of c++. It is even cross-platform.

To create a 'map' you could do that by a 2d image wich you read in, build the scene and play 8) . Most control on how your map is.

Your application could create the map for you too. More maps, no hassle.

Also you could create a scene using an application like blender and create a map build by your app.

Tutorial 3 and 23 are the ones I would take a look at. They build an ISceneNode with a semi-procedural mesh.

pseudo-pseudo-code

Code: Select all

BLOCKTYPE_SPACE 0
BLOCKTYPE_WALL 1
BLOCKTYPE_WATER 2

bitmap (or something)
11111111
10000001
11111101
12222101
12212101
10011101
10000001
11111111

if( color == BLOCKTYPE_SPACE )
{
  addstripGround(const HeightMap &hm, colour_func cf, u16 y0, u16 y1, u32 bufNum)// from tut23, just idea, principle is clear I think
} else
if( color == BLOCKTYPE_WALL )
{
  addstripWall(const HeightMap &hm, colour_func cf, u16 y0, u16 y1, u32 bufNum) 
} else
if( color == BLOCKTYPE_WATER )
{
  addstripGround(const HeightMap &hm, colour_func cf, u16 y0, u16 y1, u32 bufNum)
  addstripWater(const HeightMap &hm, colour_func cf, u16 y0, u16 y1, u32 bufNum)
}

Posted: Thu Jun 09, 2011 10:03 am
by Radikalizm
I see now what you want to achieve (couldn't look into the videos last night because of bandwidth issues)

This is very much doable, and you can handle this using different approaches

The method I would suggest is to completely model your map and partition it later on using a grid (could be 2D or 3D according to your requirements)

If you make sure your map is proportional to the size of a grid unit this can become fairly easy, and movement can then be easily constricted to your grid, and even collision can be handled very easily by marking a piece of your grid as non-accessible by the player (which removes the need for other more complex collision checks)

A tile or box-based approach could work too, but this would require some more complex mesh management (ie. mesh batching to reduce draw calls) and would be harder to get a visually appealing result, since you'd need a good variety of decent procedural textures/materials to avoid texture repetition or ugly texture seams