More Efficient

Posted by Scott_AW on March 23, 2007, 4:42 a.m.

With more time to kill, I found myself a chance to work more on my map maker. One challanging problem was the massive amounts of memory it original started to suck out of my system. It start out fine, then as you load maps and so on it would climb from 40meg usage up to 200+ mb of ram.

Managed to isolate some of the possible causes and found out a definate cause. One was a surface drawing phase for when tiles are placed or the maps changed. Turns out that it was creating a new image every time, and thus bumping up the memory usage about 2-4MB.

Another was improper clearing of the datagrids when a new one was established.

As I currently have it, only one map is loaded into memory in a global single array that is broken down into individual data grids. Theres a 20 layer limit currently, each layer being 64 apart. All walls and floors will be sized 64x64.

Objects, lights, npcs and other non-wall/floor objects will be stored as lists instead of grids, allowing for unlimited(in theory) placement of said objects.

I also have parts of the database creation windows done up, but nothing functional.

Heres an idea of whats going for the Database editor.

http://64digits.com/users/Scott_AW/database_concept.jpg

You may recongonise the character from my prior project. He and other characters I had drawn up are composed of pieces(like paper dolls) and this will fill a role in customizing NPCs in my future plans.

Currently all one can do is name a map, create sub maps and place walls/floors/cielings on the layers of selected map. One layer is displayed at a time, but holding CTRL will show the layer below the current and ALT will show the layer above the current, offseted and semi-transparent. It kind of creates a isometric look.

I'll provide another demo just so you can check it out.

You start by entering your worlds' name, then pressing 'create new world'. After the popup screen vanishes you simply click the caption box and give the room a name(not mandetory) and either press the save button below or simply press enter after typing.

You can select diffirent world areas by clicking on the mini map or adjusting the world X & Y values located below the mini-map.

To draw tiles to the map you must first click on the yellow tab below called 'structures' then you can change the type from wall/cieling/floor/ cieling+floor. Currently there is no undo and clicking a tile over a tile simplly replaces it. I do plan that when you add a floor to a cieling it will automaticly convert it with proper textures.

You'll also noticed that the wall icons are two-tone. These colors represent the texture's index color. Also selecting a tile to either not be solid or not be visible will change how they display on the map. Dull colored stands for passable/not solid, and translucent for invisible tiles.

Heres a screen shots with some notes added on.

http://64digits.com/users/Scott_AW/editor_map_samp.jpg

Pressing Reset button will reload the map as it was last save. Be sure to save your maps after editing. Theres a indicator next to the caption entry spot that is blank when no map exists, yellow when its saved and red when it needs to be saved.

>–> File can be obtained here. <–<

http://64digits.com/users/Scott_AW/editor_build5.zip

Fixed problem leading to slow tile placement.

This is for your jollies.

Now I do not recommend you run this on any system with less then 512mb of ram or you'll be in for a freeze. I still need to work on file loading and a progress bar system for longer loads.

As always I welcome your comments.

Comments

frenchcon1 17 years, 9 months ago

Should i wipe my feet?

Scott_AW 17 years, 9 months ago

Yes.

frenchcon1 17 years, 9 months ago

k.

Jetstar 17 years, 9 months ago

How much time do you have?

Scott_AW 17 years, 9 months ago

About 4 to 5 hours in a given week.