English Amiga Board


Go Back   English Amiga Board > Other Projects > project.Amiga Game Factory

 
 
Thread Tools
Old 13 July 2006, 00:28   #1
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
my own pet project: Abime MapMaker

Seeing that the Amiga Game Factory is becoming very alive and I'm making some progress on my own project I thought I'd share my progress.

This project got my interest because of another thread:

http://eab.abime.net/showthread.php?t=24266

Quote:
By bippym:

Maybe someone could code a little map generator [IMG]images/smilies/smile.gif[/IMG]
Well I'm doing just that

The main goal of this editor is to get some l33t sk1llz with desktop application development (I'm an enterprise app kind of guy) and to be able to easily create maps for Captive the way I want too. Not only that, but the editor will save to a portable XML format that can either be used directly or can easily be converted to be used as the base for a game.

I'll start off with a screeny of the current state of the editor:




It's only an early development stage (so the appearance may still change radically), but quite a lot is already working to my own surprise. I can fluently edit each floor, add multiple floors to a single map (each with equal size), import icon sets (icon set = zip file with 16*16 PNG icons, you can specify a different icon set for each floor if you want), the gui updates according to it's state (like menu items disabling when they cannot be used) and the app is already filled with notification messages and such to help you understand what is going on and warn you when you are about to do something stupid.

[ start boring coder geekishness ]

The best thing is that I managed a Model View Controller pattern, so all my application logic (for example map state changes) is completely seperated from my GUI logic (for example map drawing). The app is basically built such that:

1) gui generates an event ("mouse dragged over cell X,Y")
2) controller picks up the event ("HE DRAGGED! HE DRAGGED!")
3) logic action is executed ("update icon in cell X,Y")
4) an event is generated ("cell X,Y was updated") and caught by a GUI listener, which then updates itself according to the event that was received, for example by redrawing the map.

This allows me to quite easily plugin new features or rewire old ones without the need to rewrite whole sections of code and hunt through endless gobs of GUI event handling code.

[ end boring coder geekishness ]


I've put all the TODO's for the project in a seperate document for easy updating and viewing. You can find it here:

http://users.insane-hq.org/~gimbal/m...r/mm_todo.html

Last edited by gimbal; 13 July 2006 at 17:19.
gimbal is offline  
Old 13 July 2006, 00:53   #2
Zetr0
Ya' like it Retr0?
 
Zetr0's Avatar
 
Join Date: Jul 2005
Location: United Kingdom
Age: 49
Posts: 9,768
That has a lot of potential big G

After we sort out the EOB formats I would love to discuss CAPTIVE map generation a little more

and it could become as you say a multi UNIVERSAL map maker / editor for various retro and forthcomming games through the simple use of XML [plug ins]

i like it

upload, create and edit your favourite maps for your favourite games ONLINE

Last edited by Zetr0; 13 July 2006 at 01:38.
Zetr0 is offline  
Old 13 July 2006, 00:59   #3
Marcuz
Registered User
 
Marcuz's Avatar
 
Join Date: Jun 2002
Location: .
Age: 48
Posts: 5,562
i cheer up this project, very good idea
btw, about the grid: it could be useful that way or you can go completely off the path with a paint mode, not geometrical precise but cool to see, like an hand made map (just a fool suggestion)
Marcuz is offline  
Old 13 July 2006, 02:49   #4
BippyM
Global Moderator
 
BippyM's Avatar
 
Join Date: Nov 2001
Location: Derby, UK
Age: 48
Posts: 9,355
This is wicked project Gimbal and I can't wait to properly start mapping Captive (not by playing either so it'll be quicker)

Quote:
Originally Posted by Zetr0
After we sort out the EOB formats I would love to discuss CAPTIVE map generation a little more
EVERY Captive level is generated by the map generator from a 16bit seed number (starting at 00001 upto 65535) that's the max number of levels.

We'd need to resource that and figure out how it decides which tile-map it uses, how to structure the level, where the codes are (which are 8 and 16bit respectively)...

