Jump to content

[WIP] Isometric Game Engine


Beakers
 Share

Recommended Posts

Hey,

 

a Reddiot over on Reddit (funnily enough) suggested I check out your site and post my current work.

 

I've been working on an HTML5 isometric engine for quite a while now and close to having easy to implement multiplayer/node support. An old prototype video of it can be seen here: http://www.youtube.com/watch?v=Qlsipfu5Qq4 (I used to run a blog Glacial Flame, and write up canvas tutorials but sadly lost it all a couple of years ago).

 

JLmYtqZh.jpg

 

 

The GitHub repo is available here: https://github.com/beakable/isometric

 

I was lucky enough to be given the domain from a Redditor http://jsiso.com/, still rather basic but has a few links.

 

Since my last posting of this I've been working on random simple Samples making sure the engine isn't tied to the particular game I had in mind. The next sample I'm currently working on will run with a node server and have some basic mp interaction.

 

I'm hoping the engine leads to two things, one, finally getting the time to finish a decent isometric game, and secondly, others use it or improve it.

 

The engine supports:

  • Zoom (broke)
  • Rotate
  • Lighting
  • Fog Of War
  • AI Pathfinding
  • Particles
  • Collision Detection
  • Heightmaps
  • Unlimited Layers
  • Auto scaling of images to fit tiles

 

There's probably a few more that I've missed out.

 

vu5QMXJh.jpg

 

My next step is to switch out the old prototype XML reader I made for a JSON version. Then allow saving of particle effects created via this tool: http://isometric.beakable.com/particles.html, meaning the effects are no longer hard coded into the engine.

 

jVAksGWh.png

 

Any feedback would be amazing, gives me the wee bump I need to keep going :).

 

Link to comment
Share on other sites

I like where you are going there :)

Its a bit strange that you can navigate to any tile there, no matter how big the height difference is, but this is certainly an easy fix.

 

A few questions come to my mind: are you planning for slope-tiles? They will be complicated for extreme height differences, but having sloped tiles between the different heights to avoid the creation of "stairs" would add greatly to the look and feel of the map. But maybe thats just not required by the kind of game you are planning :)

 

Do you support free movement of objects on the map? In your dev build demo, it looks like the blocks of both the user and AI can only "hop" from field to field, resulting in a blocky movement (no pun intended). The demo with the moving particle emitters on jsiso.com on the other hand moves the emitters freely and not bound to a tile coordinate.

 

You mentioned that your engine currently only loads XML files as map files - do you support the tiled (mapeditor.org) format there, or is it a self-defined format?

 

 

By the way - the guy on reddit suggesting you to post here was me ;)

Link to comment
Share on other sites

Hah, hello again!

 

Slopes would definitely be a good addition. I'd need to look into the best way of doing that, I'm guessing with a sprinkle of logic you can calculate the angle and adjust the ground tile draw shape without needing a bunch of sloped graphics. But yeah just now the height maps are pretty much proof of concept for the engine, apart from being used in the other samples for collision nothing neat has been done with them as of yet. All though I've been building with a game I have in mind, I would like to get it to that stage were its capable of more.

 

The free moving is actually really easy, keeping the X & Y position of the player/AI it can just be punched through using mapLayers[0].getXYCoords(this.x, this.y); which will return the tile info the unit is on or will go on to. Only got around to adding this to the latest sample and still need to work out the method for smooth translating of position when using the implemented pathfinding but I reckon it won't be too hard.

 

I've been linked to Tiled a few times now and still plan to check it out. I'm guessing it must be good? Currently the XML is a self defined format but this will change soon enough with the plan of supporting and moving mainly over to JSON format. Maybe I should sit down and take a proper look at Tiled beforehand.

Link to comment
Share on other sites

Don't make the mistake and use tile units for the x/y position of objects instead of pixel units. I did that mistake in my tilebased engine a while ago and it was a MESS. I had to introduce two offset properties for x/y and had to tween them on every field transition. Huge mistake.

Its much easier to keep the x/y position in actual pixels and just move the object around based on that value. You can always calculate the correct tile coordinate from that value but the other way around is nearly always a mess.

 

I don't know if Tiled is "good", but its certainly one of the best, free solutions for building all kinds of tilebased maps. Its the solid standard app most devs choose. I personally don't like it that much because its too unflexible for me and I started my own map editor project, but it currently looks like I won't have much time to make any progress on it, soon :(

 

 

@Arlefreak:

Slow down your horses :)
Altough I think the project of Beakers is very promising, its a bit too early to create a support-subforum for it, when people can't actually use it to build games upon the engine/framework. Documentation has to be done, enough features have to be built. Give him a bit time :)

 

I built a tilebased engine and a generic game engine myself and don't see it even close to officially release a version of them to the public and open a subforum for them. Just give it a bit of time ;)

Link to comment
Share on other sites

Looks nice mate.  :)

 

I made quick-peek to actual git repository and branch (multiplayer) was hoping to see a bit more server logic there because I am myself also currently trying to write my own "engine" and game to top of it. Do you have plans on extending multiplayer part or any tips for good repositories to look at? (did I even find all the multiplayer code?  :D)

You also said that "easy to implement multiplayer/node support" but I can't see that happening, I have made pretty much research about multiplayer issues (latency, congestion, fairness, cheating.. etc.) and handling latency alone is simply damn hard  :huh: would really like to see server side loop example made with node.js

Link to comment
Share on other sites

Looks nice mate.  :)

 

I made quick-peek to actual git repository and branch (multiplayer) was hoping to see a bit more server logic there because I am myself also currently trying to write my own "engine" and game to top of it. Do you have plans on extending multiplayer part or any tips for good repositories to look at? (did I even find all the multiplayer code?  :D)

You also said that "easy to implement multiplayer/node support" but I can't see that happening, I have made pretty much research about multiplayer issues (latency, congestion, fairness, cheating.. etc.) and handling latency alone is simply damn hard  :huh: would really like to see server side loop example made with node.js

 

Hah you're totally right on the multiplayer/node support, when I say easy, I mean easy to add in to the engine and then share position updates or chat with other people connected with minimal additions needed to your game code.

Just now the node backend is pretty limited and doesn't tackle your list at all really. We do have the same web worker Pathfinding written into a version of the node server which we plan to try and allow for easy optional integration. The old prototype video had most player and AI logic server side which limits cheating. However when rewriting everything ground up I didn't want to begin with restrictions on where the code could run.

 

I've been major busy for the last few weeks at work so apart from small additions I haven't had any proper time to merge in the branch and iron out and last issues. I'll try and get the Node backend stuff pushed and merged tonight/tomorrow with an online sample!

 

@Arlefreak: Hah maybe one day, as Chris said, there is quite a distance for it to go first. Thanks though for saying this, gives me hope! :P

 

@Chris yeah right now you can pass in pixel positions and the engine will calculate the tile you're on. This takes in the zoom and so on. I need to really get the temperamental logic for zooming in and out on the actual focused area working. Also tie in smooth movement to the pathfinding so it isn't just hop from one tile to the next.

Link to comment
Share on other sites

  • 4 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...