Sign in to follow this  
FireNet

Isometric Tutorial Links (Give me please)

Recommended Posts

FireNet    187
I have been looking around the net for a while looking for information related to the programming side of Isometric games. Could not find anything substatial, especially with the programming in C++ but got loads of flash stuff :P If you guys could give me some good links, it would be most useful. Here are some links I found GameDev - http://www.gamedev.net/reference/list.asp?categoryid=44 Kirupa - http://www.kirupa.com/developer/actionscript/isometric_hittest2.htm DelphiX - http://bdn.borland.com/article/0,1410,22928,00.html Got any good ones????

Share this post


Link to post
Share on other sites
Wyrframe    2426
If, between the GameDev link you already found and Google using the topics you can find in that area, you still cannot find what you need, you just might not be ready.

An experienced programmer does not need to read source to learn a technique. An inexperienced programmer could probably use the experience of learning to translate techniques to code on their own.

Good luck!

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
I got stuff on Kirpura alright.

What I would really like is some tips on rendering maps and collision detection on the map.


I am new to isometric stuff. I also would like to know how to manage large maps.

Share this post


Link to post
Share on other sites
Schildpad    125
Quote:
Goes over a technique of caching for tile based games. How to have a large number of graphical tiles and efficiently support as many memory configurations as possible.
is on on a page in one of the links you provided. maybe you should check it out :)

Share this post


Link to post
Share on other sites
Simagery    732
@Schildpad: actually, that's a pretty out-dated (and simplistic even in its day) approach to solving that particular problem.

To summarize for those not jumping over to the article in question, it basically suggests a scheme where individual tile graphics are cached in memory. Standard cache stuff: only n tiles loaded at any one time, least-recently-used gets bumped. Uncached tiles get pulled off disk.

The article was written in 1999. In terms of gaming computers, that's the dark ages. Even with a stupidly low minimum spec for a game, a technique like that would simply be working at too fine a granularity to be useful. The approach would only make sense if your tiles were absolutely huge (on the scale of megabytes) and you had an incredible variety over the mid-term but a lot of repetition in the short-term. Neither really fits most tile-based games, and regardless, there are much better techniques to deploy.

@Wyrframe: I'd recommend pitching in a bit more information if you're going to bother to post. First of all, I'd disagree regarding your comment about experienced programmers not needing to read source. I'd consider myself fairly experienced and I normally *prefer* source to pure theory. Particularly when it comes to game dev info, there's way too much "talk" out there with no practical source code to back it up. And there are lots of ideas that break down when you have to make it compile and run.

@FireNet: I wish I had some great source to throw your direction (or some great links) but it looks like you've already found the exellent Kirupa and the extensive list here on GameDev.Net. You're right, there is quite a bit of Flash work in this area on the web (and many thanks to all those Flashers out there publishing their techniques!).

Unfortunately, I've not seen many serious tutorials on the subject in recent years. I'm hoping to remedy that. I haven't remedied it yet, but it's an area of intense research for myself. I'm hoping to carve out some time this weekend to put together the first few stabs at a "modern" isometric engine. I'll definitely be posting to this forum once I do (so keep an eye out!).