Anyway this is for a later project and is hopefully my future baby
BippyM is offline  
Old 13 July 2006, 13:26   #5
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
Ha, this is the first time that I start a project that people actually want to use That gives me just the right amount of motivation to finish this sucker ASAP. And what do you know? Tomorrow is my last day of school, after that I have six weeks all to myself...

Quote:
upload, create and edit your favourite maps for your favourite games ONLINE
Alas, it's an offline app since I simply loathe applets, and you don't have access to the local filesystem from an applet either (would be fun, go to a webpage with an applet that then reads your address book and uploads it to a server, or formats your harddrive...) But heck if you want to put your stuff online I can always include an FTP upload function to do just that. And I can create a webstart link which will automatically install/update the app as well, provided that you have a JRE properly installed.

Quote:
editor for various retro and forthcomming games through the simple use of XML [plug ins]
Yes, I should make it plugin based. Each plugin would be able to read it's own stuff from an XML level file and write it back. Only thing is that I need to develop dynamic GUI stuff that you can bind to the plugin... that's one that needs some hard thinking on my part The Netbeans IDE has done this very nicely and also through XML config files, maybe I can get some ideas there.

Quote:
btw, about the grid: it could be useful that way or you can go completely off the path with a paint mode, not geometrical precise but cool to see, like an hand made map
I'm keeping it on the could have list. I'm painting the map myself, so I can always paint a grid myself as well.
gimbal is offline  
Old 13 July 2006, 13:30   #6
keropi
.
 
Join Date: Oct 2004
Location: Ioannina/Greece
Posts: 5,040
it rocks , keeps coding! a very usefull tool!
keropi is offline  
Old 13 July 2006, 13:31   #7
Zetr0
Ya' like it Retr0?
 
Zetr0's Avatar
 
Join Date: Jul 2005
Location: United Kingdom
Age: 49
Posts: 9,768
I tell you what Gimbal, once i get things on the ball here, and catch up a couple of things the wifes been going on about arround the house, it would be a pleasure to work with you on this.
Zetr0 is offline  
Old 13 July 2006, 14:53   #8
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
What do you all think about the keyboard edit mode? Is there anyone that would want such a feature?
gimbal is offline  
Old 13 July 2006, 15:14   #9
BippyM
Global Moderator
 
BippyM's Avatar
 
Join Date: Nov 2001
Location: Derby, UK
Age: 48
Posts: 9,355
Here is my take on the map thing and some features I'd like to see..

- Deluxe Paint type editing. Select floor/wall icon (would be a colour in DP) and then paint it on how you see fit. Left mouse paint, right mouse erase Pixel Map Making lol

- A useful fill option. So I could for example draw an outline of say the pathway and fill it in

- Support for movable walls etc.. Captive features these in abundance

- Keyboard support for quick and dirty editing (as you say). But I'd like to for example give it my x,y,z co-ords and it'll plop the tile there. Also maybe an x,y,z to x1,y1,z1 and it fills the square area with the tile.

- Configurable map pieces. I'd like to resize some of the Captive gfx and use that directly. Then if it looked silly I could load in a different tile/icon set and the map is updated to reflect. Also drag and drop icon/map tiles so I can swap the tile locations about and the program asks if you want to swap the tiles in the map. If you was to select yes the tiles in the actual map are swapped. If you select no the ID number for the tiles are swapped so that the map appears to look the same.

This could be expanded and one could mark (Shift or ctrl select or drag mouse) and then tiles selected are swapped only

- An option to include enemy patrolling paths. Generally in Captive most enemies home in on the player and head towards him (the player must be within a certain distance). Some enemies (postman, scientist) don't do this unless provoked. They simple follow a set path.

- Option to load in say 10 maps for different levels and then cycle through them at the touch of a key/mousebutton

