Page 1 of 1

ISOMAP GENERATOR v4.6 With A* Pathfinding (Check it out!)

PostPosted: Tue Oct 04, 2011 6:04 am
by EvanBlack
This is Version 4.6 of my Isometric map generator. I will be updating it as I get more done. Including better AI path finding, and more.

Soon to come:

    Better A* Pathfinding
    Wall Tile Placer (with auto-transparency if player behind wall)
    Stairs Tile Placer
    Level Start Node
    Teleport/Level Change Node
    Level Load Activation Regions
    Read Map From File
    Screen Nodes (for menus)
    AND MORE

Explanation of Nodes:
The map is a 2 dimensional array which is stored as map[][]. A for loop runs through the map placing nodes (map positions) at specific Game Coordinates. Then saves the game coordinates into arrays. The map nodes are just stored numbers which can be iterated through by looping functions and used for simpler movements and easier finding of points on the level. The node coordinates then become "World Coordinates" (coordinates of the entire level used for movement). So we end up with 3 types of coordinates.

GAME COORDINATES: These are the coordinates of Game Editor. 0,0 starts at the + in the game editor.

WORLD COORDINATES: Also can be called Node Coordinates, these are the x,y of each node in relation to the first node (0,0).

SCREEN COORDINATES: Are not used yet in this demo. These are the Coordinates of the View. Later I will make screen nodes to place menus.

Movement in the game is done by three functions (for now). These functions do different things. One uses the node number and goes to node number. The second uses the node's x,y and goes to the node. The third is the MoveTo() function, which takes: the actor to move, the node's X game coordinate, and the node's Y game coordinate, then moves the actor. The last thing these functions do is set the Actor's node x,y variables to match the node's x,y that it was move to in World Coordinates. This way we just have to increase the Actors' node X and Actors' node Y to find the next node to move to.

That's all for now.

NOTE: Unwalkable/Unused nodes are given NODE COORDINATES -1,-1. Later this will change and nodes will be given a score, score -1 will be unreachable.


Explanations of Tile Placement and Setting up maps:
To start, the map is stored in a 2D array of integers. This array holds the data of: Where to place the tile and Which animation to use.

The tiles start at ANY number you want them to start at. The unwalkable tiles start at 255. (This can be changed in CreateMapIso() function, just look for the number 255 and change it to any number you wish, but make sure that its not 0 or there will be no nodes placed and all tiles will be unwalkable.)

For sake of simplicity and use with this demo, all tile animations start at 0 and unwalkable tiles start at 255.

When making your map, you just change the number in the position you want to set your tile from 0-9999 (not actual limit). That's it.

Tiles:
When making your game tiles, the only actor you need is ISOTILE. Then name your animations "tile#" without quotes and where "#" = the tile number. For an example look at the tile actor in the demo. Check animations.

Then any tiles from 0-254 will be considered walkable and will have nodes created for those tiles. Any tiles 255+ will be considered unwalkable and no node will be created.



The tile I used was from Isometric Experiment created by GrimmDingo. His tile made it very easy for me to make this. Thank you.

ISOMETRIC MAP GENERATOR v2:
Simple Follow AI
Automatic Isometric Tile Placer
Isometric movement
Map from Array
Tile Sorting (Just name your tile animations tile0,tile1,tile2,tile3, ect...) Tile255+ is unwalkable.
Renamed some functions and variables

UPDATE 2.1
Removed Ghost Node number 99

UPDATE 2.2
Unwalkable tiles start at 255

UPDATE 2.4
Lava Tile
Mouse Click Movement
Better Commenting
Cleaned up script

UPDATE 4.3
Moved all the script into a single section, added heavy commenting
:arrow: Semi-Functional A* Pathfinding (It works...)
AI STATES
Larger map to show cripplingly stupid AI
New screenshot

UPDATE 4.5
BETTER A* Pathfinding
New Movement Function (Still working on getting it smooth)
New Functions
Does not use MoveTo()
Orphaned view
BOTH AI's Move
New AI Sprite
More function text
Updated node placement so that it doesn't change when view is moved
More that I can't remember.


UPDATE 4.6
Smooth Movement :D
New Map
New Screenshot

Re: ISOMETRIC MAP GENERATOR

PostPosted: Tue Oct 04, 2011 4:54 pm
by lcl
Sounds interesting!
I will try this soon. :)

Re: ISOMETRIC MAP GENERATOR v2.4

PostPosted: Wed Oct 05, 2011 1:29 pm
by lcl
Pretty nice!
Good work! :)

I give you 1+ for this!

Re: ISOMETRIC MAP GENERATOR v2.4

PostPosted: Wed Oct 05, 2011 7:16 pm
by EvanBlack
Thanks. I am working on the pathfinding. But its not working for me XD.