When I get home tonight, I'll dig through my links and pass along anything you may not have encountered. If EDI is around (perhaps you could PM him?), he's recently wrapped up some significant work on a fairly modern isometric engine (there should be quite a bit of mention of it in this forum's stickies).

@Anonymous Poster: the important thing to remember about isometric is the same critical thing to remember about all game development (and simulation in general, I suppose): you're working with two separate representations, the view and the model. An isometric game simply has a custom view on the game (an isometric view), but the underlying model isn't necessarily any different than a regular grid-based game.

For collision, don't try to do it in isometric space. Look at your map as a regular grid of tiles (like a sheet of graph paper). For doing collision detection, you really just want to ask if the tile I wish to move into is occluded (by another tile, etc.). This should be as simple as setting a flag on the tile to indicate whether it's blocked. If that doesn't make sense, I'd spend some time trying to solve the 2D problem (think the original Legend of Zelda game on the NES, or Dragon Warrior, etc.).

There I go, spewing ideas with no source to back it up... flying by the seat of my pants in the forums after chastising Wyrframe for it at the top of my post! That's living dangerously, my friends... :) Hopefully I'll put together some of this info more formally this weekend.

Regarding dealing with large maps: I'd recommend solving the problem exactly like the big boys with their 3D engines do. Determine what your desired memory footprint is for your map. This could probably even be relative to the user's machine. Let's say it's 256x256 tiles (roughly the scale of Starcraft map). Now, instead of thiking of this 256x256 map as our whole map, we just think of it as a zone of our map. The user is always in a single zone at any moment. When the user reaches the edge of a zone you simply "transition" to the next zone, loading it into memory (from disk) and unloading the old zone. This is essentially what happens in the Zelda series (Zelda: A Link to the Past is a good example of zones larger than a screenful).

But what if you want a continous world, with no "transition" edges? Now we're talking about having a streaming world. The easiest way I find to do streaming worlds (and this is how the big boys do it in games like Call of Duty or Ratchet & Clank) is to make your zones smaller and have multiple zones loaded at one time. Using our above example, I'd make the zone 64x64 tiles. I'd then have 4 zones loaded at any one time. That's the same amount of memory our 256x256 was taking up! So far, so good!

If you can guarantee that you'll never draw more than 64x64 tiles in a screenful (and that's basically how you determine the minimum size for a zone), then you can guarantee (in a 2D game) that the player will never need more than 4 zones loaded at once (the four corners of the screen are each a corner of a zone). For continous exploration, you simply load the "next" zone before the player crosses into it, and toss out old zones as the player leaves them.

Of coure, the dirt is in the details. There are many more issues to worry about to "tune" the streaming. You'll want to choose a zone size such that the player can't cross it too fast or otherwise you'll have to pause while loading the next zone. You'll also need to probably have a cache of more than 4 zones, unless you're very good at guessing where the player's headed or the zones are large enough. All of this tuning depends on your memory requirements, the number of tiles you need loaded to draw one screen-full, how quickly the player can move across the map, and how quickly you can load a new zone worth of tiles. There's no magic formula, but there is a magic structure that can solve basically any streaming problem given an appropriately constrained viewpoint.

So, that's a lot of explanation with no source code (not even a diagram!). I guess I need to really make some time this weekend to put something together. I owe you guys now!

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
No dude, there were tons of pointers in there which were very useful. I belive I will try doing map streaming as I as a player hate map loads right in the middle of the action ;)

Some people can say all the things in almost no words and there are some who cant say a cat fell off the wall in a whole book :P

Speaking of books, I found a book by TANSTAAFL (our forum's mod) called Isometric Game Programming with DirectX 7.Been reading it and been getting loads of info ;). It's really good ;).



Maybe I will write a tut or article when I finish my project.

-FireNet

Share this post


Link to post
Share on other sites
Simagery    732
Yeah, TANSTAAFL's book is pretty decent. The only drawback is that it's slightly dated, though that's not all that much of a drawback. I'd really like to see a book like his that starts with Direct3D and moves from there (he doesn't get to D3D until the last section of the book).

The book also suffers from the "I'll assume you don't know anything about anything before we start..." problem, common to gamedev books. It ends up being a lot of space waste. It made sense when the gamedev book market was small and you hoped to be a one-stop-shop for the readers. But now the market is fairly large, easily accessible by its target audience (Barnes & Noble, Chapters, Borders, Amazon.com), and then there's always the net.

I'm working on a book (well, need to get back to it) that does cover from the basics, but only because it's meant to cover *everything* in the creation of a game from scratch (well, it assumes you have a PC, an OS, and access to the web). Another area where it diverges from the regular gamedev book is that it goes all the way to the end: a finished, publishable indie game.

But hey, that's another tale all together...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this