- Printing support with some properly useful resizing. So what you print looks the same as what is on the screen and doesn't lose too much detail (This is obviously depenedant on a few factors). Also the option to SPAN paper, this would be useful for printing at the full size.

- Grid overlay is an important feature and should be included. Though the grid lines should be configurable in width and colour.

- Scalable. It'd be nice if you could scale the map and it'd keep the layout etc.. make it bigger, smaller (16x16 to 32x32 etc). This would need the map to be saved in it's own format for future support.

- PNG saving should be an export feature as other formats could then be added (IFF-ILBM )

That'll do fir the time being.. I'm sure I'll think of more
BippyM is offline  
Old 13 July 2006, 16:17   #10
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
Quote:
- Deluxe Paint type editing. Select floor/wall icon (would be a colour in DP) and then paint it on how you see fit. Left mouse paint, right mouse erase Pixel Map Making lol
Right mouse erase would be nice, but then I won't be able to include a context menu for plugin options. A configurable key + left mouseclick to erase however sounds like a good idea. An eyedropper tool is another good idea.

Quote:
- A useful fill option. So I could for example draw an outline of say the pathway and fill it in
Flood fill, I already have that in my list

Quote:
- Support for movable walls etc.. Captive features these in abundance
That's game specific and thus a plugin feature. To begin with you can create an icon for a moveable wall.

Quote:
- Keyboard support for quick and dirty editing (as you say). But I'd like to for example give it my x,y,z co-ords and it'll plop the tile there. Also maybe an x,y,z to x1,y1,z1 and it fills the square area with the tile.
You could increase the cursor size to fill a square area. I wonder why it would be easier to have to input coordinates though, navigating and then mashing space seems a lot less effort.

Quote:
- Configurable map pieces. I'd like to resize some of the Captive gfx and use that directly. Then if it looked silly I could load in a different tile/icon set and the map is updated to reflect.
That would involve declaring static tilesets so that the app can recognize each icon, the app as it is allows any tileset you want of any size by mapping the filename of an icon to the cell and the zip filename to the floor. What I could do is allow you to reload an iconset, so you can replace the zipfile and then have the app update the gfx from it.

Quote:
- An option to include enemy patrolling paths. Generally in Captive most enemies home in on the player and head towards him (the player must be within a certain distance). Some enemies (postman, scientist) don't do this unless provoked. They simple follow a set path.
Again game specific and thus a plugin feature, but now I do realize that simply declaring a floor may be to limiting as this won't allow the placement of waypoints, items and critters on top of map tiles. Each floor should consist of different layers that can be switched on and off, each with possibly a different icon set.

Quote:
- Option to load in say 10 maps for different levels and then cycle through them at the touch of a key/mousebutton
Hm, sort of a project workspace. I like that idea.


Quote:
- Printing support with some properly useful resizing. So what you print looks the same as what is on the screen and doesn't lose too much detail (This is obviously depenedant on a few factors). Also the option to SPAN paper, this would be useful for printing at the full size.
I could try to hack that, but Adobe Photoshop will ALWAYS be better at it. Printing is a real bitch to implement and can take way too much time to get right. I'd rather have you export the map as an image and then print it the way you like in your favourite image manipulation tool.

Quote:
- Grid overlay is an important feature and should be included. Though the grid lines should be configurable in width and colour.
Noted. Everything should be configurable.

Quote:
- Scalable. It'd be nice if you could scale the map and it'd keep the layout etc.. make it bigger, smaller (16x16 to 32x32 etc). This would need the map to be saved in it's own format for future support.
You mean zoom support? I could include a double pixel mode such as winuae has, I don't see why you would want to go any further unless you like to count pixels.

Quote:
- PNG saving should be an export feature as other formats could then be added (IFF-ILBM )
Again, Photoshop is way better at saving in other formats and I believe it allows you to convert multiple images at the same time. PNG is widely accepted, has good compression and is still lossless, that's why I chose it. If you want to convert to another type you are free to do so with your favorite image manipulation tool.
gimbal is offline  
Old 13 July 2006, 16:52   #11
BippyM
Global Moderator
 