I know what I have to do kinda. I think I am going to prepare some psuedocode before I try again. I can't get it to move along the tiles. It just goes straight to the end because there is no flow control, so it skips to the end and moves to that tile.

Re: ISOMETRIC MAP GENERATOR v2.4

PostPosted: Wed Oct 05, 2011 9:06 pm
by SuperSonic
Very cool. I like this a lot. +1 :wink:

Re: ISOMAP GENERATOR v4.3 With A* Pathfinding

PostPosted: Thu Oct 06, 2011 8:45 am
by EvanBlack
Thanks. I am trying to develop a RPG Game Maker. The pathfinding was killing me. I couldn't figure out why, (and still can't) I was getting so many errors. But I finally worked (most of) the bugs out. The crippling ones anyway. Now its just has as much intelligence as a door knob that can go around corners.

Re: ISOMAP GENERATOR v4.3 With A* Pathfinding

PostPosted: Thu Oct 06, 2011 10:07 am
by akr
I am a big fan of isometric. Thanks for doing this. Will check out in detail soon!

Re: ISOMAP GENERATOR v4.3 With A* Pathfinding

PostPosted: Thu Oct 06, 2011 4:23 pm
by Hblade
Amazing!

Re: ISOMAP GENERATOR v4.3 With A* Pathfinding

PostPosted: Thu Oct 06, 2011 7:19 pm
by EvanBlack
Thanks everyone! :D It would be a HUGE!!!! help (if you want) if you can try to work out some of the bugs or even add your own elements to the thing. Like I said I am trying to make an Isometric Game Maker. To be used to make thousands of types of isometric games. Right now, I am going through my list of required items for my game and throwing in all the needed pieces for the open source creator. (my game content will not be released open source due to copyrights to the artist and myself)

But I need to add still many, many things. And work out the bugs of these. The generator will keep evolving and advancing each day that I can work on it. New bugs worked out, new features added. But if you have anything you would like to add yourself, or if you can fix any glitches that you find and can explain to me in detail how you did it. It would be great. This is a learning process for me because I have only been using Game Editor for a week and it is more fussy than a two year old.

Right now there is a major problem with the pathfinding... it is stupid. The pathfinding follows a normal 2D array of nodes. Practically a square grid of center points. Then uses the node points to find the game coordinates to move too. But for some reason.... it doesn't always make it to the end, or it doesn't even find a correct path.

Sometimes it gets stuck in loops and returns to its original starting point.

One of the bugs comes from when you click the mouse, it has to plot a new path from the LAST starting point it was given if you don't let it finish the path. So I need to fix that. I am going to try to use states to do it.

Another problem I have is that I don't have a way to read in maps from a file. This has become necessary! The maps become large and its too hard to edit them by hand. So I need to make a map generator that lets you decide a mapsize, generate the map of normal tiles, then as you click tiles they change through tiles you have, or if you set the tile number in a text box it changes it, or using buttons to change tiles. Then a save button to save the map as a 2D array to be used by the game.

Re: ISOMAP GENERATOR v4.6 With A* Pathfinding (Check it out!

PostPosted: Sun Nov 13, 2011 12:11 pm
by MrJolteon
[EDIT]
Never mind, found it out.

Re: ISOMAP GENERATOR v4.6 With A* Pathfinding (Check it out!

PostPosted: Sun Nov 13, 2011 12:40 pm
by MrJolteon
When adding tiles taller than the grid size, they will be off the grid. The tiles behind it will sometimes be above it.
Is there any way to fix this?

Re: ISOMAP GENERATOR v4.6 With A* Pathfinding (Check it out!

PostPosted: Wed Jan 16, 2013 10:45 pm
by EvanAgain
I had that fixed in an updated version. The problem was based on the z-axis, each tile or object has to have a certain setting for the z-axis which can be tweeked until it is set. Then once set will no longer be an issue because the tile it is set on controls the z-axis modifier.


Objects give it a sort of 3-D iso feel rather than being completely 2-D. I, also, have to work on getting a lot of things done with this so that it can work for a ISO game engine as I originally wanted it to be. The path finding is buggy because I am a novice at it.

Honestly, everything I am doing here is my first attempt and I am just learning as I go. I actually have to try to get the newer copy I had if I can still get it, but my internet connection is being slow and ridiculous. I am not sure what the problem is.

You don't need to use floating tiles, or objects, and you can just use normal tiles to make "fake" walls and "fake" obstruction. Just make the tile impassible and design it to perspective.

I just got back into working with GE. So I should have time to work on this project again. I am also looking for anyone who is interested to help me with this code.

Anywho, so much to do, I know this was like over a year ago. But I am back.

Re: ISOMAP GENERATOR v4.6 With A* Pathfinding (Check it out!

PostPosted: Thu Jan 17, 2013 1:18 pm
by MrJolteon
...That took you a while. It was for a project I cancelled a LONG time ago.