Sign in to follow this  
O-san

woho, got it working :)

Recommended Posts

O-san    1898
Hello! I've managed to get my isometric "engine" working. It uses z-buffer for sorting and as a bonus I get OpenGL lighting :D The program uses ordinary 3D boxes which are mapped with my hand-drawn isometric graphics. I then arranged the boxes texture coords and the 3D view to align with my isometric perspective.
The graphics are just temporary but I think the result is quite pleasing :) Thanks to JTippetts for pointing me in the right direction. /Cheers [Edited by - O-san on July 5, 2007 1:49:36 AM]

Share this post


Link to post
Share on other sites
cdoty    733
The power of 3D graphics card!

Years ago I worked on something similar to this (in 2D), for the game Revenant. It calculated the lighting based on normals stored with the graphics. It used highly optimized asm code to do the lighting (on a 300 Mhz pentium).

Share this post


Link to post
Share on other sites
O-san    1898
Thanks! I think the lighting can become a bit better looking. The objects has no defined normals so they are probably all zero. When I assign normals the high pilar sould for instance be alot darker because it is in front of the light. With this technique it should even be possible to implent shadow mapping.

Share this post


Link to post
Share on other sites
O-san    1898
Just wanted to share my updates on my isometric project :) The newest additions is blending, animation and view zooming. Left to do is scripting, saving and loading of map and resources, NPCs, audio...


Cheers! :)

[Edited by - O-san on July 5, 2007 1:00:36 AM]

Share this post


Link to post
Share on other sites
PaulCesar    524
I am truly amazed. Ive never seen isometric graphics attempted like this and the results are very pretty indeed. KUDOS x 100. I cant wait to see where this goes.

Share this post


Link to post
Share on other sites
itsdbest    134
I think this is superb...

I myself have been working on a 2D isometric engine... and I still have not obtained the result I want.

Map generation is still a big issue for me. I have issues with the layers. I have still not implemented them. The base layer works ok, so far, but it can be improved.

Could you point me in the right direction?

Even after reading a lot on isometric engines, I have not managed to come up with something really good.

Share this post


Link to post
Share on other sites
O-san    1898
Thanks! Sure, I can explain the process a bit further. Basic knowledge of texturing might be required..

The map is created from small 3D blocks all of the same size, almost like pieces of Lego. These small blocks is placed together to form larger blocks. Each larger block i a low resolution impostor of my 2D isometric graphic. I determine the dimensions of the block by the shape of my 2D graphic. When I have the shape of the block I must calculate the texture coords for the block:



The red color shows the 2D graphic area, the numbers indicate the texture coords for the large 3D block. 0.0 is at the begining of the texture, 1.0 indicates the end of the texture. In reality each small block needs its texture coords.

The smaller blocks could be discarded, I only use them to get better opengl vertex lighting. I haven't tried per pixel lighting but it should be possible.

Then when I render the block I bind my 2d texture, assign the right texture coords for the blocks corners and turn on alpha testing so that I get transparency.>

[Edited by - O-san on July 5, 2007 1:26:07 AM]

Share this post


Link to post
Share on other sites
AfroFire    471
That is fantastic looking! I was just tossing the idea of an Iso game around in my head, and just decided to give the ol forum a look - Glad I did man, that is amazing looking. Thank you for the informative detail as well!

Bumpin you up a bit.

Share this post


Link to post
Share on other sites
Mike2343    1202
Looking great. Have you looked into MegaTextures yet? Might be a sweet way to apply them here. Also per pixel lighting would look amazing, try it! ;-) Also, I'd sub-divide your squares once more, get even more accurate lighting. With todays cards even if the blocks are tiny on screen this wouldn't be an issue. As long as you're not looking to support like a GF2 or something that is (blah).

Good job :)

Share this post


Link to post
Share on other sites
ferr    194
That looks so awesome. Are the waves animated, or is it a method of texture blending, or just a raw texture? Either way it looks good (I'm sure it looks awesome if it's animated).

Strat/RPG being my favorite genre I've been wanting to put together an isometric engine which looks very similar to yours. Was there a tutorial that you read through to help you get into this?

Have you explored camera rotation around a dynamic point (i.e. rotating around your currently selected party member to get different angles of the battlefield)?

Share this post


Link to post
Share on other sites
Alerion    301
aah the images aren't working for me. And so much praise. I wanna see! ^^ =D it looks wonderful! Why did you say "engine" in quotes though? What are you planning on doing with this?

[Edited by - Alerion on July 5, 2007 7:38:51 AM]

Share this post


Link to post
Share on other sites
O-san    1898
Thanks for all the positive feedback! :)) I've been buried in work this week so I haven't made much progress. Sorry about the images, they are now back up. My webhost is a bit unstable so I've moved the images to GameDev now.

Anyway... Done some work on the GUI and removed unneeded vertices for the boxes. I'm thinking of implenting per pixel lighting and shadowmapping using GLslang next. Need to look into this a bit further.



Thanks again, this is what keeps me going :)

Share this post


Link to post
Share on other sites
ferr    194
Latest shot looks nice. I like how it looks like some of the grass is coming off of the edge of the field rather than just being cut off.

How do you handle blocks at different heights? I see you have one block at a different height (with a staircase attached). Is this just another block on top of your field or are you able to manipulate the height of blocks in your field?

After seeing some of your screen shots I've decided to finally begin work on an iso engine. I've been wanting to implement one for years now. Here's a very, very early shot of the progress:



I'm using XNA. Right now it's just in a research stage of determining how to best implement a 3D isometric perspective with orthogonal projection in XNA. The next steps will likely be determining the best method for rendering the "underground" and the best way to render the entire block so that design-time height modifications are at their most powerful and flexible.

Are you using a library for your GUI?

Share this post


Link to post
Share on other sites
O-san    1898
Great that you decided to try out isometric perspective! Are you using any graphics api or is it software rendering? (I've never read up on XNA, sorry for missing anything obvious). I think it looks pretty good so far :)

The height, width and depth of a block is manually configured from the SizeXYZ "+ -" buttons on the left side of the screen. I must set the size of the block atleast once when I add a new graphic/block to my resource list. Each resource is a class of its own that tells what size the graphic is in the 3D world, how many frames it contains and in what pace it animates. I have no fields/layers of objects, instead I have a linked list that points to which block it connects to:
<block name="stair">
previous=NULL
next="bookcase"
</block>

<block name="bookcase">
previous="stair"
next="table"
</block>

<block name="table">
previous="bookcase"
next="chair"
</block>

<block name="chair">
previous="table"
next=NULL
</block>
If a block points to NULL that means it is the last or first item in the list depending on which parameter was NULL. This way I can remove or add blocks to my map list without having to destroy the entire list each time. Also I don't have to tell how big I want my map to be because the map can actually be any shape; square-shaped, L-shaped or any other shape. I don't have to worry about sorting order of blocks because I use the Z-buffer when rendering.

I'm not using a library for the GUI, but now afterwards I think I should have :S

Share this post


Link to post
Share on other sites
O-san    1898
Quote:
Original post by Alerion
aah the images aren't working for me. And so much praise. I wanna see! ^^ =D it looks wonderful! Why did you say "engine" in quotes though? What are you planning on doing with this?


I'm planning on doing an action rpg-adventure, but I've not decided what setting the game will have. If the editor is successful I might use it to create content for more than one game, hence the term "engine". :)

Share this post


Link to post
Share on other sites
Traveler    161
I have to agree with the above posters, this really is looking very nice!
I'm very interested to see where this is going to and I hope you will continue to post new screenshots.

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