Main Menu

Play Mapper (WIP)

Started by kevin, February 17, 2008, 10:26:49 PM

Previous topic - Next topic

kevin

 Testing Threaded Map Scaling

     While I've added a few more dialogs tidbits to PlayMapper, I've been tinkering with a few scaling methods .   Scaling a map is tricky, the code it trivial, just linear scaling the level to the output size.  But since you're reading map pixels (well blocks) you inevitability hit upon one of the wonderful features (cough) of the PC wonderful architecture.    That being the bottle neck of reading pixel data with the cpu from the video memory.   Which puts the brakes on the routine rather significantly.

     Clearly the solution is either not pre-fetch (read it on the fly) the bock data or pre-cache when it's first loaded it.  But if you pre-cache it on loading then there's a big dead wait for big block maps.  In the Xenon Map,  the routine pulls some 4meg of data from back from the video device.   There's actually a tipping point when it can be  quicker to read directly from the blocks, rather than pre-caching them,  providing the image you're outputting is small enough.    I,e.  Like you're making a thumb nail for example.   But if you ask me that's pretty unlikely, so i'm not going to bother :)

     So the solution i've settled upon is a threaded version of the original routine.  This hybrid version is interleaved in the app's refresh, so it actually grabbing map blocks while you're editing.  This way, when you go to preview a map,  most, possibly all the grunt work is done, and all that's left is the pixel plotting work.  Obviously the large the map the more pixel fetches the more stress the routine it under.  But the tests seem to only a few hundred milliseconds on big maps and 4meg tile data.   

   Anyway the picture bellow is the standard Xenon 2000 map demo i've testing various the methods in.  You can see the draw map with a scale overview, which looks like a big purple strip as the layer is massive 20x*1000 and mostly blank... But ya get that.

kevin

