Project CoinPurse Isometric Engine
First, I will start off with this is a discussion on the development of an Isometric engine that I am currently working on as well as isometric and it's use in games as well, but given I am having a lot of success with it so far I want to make it available for other forum member's projects once I have it completed. The design is aimed at specifically Tactic style battle maps, where the map isn't going to be a large over world map, but instead a small section that battles take place in, like nearly every tactics game. With this in mind you can add in a few more effects and manipulation then you could if the map was really large and not take the performance hit.
Edit: Updated Information
Currently there is no ETA on when it will be available, I am currently waiting for some of the newer functions and optimizations coming with GM:S 1.3 so I can streamline certain parts of the engine further so it will be much more efficient. Using early access will get me a heads up on it, but it's still not really usable for everyone even then. As there is no ETA on GM:S 1.3 itself (/cries) I can't say how long but I really want to use the newer features with that version, but if push comes to shove it can be optimized later.
You can see a few more screenshots on my imageshack link found here: https://imageshack.com/a/rrVq/1 there as some graphics there as well I used to explain how I handle depth which I will make a blog post on soon using those so try not to pay to much attention to those .
Older in-editor screenshot of tile stacking.
Some notes on how the engine currently works:
- Everything is setup in a 2D grid and uses this grid for movement, collision checking, or pathing options. This is translated based on the grid cell size into isometric coords then is drawn to the screen. While using the mouse or moving a character everything is being translated to appear in the correct positions. This is great for using GM's built in path finding and was a major focus to have it compatible to make it much easier to implement movement.
- Mouse coordinates are translated in reverse to get it's current position on the grid and thus the position in the isometric field. There are options to tweak this so players/ dev's can change how the mouse behaves over the screen when it comes to selecting tiles.
- While movement is based on grid-locking you can easily move about like normal but the engine relies on the fact stuff is locked to a grid to maintain certain effects such as grass on a tile overlapping a character on that tile and free movement can cause a few glitches. Depending on the size of your isometric tiles you will have range of effective depth per tile for effects like grass or the player, so there is freedom for multiple effects per tile and order in correct depth.
- As with any isometric engine it's hard to take into account anything larger then a single tile when it comes to depth. I have a few tricks I think may work but again it will still be an issue.
- The terrain IS tiles and because we have everything locked to a grid it is not hard to find the tile you are currently on, since on that space we know our depth and our position we know the tiles as well and is a quick look up
As the status update I made the other day mentions, I came across a fun effect when I was messing with terrain smoothing functions. This can be found here: http://host-a.net/u/...ult-18.104.22.168.zip
This is just a demo of the effect I mentioned, but you can mess with the terrain a little. It is an older build and things have changed with how some aspects are handled mainly the actual tiles. But some instructions on how to use:
"Left Click": Raises terrain
"Right Click": Lowers terrain
"Enter": Disables/Enables the Shockwave constant refresh
"R": Randomizes terrain
"T": Flattens Terrain
"P": Applies a first pass of smoothing on the terrain (shockwave works by constant running this script)
When raising or lowering the terrain you are only moving the tile at that position! So it will not fill in under it. Remember this is more a tech demo and proof of concept.
One of the harder things to do is add water in an isometric engine. You can place standard water tiles to be sure and work fine but everyone always asks for reflective water.
This is an older screenshot and have currently changed how I achieve this but the effect is still the same, using xygthop3's ripple shaders found here http://gmc.yoyogames...howtopic=586380 big thanks for those, and some surface manipulation+texture I can get water that will ripple and maintain depth depending on whats in front or behind the water. I am still heavily working on this as there are still some bugs but I will make note about the main thing: Reflections. You can't simply "flip" and isometric sprites and have a reflection, try finding an isometric image and making a copy and flip it to see what I mean. Because of the angle we use it's not a real good way to do so. I "cheat" on my example above by the fact the tiles are very simple . It really depends on how you have your sprites made, some isometric sprites with a little modification pass for reflections and some obviously do not xD. I can not guarantee that this might make it in a public release simply because I am not gonna say there is water with reflections and get bombarded with messages saying peoples reflections look weird xD.
I also have working animated water using a strip of backgrounds without a real performance hit (my setup could handle 5k tiles being animated at normal speed) and given the aim is for WAY smaller maps it should be a feasible alternative.
The engine is being made for a personal project and performs the functions needed currently, but I want input from the community on what an ideal engine for them might be.
What kind of features would you like to see?
What might you want to be able to do on a combat map in a tactics game that you have seen in other games or perhaps you haven't seen?
Would features like the ability to go over and under terrain like bridges and arches be something you'd want? This pertains to using the tiles int he map and not other objects in the game to simulate the effect.
What about water? What are some things you'd love to see differently done?
Terrain features? Map editors? with effects like Noise/Perlin? Hill tools? Randomized terrain? importing height maps?
What kind of engine features would you like to see that helps make it easier for your end?
I appreciate any input or idea's you may have :D
Edited by True_Predator, 19 September 2014 - 10:40 PM.