|
Which tiles and perspective to use? |
lameDuck2
Member #8,783
June 2007
|
I played around with a football game a number of years ago and got a 2d plan view running quite well, on a simple tile map. I want to pick this up again now, but produce it in Isometric view, but have a number of issues! basically, I need some advice... The problem with an ISO is that fundamentally the map is a diamond, which would mean that one end I am looking at the goal head on and the other looking at it from behind. Not good. My current thinking is to have a camera perspective on the map, that travels to within 10% of the X-limits of the map. So at the half way line we are looking straight on and the angle gets introduced as the camera follows a player up the field. I can see a basic algorithm for this in my head. Has anybody done/seen this, not in 3d? This also gives an advantage that I can then easily get a vector from the camera to the player and blit the ones with the largest vector first, to make for easy Z-ordering. Following this, do I actually need an ISO tilemap? A standard one, with just more specific line tiles would work just as well, giving me a nice easy cartesian coordinate system to work with? I'd need more view-angles per sprite, but that's a one off effort at the begining and not much in run time. Given a vector I can easily determine the angle of the player relative to the camera and choose the right sprite frame set accordingly. Thoughts, pointers, help, tips and offers of moral support, would all be gratefully appreciated. Yes, this really is a getting started question, but at least I know how to write code Another problem that I foresee having to think about are shadows, these being important to give the 3d look. Should these be part of the player sprite, making it a lot bigger, but making collision detection a bit more interesting. Or should they be a seperate bitmap, meaning 2 blits for every sprite? Your thoughts good people. Thanks Jim |
Archon
Member #4,195
January 2004
|
Quote: My current thinking is to have a camera perspective on the map, that travels to within 10% of the X-limits of the map. So at the half way line we are looking straight on and the angle gets introduced as the camera follows a player up the field. I can see a basic algorithm for this in my head. Has anybody done/seen this, not in 3d? That is essentially 3D if you can change the perspective like that. Quote: Another problem that I foresee having to think about are shadows, these being important to give the 3d look. Should these be part of the player sprite, making it a lot bigger, but making collision detection a bit more interesting. Or should they be a seperate bitmap, meaning 2 blits for every sprite? You would draw the shadows first so they can merge together if they "stack" - so, separate images. Then draw the characters on top. |
William Labbett
Member #4,486
March 2004
|
Quote: I can see a basic algorithm for this in my head. Has anybody done/seen this, not in 3d? Seems to me if you're going to go that far, you might as well make models and do it in proper 3D. As for moral support : hope it works out for you.
|
Wilson Saunders
Member #5,872
May 2005
|
What about using single vanishing point perspective? If done from a side view you can see the front of both goals. As for Shadows, have them be separate sprites and render them before the player sprites. You don't want a player's shadow overlapping another player. On the topic of overlapping be sure to sort you players in distance from the camera so you don't have any funky over lapping issues. Update: attached is a quick MS Paint image of a Single vanishing point perceptive soccer (erm football) field. http://www.allegro.cc/files/attachment/592446 ________________________________________________ |
William Labbett
Member #4,486
March 2004
|
hey, what a kind man!
|
Mark Oates
Member #1,146
March 2001
|
Quote: Has anybody done/seen this, not in 3d? Yes! And it's relatively easy to pull off. In fact I could summarize it in a couple of paragraphs. I created a simple 3d top-down environment where bitmaps that are closer appear larger than bitmaps that are further away. http://www.allegro.cc/files/attachment/592447 I wrote a little webpage for a class to summarize the fundamentals. Go here: http://games.zeoxdesign.com/lost_gizmos/index.htm You'll be interested in the two sections "Environment and Movement" and "Visual Component". The game is incomplete and there's all this extra audio crap I put in for the class, but you can get an idea. you can change the depth of field and zoom with +/- and PgUp/PgDn on your keyboard's number pad. -- |
Jonatan Hedborg
Member #4,886
July 2004
|
I believe that Diablo 2 had an option to turn this effect on
|
Albin Engström
Member #8,110
December 2006
|
Jonatan Hedborg said: I believe that Diablo 2 had an option to turn this effect on It still has ^^. |
Wilson Saunders
Member #5,872
May 2005
|
Jonatan Hedborg said: I believe that Diablo 2 had an option to turn this effect on That effect makes me motion sick after a long Diablo session I prefer to play with it off. Back to the original thread: I also suggest that you avoid Tileing for a football game. You need tiles for large varied terrain. A football field is relatively small and pretty consistent. Also, unless your computer is a total POS, you should be able to hold a bitmap larger than your screen in memory. From this you can blit out the part of the bitmap that the action is taking place on then draw your players on top of it. It would be far easier than trying to implement a tile system. ________________________________________________ |
Thomas Harte
Member #33
April 2000
|
Quote: The problem with an ISO is that fundamentally the map is a diamond, which would mean that one end I am looking at the goal head on and the other looking at it from behind. Not good. Wasn't the original FIFA Soccer isometric? I remember that being received quite well... EDIT: Yes it was: {"name":"fifasoccer.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/f\/8fd4f94af2f9878c1aae805e9a22bf79.gif","w":500,"h":351,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/f\/8fd4f94af2f9878c1aae805e9a22bf79"} [My site] [Tetrominoes] |
Mark Oates
Member #1,146
March 2001
|
Are isometric tiles usually just stored with the extra transparent stuff along the edges? Are there isometric tilesets? -- |
GullRaDriel
Member #3,861
September 2003
|
Stored with extra transparent stuff: yes http://www.allegro.cc/files/attachment/592450 Tile sets : What do you mean by tile set ? there are a set of techniques to have proper tile transition, and you can arrange them in a datafile the way you want. "Code is like shit - it only smells if it is not yours" |
lameDuck2
Member #8,783
June 2007
|
Defo going to go with the camera moving independant of the currently selected player, sounds odd, but if I add that the game is closer to a simulator, that a joy-stick waggler, then maybe that will make more sense. Failing that, the proof of the pudding, will be in the eating, as they say. So basically it's 'is' a single point of perspective, only moving around the playing field. Mark, thanks for the pointers, I'll have a proper look through it and see if there are any bits I can steal, sorry, I meant to say borrow I like the shadow tips, they are glaringly obvious, but I hadn't considered them overlapping other sprites. Has defo saved me some serious refactoring later on! Willaim - yes, it would make a lot of sense to do it in 3d, but I have no experience of that what so ever, so the learning curve may be a little to steep for me now, but maybe a version 2 option... Wilson, the reason I'd use a tile map is that it's relatively trivial for me, having done a couple of them before, so short lead time. It's an interesting idea though and I will defo throw said large bitmap together and see just how large it is. May be something I look at after all. I'm currently leaning towards a simple few grass tiles and drawing the lines on after. The reason for this thinking is the perspective thing, depending on where about you are in the field, the lines/elispes are going to vary a lot and it might be easier to calc/draw them on the fly. Will think some about the math and code involved in implementing it. Thomas - That view from the rear of the goal is exactly the thing I am trying to avoid, although the rest of it, is about right for a first release. Although if I ever get the hang of Poser, I hope the graphics will be a little better Thanks for all the tis and advice on this one. Fondest Jim |
Tobias Dammers
Member #2,604
August 2002
|
Hmmm... I still don't see how you're going to pull the tilemap-with-moving-perspective thing off. Either you have a tile map, and ergo an orthographic projection, or you are doing full-blown 3d (even though the sprites may be billboarded, Duke-Nukem-3D-style). The only halfway solution I can see would be a mode-7 kind of thing, that is, the ground rendered in mode-7 fashion, and the rest using regular sprites. --- |
lameDuck2
Member #8,783
June 2007
|
I'd never heard of mode-7, so had to look it up! It's not as complicated as it sounds, it's a hybrid between a normal tilemap and Wilson's single point of perspective. This of the camera as always facing the same direction and freely mveable in the Y axis. The allowed travel in the X axis would only go to with 10% of the goal line (ish, need trial and error to see what works best). So we'll see the face of the goals at either end and a normal straight ahead view for the rest of the pitch. The only thing I have to really think about is making sure forground players travel greater distances in shorter time. I'll post the test code when I've done it, if anyones interested! Just have to decide on C#/allegro interop, C++, or Tao. Decisions, decision J |
Tobias Dammers
Member #2,604
August 2002
|
Essentially, you are dealing with a 3d-to-2d mapping problem: the game is 3d (the field stretches in X and Y, the sprites - players, the ball, possibly the goals - elevate into Z), and you want to display it in 2d. Once you've made those choices, consider your options. A mode-7 engine. In the simplest version (ex.: Street Fighter), you just move individual scanlines depending on their depth, scanlines that are further away move less; this will only allow movement along the x-axis, and no rotation. With some clever tricks, though, it is possible to produce at least gearing and movement along the other 2 axis (ex.: Frenetic Plus). Elevated objects can be rendered as billboarded (and scaled) sprites. This will give you perspective projection. A simple 3d engine Render the ground as a textured quad (or a tilemap if you want), and the elevated objects as textured alpha-blended quads, rotated about the "up" axis (and possibly the x axis too) to face the viewer (ex.: Duke Nukem 3d). You can do this with allegro, or use a 3d library such as opengl. This will only look good if you limit the camera nose angle, or design your sprites so that they look OK anyway (ex.: Descent II, though this uses models as well). A full 3d engine Same as simple 3d engine, but using actual models for the elevated objects. This gives full freedom to the camera, with no visual problems, but makes it hard to achieve a pixelish visual style. It requires a lot of programming effort, since animating models typically requires skeleton animation. You also need proper modelling skills; it is a lot harder to get away with bad models than with bad sprites. Plus, we humans aren't that good at true 3d thinking, so you're at risk wrecking your brain doing this. --- |
Mark Oates
Member #1,146
March 2001
|
Quote: Mark, thanks for the pointers, I'll have a proper look through it and see if there are any bits I can steal, sorry, I meant to say borrow Nah, steel all you want! -- |
lameDuck2
Member #8,783
June 2007
|
Wow, very comprehensive answer, thank you very much Tobias! Certainly a lot of food for thought. Clearly I'm going to have to spike this (experiment with code for the non XP ) have started readin a very good tutorial on OpenGL and it looks 'doable'. The models are going to be a pain as you say, but I have a copy of poser, which I will finally have to get my head around and hopefully that will save the day. The camera will be fairly fixed, free to move through X and Y, but not Z. It will look down at 45, isometric style, which I'd go with, but I really can't live with the idea of looking at one goal from behind! So, it look like simple of full 3d, I'll decide post spike. Oh, and a very sore brain... Thanks again for an amazing reply, very cool indeed... J |
|