#16
Play Mapper V0.31 (Alpha)

  Here's the current warts 'n' all public alpha of Play Mapper Mini. This version includes some important bugs fixes as well as all the basic required dialogs. So project names etc can be changed after it's been saved.

  PlayMapper keeps track of the creation date/last update date and revision number of the map for you. You can't change those, even though they appear as input boxes.  PlayMapper will update revision stuff for you.

  I've also added a layer shifting tool, so you can scroll the layers around and are working on implementing the Map overview/preview window.   The preview window is currently threaded into the programs update.   I'd done this to avoid the app stalling completely when building a preview (Since it's not quick).   You can test the preview window by hitting the ENTER key.  Be WARNED THOUGH, once you enable it, you can't disable it at the moment.

I'm still tinkering with it. What i'll probably do add and extra over window and use it for quick navigation as well around bigger maps.  (If there's time)
 
  Unfortunately  this round of updates will have to conclude this Sunday, so whatever state it's in then will be it for the time being.    What I'm hoping to get done is the overview window and some import/export stuff.  

  Control wise the editor functions completely from the mouse.   Left button select, right button de-select/abort



Included Stuff
 * Basic tools (Tile,Line,Box,Circle,Brush)
 * Block import
 * Multi tile Selection
 * Multi Layer Support
 * Layer Tools (Resize/Scrolling)
 * Brushes
 * Context driven pop up menus (right click)
 * Load/Save Format (hunk based.)  
 * Undo support (100 or so levels)

 * Map Preview / Overview   (TESTING IN THIS VERSION)

 

To Do List

 * Mini Map Preview window
 * Import Layer/brush
 * Add some future proofing for PB1.7x map libraries


Future (only if there's demand)

 * Animation Support
 * optimize layers
 * Block Export (combine, stream/optimize)



Download
  Old alpha removed.



Note

   Maps saved in this version should be ok to import into future editions.  So feel free to have go at laying out some test maps.  You never know when this will be updated again.




kevin

#17
Mini Map Example V0.32

    Here's a bit of picture of the progress on mini map feature. The mini map is show through a flexi window, so you can resize the view while it refreshes. The refresh is threaded, so it's not instant, but it's ok for what it is. Still got a few issues left to iron out, mostly with maps with more than one layer. Although I'm not too sure they're worth worrying about. Anyway, here's a piccy.


ATLUS

Excellent work!
in the following version will possible do different size tiles on one map?

kevin

Quote from: ATLUS on February 23, 2008, 02:14:46 PM
Excellent work!
in the following version will possible do different size tiles on one map?


Not possible.

kevin

#20
Play Mapper V0.33 (Alpha)

  Here's the current warts 'n' all public alpha of Play Mapper Mini. This version adds support for the MiniMap overview as well brush pack loading/saving.

  Brush Packs are PlayMappers internal brush format and be loaded from either a PlayMapper Bush pack file, or from other PlayMapper maps.



Included Stuff
 * Basic tools (Tile,Line,Box,Circle,Brush)
 * Block import
 * Multi tile Selection
 * Multi Layer Support
 * Layer Tools (Resize/Scrolling)
 * Brushes
 * Context driven pop up menus (right click)
 * Load/Save Format (hunk based.)  
 * Undo support (100 or so levels)
 * Mini Map Preview / Overview

 

To Do List

 * Import Level as Layer/Brush
 * Add some future proofing for PB1.7x map libraries


Future (only if there's demand)

 * Animation Support
 * optimize layers
 * Block Export (combine, stream/optimize)



Download
  old alpha removed.




Note

   Maps saved in this version should be ok to import into future editions.  So feel free to have go at laying out some test maps.  You never know when this will be updated again.



kevin

#21
Play Mapper V0.35 (Alpha)

  Here's the current WIP alpha of Play Mapper Mini. This version corrects some bugs with the previous edition, and includes some importing features, auto backup (on save project),  more dialogs (brush info/naming) and helper messages or the user.   Making this version about 95% fully functional (Apart from from cosmetic/design things :)).  There are some black holes (missing features) but it's now is pretty useful state.    I've only  got one thing more to add which is the Level import to layer feature.  Which will hopefully be added later on today.  Then it's up to you guys to Beta test it.



Included Stuff
 * Basic tools (Tile,Line,Box,Circle,Brush)
 * Block import
 * Multi tile Selection
 * Multi Layer Support
 * Layer Tools (Resize/Scrolling)
 * Brushes
 * Context driven pop up menus (right click)
 * Load/Save Format (hunk based.)  
 * Undo support (100 or so levels)
 * Mini Map Preview / Overview
 * Import Level (packs) as Brushes

 

To Do List

 * Import Level as Layer
 * Add some future proofing for PB1.7x map libraries


Future (only if there's demand)

 * Animation Support
 * optimize layers
 * Block Export (combine, stream/optimize)



Download

  old alpha removed.   Try the Play Mapper Tools board.




Note

   Maps saved in this version should be ok to import into future editions.  So feel free to have go at laying out some test maps.  You never know when this will be updated again.




kevin

#22
Play Mapper V0.37 (Alpha)

  Here's the current WIP alpha of Play Mapper.   This version corrects some bugs (delete layer + incorrect map sizes issues)  from the previous edition, and includes the more importing features, such as Import Level As Layer.      Which means V0.37  includes  the core functionality I was aiming for in this update   The main thing missing really is a good tweak of  the cosmetics, .


  Note:  While it's functional,  it hasn't really been tested in real world scenarios.  So I'd expect some bugs (big & small) , but we won't know until you get road testing it !  - If you don't,  we'll never know !  




Included Stuff
 * Basic tools (Tile,Line,Box,Circle,Brush)
 * Block import
 * Multi tile Selection
 * Multi Layer Support
 * Layer Tools (Resize/Scrolling)
 * Brushes
 * Context driven pop up menus (right click)
 * Load/Save Format (hunk based.)  
 * Undo support (100 or so levels)
 * Mini Map Preview / Overview
 * Import Level (packs) as Brushes
 * Import Level (packs) as Layers




Future (only if there's demand)

 * Animation Support
 * optimize layers
 * Block Export (combine, stream/optimize)
 * Add some future proofing for PB1.7x map libraries



Download

  old alpha removed.   Try the Play Mapper Tools board.


Zenn

Since animation is still on your to do list, does anyone know how I can simulated basic animated tiles, (without consuming to much processing).

kevin

Play Mapper V0.38 (WIP)

   So after a 4 month break from the this project, I'm back tinkering away at it.  My first priority is to add some animation support, since it's missing from the last alpha.  Beyond that,  I'm hoping to get some collision,  entity and possibly paths support implemented if there's time.  But we'll see.



kevin

Play Mapper V0.38 (Animation WIP)    

    Animation is the first port of call.  While adding it shouldn't be difficult, the worry at this point it's more about fleshing out the functionality to make it the end result easy on the user.   Thus far, all I've got is a few new windows and bunch of drawings on paper.   The current idea is to add a second tile palette for animations.    You'll be able to select tiles from either.  Given that tiles are individual, this means that multiple selection won't be viable from the animation palette.    But there's nothing stopping you from dropping any combination you want onto the map, then grabbing it as brush. 

    The main drama is going to building the animations i think.  So we'll need a special window to let the user manage each animations tile sequence, as well as speed and anim type.  Given that the tile palette supports multiple tiles,  then in theory the user could simply grab the selection area over the animation sequence (assuming the tiles are drawn in order ) then drop it on the Animation editing window.  Making creating an animation almost a one click affair.    Would still need some tools to manage insertion & deletion though.   

    Previously I mentioned adding entities support.  What's that ?  -  An Entity is an object or character descriptor within the games world.   So users will be able to define (hopefully) a list of entities, then place them through out each map.    What this means is that you can initialize character starting positions at design time.  This information will either be housed inside the map or externally.   The map loading frame work will take care of loading it. All you need to do is run through the object list and initialize your game objects.     Turning PlayMapper into a crude one stop game design tool. 


thaaks

Quote from: kevin on June 17, 2008, 11:56:35 AM
Play Mapper V0.38 (Animation WIP)    
Great that you're back on Play Mapper Mini. Just in time for the competition me thinks  ;)

Quote
    Previously I mentioned adding entities support.  What's that ?  -  An Entity is an object or character descriptor within the games world.   So users will be able to define (hopefully) a list of entities, then place them through out each map.    What this means is that you can initialize character starting positions at design time.  This information will either be housed inside the map or externally.   The map loading frame work will take care of loading it. All you need to do is run through the object list and initialize your game objects.     Turning PlayMapper into a crude one stop game design tool. 
Good idea!
As usual I have one more proposal: individual attributes for entities. I know that it will complicate creation of entities but it's a nice feature to have.
Say you place a bunch of monsters in your map. But the first monster should have a health of 100, the second a health of 80 and the last a health of 200.
So instead of just running through the object list and initializing my game objects it would be perfect to run through the object list, iterate over the attributes of each object and use all informations to initialize my game objects.

The same mechanism would also be great for the map itself. You could put the playing time for this map into an attribute, or attributes like gravity to use in this map, score for finishing and so on.

Just my 2 cent,
Tommy

kevin

QuoteAs usual I have one more proposal: individual attributes for entities. I know that it will complicate creation of entities but it's a nice feature to have.
Say you place a bunch of monsters in your map. But the first monster should have a health of 100, the second a health of 80 and the last a health of 200.
So instead of just running through the object list and initializing my game objects it would be perfect to run through the object list, iterate over the attributes of each object and use all informations to initialize my game objects.

   That's the objective.    Each entity will be a block of data.   How the user interprets this is up to them.  Some could be tagged as characters, some events, timers, zones,  path trigger etc.. 


thaaks

 ;D  ;D  ;D

Sounds perfect!

Thanks,
Tommy

kevin

  Play Mapper V0.39 (Animation WIP)

      Still tinkering away at animation code between other jobs.  The good news is that's actually working, well,  to a point.  While you can't select what animation you what to draw with,  you can actually add new animations  from the tile selection window to the anim buffer.   Even in it's current state,  it feels surprisingly straight forward to do. You just left click on the first block (on the Tile section palette) then right click to the size it.  Just like you would when drawing.    So If the animation blocks are in order.    Then all you need to do is hit the as add animation drop down and it's done.

     To display the animated map, you use the layer controls.  These are little green lights.  Just right click on those and the layer properties will appear.  Here you can select is the layer is visible, transparent  or animated. 

       So far i'm mainly working on the back end code, the stuff that lets Play Mapper manage the animations,  which is mosty done now. The next task is to hook it up the gui components.   While it's not going to win any beauty competitions any time soon,  it should feel ok to use.  Could be better, could be worse... :)