BippyM's Avatar
 
Join Date: Nov 2001
Location: Derby, UK
Age: 48
Posts: 9,355
Quote:
I wonder why it would be easier to have to input coordinates though, navigating and then mashing space seems a lot less effort.
Quicker.. and more accurate.. The way I have started to map captive is to move my bots around the game map by hacking their location in memory.

I can for example immediately move the droids to 0,0 and then see what is in 0,1 and 0,2 etc.. I could then quickly select tileset and then just enter 0,1 to 0,16 in the co-ords box and it'd draw the 17 blocks for me from the current location

It'd be much quicker than finding the coordinate, swapping to the editor, moving the mouse to where I wanna paint. Then painting the 17 blocks then switching back to the game

Quote:
That would involve declaring static tilesets so that the app can recognize each icon, the app as it is allows any tileset you want of any size by mapping the filename of an icon to the cell and the zip filename to the floor. What I could do is allow you to reload an iconset, so you can replace the zipfile and then have the app update the gfx from it.
The user could load the images and then the program could automatically set each icon or the user can do it. Once done the iconset should be saveable so it'd be easy to reload it later. Once that is done the user wouldn't need to organise them again.

Quote:
Again game specific and thus a plugin feature, but now I do realize that simply declaring a floor may be to limiting as this won't allow the placement of waypoints, items and critters on top of map tiles. Each floor should consist of different layers that can be switched on and off, each with possibly a different icon set.
That is a good idea

Quote:
Hm, sort of a project workspace. I like that idea.
This way the user could have the maps for say 10 levels loaded and as they progress thru the game they can goto the next level without loading it

The maps should be downloadable and viewable from the program (This way things that a picture can't portray can be viewed)

Quote:
You mean zoom support? I could include a double pixel mode such as winuae has, I don't see why you would want to go any further unless you like to count pixels.
Some people collect stamps, some watch trains :P
BippyM is offline  
Old 13 July 2006, 17:14   #12
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
Quote:
I can for example immediately move the droids to 0,0 and then see what is in 0,1 and 0,2 etc.. I could then quickly select tileset and then just enter 0,1 to 0,16 in the co-ords box and it'd draw the 17 blocks for me from the current location
Okay, a "move cursor to X,Y" function. I'll add that to the should have list (along with the keyboard edit mode).


Quote:
The user could load the images and then the program could automatically set each icon or the user can do it. Once done the iconset should be saveable so it'd be easy to reload it later. Once that is done the user wouldn't need to organise them again.
Right, managing the icon sets from within the app, that would indeed make it less annoying. Heck, I'll even put an icon editor on the could have list.

Note that you can now find a link to the TODO list in the top post.

Last edited by gimbal; 13 July 2006 at 17:25.
gimbal is offline  
Old 13 July 2006, 23:26   #13
Zetr0
Ya' like it Retr0?
 
Zetr0's Avatar
 
Join Date: Jul 2005
Location: United Kingdom
Age: 49
Posts: 9,768
Heys Gimbal, have you thought of starting a wiki ?>

break down the TODO list into areas and then have forums based on works completed within that item.

you could end up with a lot more input too (and prolly a bigger TODO list )
Zetr0 is offline  
Old 14 July 2006, 10:09   #14
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
I don't want a bigger TODO list, I have enough to do as it is It's a tough life to please the almighty bippym
gimbal is offline  
Old 17 July 2006, 09:09   #15
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
Just to let y'all know that I'm not dead: I'm currently working like a dog to get the workspace logic implemented. Because of this the way the app internally references information changed completely so a fair amount of code needed to be reworked... I'm currently wrapping that up and then I'll be able to add new features again :s

Oh well, at least the information is now more logically structured and easier to manage through the GUI. The way I've got it setup is to have workspaces store inside the application directory. Each workspace will then manage it's own maps and icon sets, so the structure may look like:

workspaces/workspacename/config.xml
workspaces/workspacename/maps/map1.xml
workspaces/workspacename/maps/map2.xml
workspaces/workspacename/iconsets/iconset1.zip
etc.

Selecting a map will NOT go through a file-open GUI but through a simple selection list (with multiple columns, because there may well be 65535 maps in there ) that I'll apply some filter options to so you can limit them. I'll probably give each map a number and a name you can provide yourself and then you can have the choice to open a specific number or select a (filtered) name or something. It may also be a nice feature to be able to add maps to a work-in-progress list where you can select them from quickly, something like the Firefox download widget.

The config file is used to remember the state of the app per workspace. So when you have a certain map and floor opened when you close the workspace, the next time you open it that map and floor will be displayed again. I'll try to figure out how to get the app to remember window states as well.
gimbal is offline  
Old 24 July 2006, 21:09   #16
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
YES! It's been bugging me since the day I started this project, but now I fixed it: no matter what the size of the map, drawing is now silky smooth! Man that's a huge load of my shoulders. (the change is: originally I was redrawing the entire map with every update, now I'm only redrawing those parts that changed which is usually 1 or 2 icons each update).

With an exception: scrolling still updates like crap. But once I figure out how to get the current visible viewport dimensions (so that I again may limit the amount of drawing that needs to be done), that is also fixed

The workspace and loading/saving of a map is also implemented. I still have some work to do with iconset management: currently it is only possible to import existing iconsets into a workspace, creating a new one or editing an existing one is the next thing on the TODO list.

I also changed the map format: it's still XML but I changed the cell information to comma seperated. That made a nearly empty 100*100 map go from 256k to only 10k It's actually pretty neat to see your map in semi-ascii map form when opened in a text editor.
gimbal is offline  
Old 25 July 2006, 04:43   #17
BippyM
Global Moderator
 
BippyM's Avatar
 
Join Date: Nov 2001
Location: Derby, UK
Age: 48
Posts: 9,355
Cool

I'm looking forward to beta testing
BippyM is offline  
Old 25 July 2006, 09:05   #18
gimbal
cheeky scoundrel
 
gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,975
There will hopefully first be a few rounds of alpha tests, A beta test is done on a finished product to get the last bugs out. By then it is too late to make design changes.
gimbal is offline  
Old 25 July 2006, 19:10   #19
Marcuz
Registered User
 
Marcuz's Avatar
 
Join Date: Jun 2002
Location: .
Age: 48
Posts: 5,562
can i ask a little OT, out of curiosity? is there, between programmers and program designers, a defined line between alpha and beta tests? like something you learn in school, or it's just a thing based on each project and your eye, or your way of working?
Marcuz is offline  
Old 25 July 2006, 19:32   #20
Zetr0
Ya' like it Retr0?
 
Zetr0's Avatar
 
Join Date: Jul 2005
Location: United Kingdom
Age: 49
Posts: 9,768
general theres a review and sign off for each stage of a project, depeneding on project the design could be in review for months before programming begins, and depending on the design model chosen, i.e. Waterfall, RAD etc.

There are many ethos and reasons for each development model and why some are prefered over others depeneds on your product output.

a common ethos is SDLC (software development life cycle)

http://stylusinc.com/Common/Concerns...Philosophy.php

its a bit of a read but a good resource for project managment / leading, as well as developing your own projects.

this particular resource was considered initial reading on my HND in computing studdies as well as a resource for my BSc in computing science. and in all truth i do go back to it now and again.
Zetr0 is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Next Pet Project Enverex Retrogaming General Discussion 10 23 June 2009 01:30
eab mapmaker alpha 1 gimbal project.Amiga Game Factory 17 02 June 2008 13:42
MapMaker sneak preview 1 gimbal project.Amiga Game Factory 41 11 May 2008 21:23
Pet 4032 Tony Landais support.Hardware 7 11 April 2003 17:53

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 22:33.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.43502 seconds with 13 queries