Isome - 3D isometric tile-based engine

Showcase your libraries, tools and other projects that help your fellow love users.
Post Reply
User avatar
Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

Isome - 3D isometric tile-based engine

Post by Taehl » Fri Dec 10, 2010 4:40 pm

Isome is a 3D (logically and spatially, 2D graphically), tile-based engine. It could easily be used for platformers, RPGs, puzzle games, or, really, just about anything. It's very optimized, and can easily show over 100,000 tiles without slowing down. It has a realtime editor (with the ability to save and load maps to/from files) with some neat features.

Since Isome is meant to be built upon, I wrote it to be easily expanded, include useful and flexible functionality (including a code profiler and debug message system), and, most importantly, every file is filled with comments and documentation. The whole thing totals only about 650 lines of code, including comments, example snippets, and some demonstration maps.

Time for screenies.

Image
Image
Image
Image


It's /meant/ to also have multiplayer support, however, the networking module is taking me too long to write, so I thought I'd just release the singleplayer version for now. It's perfectly stable as is.

Want to give it a try? Download it here.

Want to test its ability to load maps from files? The map from the fourth screenshot is here. Put it in your AppData\Roaming\LOVE\Isome folder (or whichever you use, depending on your OS), run Isome in Love, Hit F3 to enable the editor, and press KP/.

I know it's not perfectly optimal (the trace function, for example, could be done better, but I don't know the math to do it), so I'd be happy to hear any comments, critique, or improvements you may come up with.
Last edited by Taehl on Sun Jan 29, 2012 10:01 pm, edited 3 times in total.
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

User avatar
zac352
Party member
Posts: 496
Joined: Sat Aug 28, 2010 8:13 pm
Location: In your head.
Contact:

Re: Isome - 3D isometric tile-based engine

Post by zac352 » Fri Dec 10, 2010 8:18 pm

It sounds nice.

I have a question: What format are the saves in? CSV?
And will this work with 0.7.0, and how embeddable is it?
Hello, I am not dead.

User avatar
Lap
Party member
Posts: 256
Joined: Fri Apr 30, 2010 3:46 pm

Re: Isome - 3D isometric tile-based engine

Post by Lap » Fri Dec 10, 2010 9:12 pm

Well done! I'll definitely be pointing people to this.

User avatar
Ryne
Party member
Posts: 444
Joined: Fri Jan 29, 2010 11:10 am

Re: Isome - 3D isometric tile-based engine

Post by Ryne » Fri Dec 10, 2010 10:15 pm

Taehl wrote:Isome is a 3D (logically and spatially, 2D graphically), tile-based engine. It could easily be used for platformers, RPGs, puzzle games, or, really, just about anything. It's very optimized, and can easily show over 100,000 tiles without slowing down. It has a realtime editor (with the ability to save and load maps to/from files) with some neat features.

Since Isome is meant to be built upon, I wrote it to be easily expanded, include useful and flexible functionality (including a code profiler and debug message system), and, most importantly, every file is filled with comments and documentation. The whole thing totals only about 650 lines of code, including comments, example snippets, and some demonstration maps.

Time for screenies.

It's /meant/ to also have multiplayer support, however, the networking module is taking me too long to write, so I thought I'd just release the singleplayer version for now. It's perfectly stable as is.

Want to give it a try? Download it here.

Want to test its ability to load maps from files? The map from the fourth screenshot is here. Put it in your AppData\Roaming\LOVE\Isome folder (or whichever you use, depending on your OS), run Isome in Love, Hit F3 to enable the editor, and press KP/.

I know it's not perfectly optimal (the trace function, for example, could be done better, but I don't know the math to do it), so I'd be happy to hear any comments, critique, or improvements you may come up with.
Looks awesome, I'm definitely going to play with this.
@rynesaur

User avatar
Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

Re: Isome - 3D isometric tile-based engine

Post by Taehl » Sat Dec 11, 2010 12:39 am

zac352, save files are in, at the moment, pure Lua code. Back in Love 0.60 I used to zip them (which really helped), however, newer versions of Love somehow broke the file-reading in just such a way that my zipper won't work any more. *Sigh*

It works just fine in Love 0.7. What do you mean by embeddable?
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

User avatar
bmelts
Party member
Posts: 380
Joined: Fri Jan 30, 2009 3:16 am
Location: Wiscönsin
Contact:

Re: Isome - 3D isometric tile-based engine

Post by bmelts » Sun Dec 12, 2010 6:44 pm

So, uh...

Mïnecräft, anyone?

On a more serious note, this looks amazing. May need to mess around with it a bit once finals are over...

User avatar
headchant
Party member
Posts: 105
Joined: Fri Sep 03, 2010 12:39 pm
Contact:

Re: Isome - 3D isometric tile-based engine

Post by headchant » Sun Dec 12, 2010 7:08 pm

anjo wrote:
Mïnecräft, anyone?
...is what I was thinking!

This looks and feels great. The jumping and gravity stuff is awesome.

What bugs me is the flickering shadow of the player when he moves. It seems to have an issue of not being in the correct z-order or something.

User avatar
Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

Re: Isome - 3D isometric tile-based engine

Post by Taehl » Sun Dec 12, 2010 9:40 pm

He he, isometric Minecraft would be amusing.

I know the shadow thing you're talking about, redlock. I decided to trade-off the ability to properly depth-sort objects with graphics that go below (on the screen, not 3D) their origins to gain a significant performance increase. The fastest way to fix it is to change two lines in Isome\engine\engine.lua to these:

line 209: lgdraw(v.si, math.round(rx-cam.x), math.round(ry-cam.y)-6, 0, 1,1, 8,4)
line 214: lgdraw(v.i, math.round(rx-cam.x), (ry-cam.y)-6, 0, 1,1, 16,32)

Note the new -6 on the y-coordinates - that moves the graphic upwards a bit, so they won't be clipped by the next row in the depth sort. However, that can make precision jumping a little bit harder. *Shrugs*
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests