Space99 - Development Forum

Want to talks about games you like, would like to see developed on the Oric, it's here.
User avatar
Twilighte
Game master
Posts: 819
Joined: Sat Jan 07, 2006 12:07 am
Location: Luton, UK
Contact:

Post by Twilighte »

It is very similar to what I currently have. In fact what I have is two kind of blocks:
I have to say one thing that has always confounded me is how to plot the objects. I can develop greatly compact gfx and easily display with full mask, but what rules do you use to govern which objects are plotted first.
I know it is basically the ones on the current level and furthest back moving to the front but not sure how to code this for my 3:1 aspect (Which incidentally i am working on aswell as the graphics for space99).
Problem with the latter is that the more you have, the slower the program. I thought about putting "ornaments" and pickable objects as tiled, and characters and other objects that may move or have different sizes, as free objects. This way you could, for example, push a chair or a table.
Whilst that would be cool, it is not a 'given' for any first game.
Of course, unless you don't want to lose time with this and concentrate on graphics
No what you said sounds cool, send me what you have, and i'll do my best to do the mapping aswell.
I know it is very basic, but it serves for going donwstairs and other small effects and I think we don't need anything more complicated, as we are not creating a platform game... are we?
Definately not for the first game, at any rate ;)
I suppose the ultimate game i am looking at must be Nosferatu. This appeared on both Spectrum and C64. An amazing game. You could push chairs into other objects which would then move at a slower pace.
Balconies could be seen whilst on the ground floor and at some stage you'd walk through a door and reach them. The game though was horrendously difficult to play, primarily because you'd die within the first few minutes if you didn't have your wits about you.
Oh, and we have to talk about doors. They seem innocent and easy, but are not indeeed!
Well i don't think it is neccesary to make the hero walk through them, just detect the border where they exist.
It should be easier to animate sliding doors, doors that open inwards would mean you'd have to worry about giving space infront of the door (to allow it to open).
As for the actual door animation, you might consider capturing all objects (Including the hero) infront and dumping them as some sort of permanent mask for the animation to be based on?

So don't worry about all my suggestions, some may be good but the most important thing will be to get a game rolling ;)
The steps of 8 pixels sounds fine, and i'll work on some more free objects tomorrow night.
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

I have to say one thing that has always confounded me is how to plot the objects. I can develop greatly compact gfx and easily display with full mask, but what rules do you use to govern which objects are plotted first.
I know it is basically the ones on the current level and furthest back moving to the front but not sure how to code this for my 3:1 aspect (Which incidentally i am working on aswell as the graphics for space99).
It is tricky indeed. I have tested many methods, but it seems that the best working (for my case) was the stacked drawing method. That means for a tile you draw from bottom to top all the objects at that position. Then you just loop through rows and then trough columns drawing every pile of tiles at every position, while you update the screen (x,y) coordinates, which depends on your aspect ratio.

The problem is when rendering free objects. I have not found a render loop that does not have inconsistences with them, so I used a trick: I create an occlussion mask before drawing the free object, using the masks of all the objects that have already been drawn but should NOT be hidden behind it.

It is quite difficult to explain without some drawings and code (which I should clean up, as it has many additions that are up to NOISE also), but there are many links out there where all this is explained, except the occlussion mask thing (or kludge, to name it properly).

If you want more information, I can provide it, just ask :)
Problem with the latter is that the more you have, the slower the program. I thought about putting "ornaments" and pickable objects as tiled, and characters and other objects that may move or have different sizes, as free objects. This way you could, for example, push a chair or a table.
Whilst that would be cool, it is not a 'given' for any first game.


It is nearly working, anyway. But not necessary to use...
No what you said sounds cool, send me what you have, and i'll do my best to do the mapping aswell.

Alright, at your own risk!. I suppose the first thing to do is to desing a format for the map then... I will tell you how mine was to provide an example. I had a separate file with the code to load a room and the room data, so it can be changed easily.

You surely want more information, as the actual code, a test version of the program to see the rooms and move around and also how flats and objects are stored and the needed data to make them work in NOISE. I will provide these later on, to keep this post just large, instead of HUGE :)

Basically my walls had a standard structure composed by alternating flats of one (U) and two tiles (whose graphics fit and make up one wider flat) (A and B), so a wall is defined as: ABUABUAB. There are 8 flats because the extremes are not visible.

I also thought about only drawing the north and west walls and (maybe) drawing a line where the others shoudl be for aesthetic purposes.

There is a table that specifies possible values (ID codes) for flats of U-type and up to four different A and B-type combinations (A1..A4 and B1..B4), so flats like simple walls, computers, windows, etc could be mixed easily. Also it is possible to alter the table in runtime to use different ambients.

The structure of the map in memory was at follows, where rooms are not stored in any particular order, so they should be searched for:

Code: Select all

== HEADER ==
Byte 1: Room ID
Byte 2: Length (of this entry in bytes, just add to the pointer to get the next entry)
== ROOM DATA ==
Byte 3: Room type:
  bits 0-2: ink colour
  bits 3-6: room code (to be defined, maybe size or size+type)
  bit  7: camera change
Byte 4: Wall combination West Wall
 7,6: Reserved
 5,4: two-tile flat 1 type (first AB group)
 3,2: two-tile flat 2 type (second AB group)
 1,0: two-tile flat 3 type (third AB group)
Byte 5: Wall combination North Wall
 idem
Bit 7 of byte 3 is free (even if I had in mind a nice use that maybe I will implement later)

Bits 7 and 6 of bytes 4 and 5 are free and could signal special kind of walls, for example walls all made up of AB groups (windows are quite nice this way).

Doors are made up with empty tiles (ID code 0), as white detects when the sprite is about to leave the room to load the destination room automatically. If a wall is not visible, but it is there (for example south and east walls if no lines in the floor are drawn) the special code (0 OR INVERTED -binary 10000000 and #defined as TRANSP_WALL-) is used.

So the basic wall is made up with two graphics (both sides) with an empty tile in the middle and another one at layer 4 (heigth 4) for the top part of the wall. However it is quite difficult to make the character exactly tresspass the door, so it works much better to have two empty tiles in the middle, which is possible with this system. In fact it is possible to have doors of any width.

In addition doors may be in different places, just one in the middle or one or two lateral doors. Graphics were designed to make this easy with combinations just as:

ABD__DAB or D__DD__D or D__DUABU or UABUD__D ...

Doors of different sizes may be mixed, i.e.: D_DABD_D or UD____DU or even D______D.

A possible way of coding this is:

Code: Select all

Bytes 6-7: Doors
 Byte 7, bits 0-2: Doors East Wall
 Byte 7, bits 3-5: Doors North Wall
 Byte 7, bits 6,7: Reserved (door type?)
 Byte 8, bits 0-2: Doors West Wall
 Byte 8, bits 3-5: Doors South Wall
 Byte 8, bits 6,7: Reserved (door type?)

Door types:
Possible combinations are:
 000 : No doors
 001 : One door at the left of the wall
 010 : One door in the centre of the wall
 100 : One door at the right of the wall
 101 : Two doors in both sides of the wall
Special combinations are:
 011 : Big opening in the wall (not really a door, more an arch)
 110 : ...
 111 : Set all wall to id=0, so there is no wall

Now onto other objects. I separated objects that might be placed on walls (like a torch or a label) from objects that appear in the inner 8x8 grid. That is interesting as it is expected that a room has more of the latter and their coordinates can be compressed:

Code: Select all

;== BKG WALL OBJECTS ==
;Byte 8: Num Objects
;Byte 8+1: obj ID
;Byte 8+2: position
;	bits 7,6: wall 	West wall=00, North wall=10, East wall=01, South wall=11	
;	bits 5-2: position in wall (0-9)
;	bits 1,0: heigth layer
;...
;	
;Obj ID (type) (bit 7 set indicates mirror graphic, 6 sets SPECIAL flag)
Remember that WHITE will report collisions with every object with the SPECIAL flag set (except if ID is 0).

Code: Select all

;== BKG INNER OBJECTS ==
;Byte N: Num objects
;Byte N+1: object ID
;Byte N+2: repetitions
;Byte N+3: position (bits 7-5 pos i: bits 4-2 pos j: bits 1 and 0 pos k)
;...
;Byte M-1: position for each repetition
;...
Note that this does not permit more than 4 heigths (4 layers).

Finally free objects, with fine coordinates that are not bound to tiles...

Code: Select all

;== FREE OBJECTS ==
;Byte M: Num objects
;Byte M+1: ID
;Byte M+2: pos i
;Byte M+3: pos j
;Byte M+4: pos k
;Byte M+5: size byte
;Byte M+6: automov byte (byte that controls automatic movement)
;Byte M+7: direction
These are not yet implemented in my current version. In fact there are two additional arrays which hold free objects (normally characters) that might move from one room to another and tiled objects that also could be carried from one room to another. Those are set up after loading all the room data.


With this structure the room you start up in the demo (a bit modified, as I was testing thigs, but walls and overall layout is similar) is defined as:

Code: Select all

;; Room ID 0
  .byte 0
  .byte 27
  .byte 6
  .byte 0
  .byte 21
  .byte 0
  .byte 63
  .byte 0
  .byte 4
  .byte BRICK
  .byte 6
   .byte 184
   .byte 176
   .byte 32
   .byte 64
   .byte 96
   .byte 128
  .byte TABLE
  .byte 1
   .byte 180
  .byte (LAMP|INVERT)
  .byte 1
   .byte 181
  .byte (COMMPOST|SPECIAL)
  .byte 1
   .byte 36
  .byte 0
;; End of room ID 0
where COMMPOST, LAMP, BRICK and SPECIAL and INVERT (I know it should have been MIRROR) are #defined.

I have a small C program that accepts a text file with an easier definition of a room and "compiles" it. This room is:

Code: Select all

ROOM 0 6 0 0
0 0 0
1 1 1
0 0 0
0 0 0
1 1 1
1 1 1
WOBJS
END_WOBJS
OBJS
BRICK 5 6 0
BRICK 5 4 0
TABLE 5 5 0
(LAMP|INVERT)  5 5 1	
(COMMPOST|SPECIAL)	1 1 0
BRICK 1 0 0
BRICK 2 0 0
BRICK 3 0 0
BRICK 4 0 0
END_OBJS
When a new room has to be loaded, an asm function is called:

Code: Select all

void white_load_room(char roomID)
Setting a tile is calling NOISE function:

Code: Select all

 set_tile(i,j,k,ID)
Do I forget anything? :)
Oh, and we have to talk about doors. They seem innocent and easy, but are not indeeed!
Well i don't think it is neccesary to make the hero walk through them, just detect the border where they exist. It should be easier to animate sliding doors, doors that open inwards would mean you'd have to worry about giving space infront of the door (to allow it to open).
I have tested that and it does not look very good. However there are little options. I want to think more about the problem anyway. One possibility is making it automatic: if the player hits the door, the engine takes control, moves your char to center it in the door and makes it walk through it. When exitting, it is something similar: just make it move a couple of steps. Problem here is what happens when there is something (or somebody) there that prevents this move...
As for the actual door animation, you might consider capturing all objects (Including the hero) infront and dumping them as some sort of permanent mask for the animation to be based on?
I already have something ready for that.. There is a function that changes the content of a tile and redraws, so don't worry about that.
So don't worry about all my suggestions, some may be good but the most important thing will be to get a game rolling ;)
The steps of 8 pixels sounds fine, and i'll work on some more free objects tomorrow night.
Your suggestions are excellent ideas and points, and very refreshing. I have to admit I was nearly run out of new ideas at this point, so I kept on asking a friend of mine which gave me very interesting points of view and solutions for some problems.

Regards,
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Some news...

Post by Chema »

Greetings,

Even if it seems WHITE+NOISE developement is stalled, it is not... at least not totally.

I have been very busy lately, and will probably be for a few more days, so don't expect any spectacular advances for now :)

I have been working on some internals of the engines and planned a few enhancements I need, and I have to hunt a hideous bug that is making me mad.

I also changed the code for stairs so it is more compact, but only works partially now... maybe I will need to rethink it again.

Twilighte, if you prefer we can keep to my old room format and change only what is necessary, but maybe your designs should be adapted somehow... I don't know.

Oh, and I have had a few ideas about doors I want to test.

If you need anything, just ask and I will try to answer back.

Regards,
User avatar
Twilighte
Game master
Posts: 819
Joined: Sat Jan 07, 2006 12:07 am
Location: Luton, UK
Contact:

Post by Twilighte »

I have been very busy lately, and will probably be for a few more days, so don't expect any spectacular advances for now
Sure, not a problem. I have to admit i took time out to develop my own isometric engine, which you can find an example of in the Painting Tricks forum.
I have been working on some internals of the engines and planned a few enhancements I need, and I have to hunt a hideous bug that is making me mad.
Whilst i cannot exactly help you fix that, i recently found this online article from Jon Ritman who did Batman and Head over Heals for the Speccy.
I cannot promise to understand everything, but well worth a read.

http://dkozar.com/documents/Jon_Ritmans ... torial.pdf
Twilighte, if you prefer we can keep to my old room format and change only what is necessary, but maybe your designs should be adapted somehow... I don't know.
Sure, if the new format or changes you recently made have caused that hideous bug then i can work around them using the original format, no worries.
I still haven't had a chance to examine your format you detailed above. i will look soon... ish.
If you need anything, just ask and I will try to answer back.
I could really do with... lots of money, a nice car and a house, apart from these i need nothing else right now, but thanks for asking ;)
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Progresses..

Post by Chema »

Greetings,

Thought it would be a good thing to post a kind of progress report, just to make sure nobody thinks I have not been doing anything.. :)

Stairs are working now. I changed the way they were handled, so everything is easier. When a character tries to go up/down stairs, WHITE takes control and performs the movement automatically up to the next level.

I am in the process of fixing problems related to collisions with other characters that might be also on the stairs (there are situations in which this might occur) so there are no inconsistencies...

Of course you can put stairs following stairs, so characters move up/down more than one level (8 pixels).

Also fixed the hideous bug that happened "sometimes" when taking dropping objects. It was a hard task, but happened to be a stupid mistake in my code (which is poorly documented at some points).

And I finally changed some details in the core of NOISE when drawing characters that are moving. Performance is a bit better now, even if nothing impressive, but it allows some more flexibility.

As soon as I finish fixing everything related to stairs, I would move onto doors. I have some ideas I want to test, but that won't be a quick task and will probably take all my time until I go away on vacation (august), and even more...

I want to see if I can make them the way the guys of Ultimate did, so doors are made up of two consecutive tiles and the engine (WHITE) detects when the character wants to enter and takes control, centers the character in the door, and makes him walk through. If this approach works, then I think it will be the easiest way, even if the possibility of having wider openings in walls to connect rooms will allways exist (and, of course, rooms with no walls in some directions).

Having doors that open and close (most often with keys) adds more complexity, as we need to be sure the character has trespassed them completely before closing, and this could be impossible if there is another character blocking his way. If I want WHITE to handle this automatically for the programmer, I have to think about how to do it... maybe "pushing" the character which is blocking the way, but there will allways be situations in which this approach won't work (things that cannot move blocking characters which block door entrances, for instance).

My first idea in this situation is just make the character go back to the original room. Eventually the way in will unblock... or not?

Chema
User avatar
Twilighte
Game master
Posts: 819
Joined: Sat Jan 07, 2006 12:07 am
Location: Luton, UK
Contact:

Post by Twilighte »

Hey Chema, apologies for not replying. As you have possibly guessed, i am now heavily into trying to get my own isometric engine working.

When you are desparate for the map/graphics, please let me know and i will find some time to look at that format.

Btw, i found another great article on isometric techniques.
Bo Jangeborg wrote Fairlight, a sprawling isometric action adventure with some fantastic features, like the ability to move objects from one room to another and to keep them their and to move a row of objects by pushing at one end.

http://www.users.globalnet.co.uk/~jg27p ... r20_40.htm
See the hackers section towards the end.
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

Twilighte wrote:Hey Chema, apologies for not replying. As you have possibly guessed, i am now heavily into trying to get my own isometric engine working.
Don't worry, I have already noticed that! If you want to discuss any problem you might encounter..., I might have dealt with it.
When you are desparate for the map/graphics, please let me know and i will find some time to look at that format.
:) Thanks... I will be desperate as soon as I have some details fixed (see my post above).

I am in the process of starting with doors that open and close (cross fingers).

Btw, i found another great article on isometric techniques.
Bo Jangeborg wrote Fairlight, a sprawling isometric action adventure with some fantastic features, like the ability to move objects from one room to another and to keep them their and to move a row of objects by pushing at one end.
Yeah... Fairlight had many interesting features, some of them quite difficult to implement. However you also can move objects from room to room with WHITE+NOISE, and you can switch between different characters to control (not only 2, btw, but as many as you want). That is why I have separate arrays for tiled and free objects that might be anywhere in the internal world (even in your inventory), AND the information of objects of both types that are bound to a room, which is included in the map... well.. will be.

I still push the limits towards creating a flexible engine that might be easily usable for anyone from C or ASM to create their own games. Most of the behaviour can be controlled by simple #defines, such as (please notice that NPC are characters you are not controlling):

Code: Select all

// We want to be informed of collisions
#define COLLISION_CALLBACKS 

// Make characters go up/down stairs
#define AUTOSTAIRS

// Do NPCs go automatically up/down stairs?
#define NPCUSESTAIRS

// Shall PNJs avoid reporting collisions with bkg objects?
#define NPC_DONTREPORTBKGCOL

// Perform simulation of gravity?
#define GRAVITY
...
And flags, in some cases:

Code: Select all

extern char ignore_collisions; 	// Sets or clears ignoring collisions
extern char phantom_mode;		// Sets or clears not stopping when colliding with bacground objects
And some macros to change behaviours in runtime:

Code: Select all

SET_AUTOMOV(x)     // Sets the auto-movement flag
UNSET_AUTOMOV(x) // Clears the auto-movement flag 

AM_TYPE0		// On collision turn CLOCKWISE
AM_TYPE1		// On collision turn ANTICLOCKWISE
AM_TYPE2		// On collision turn twice
AM_TYPE3		// On collision randomly act as any of the above
AM_TYPE4	                // Do 0-4 randomly when stepping
SET_AMTYPE(x,y)      // Sets auto-movement type

SET_SPEEDNORMAL(x)	// Sets one step per loop (normal speed)
SET_SPEEDHALF(x)                    // Sets one step every two loops (half speed)
I have other flags for changing the behaviour of animations, if a given character performs 4-frame animation when walking or not, or if it changes graphics when changing the direction it is facing... and that can change in runtime, so not only you may have a 4-frame animated plasma ball moving around, or a static chair that you can push, but also you can change how your character animation behaves, and make him slide, instead of walk :)

That together with the collision callbacks, should make it a piece of cake to program a game with this engine... And if you want more control, then there is NOISE API... a much lower level engine you can use with or without WHITE.
User avatar
Twilighte
Game master
Posts: 819
Joined: Sat Jan 07, 2006 12:07 am
Location: Luton, UK
Contact:

Post by Twilighte »

That sounds much better than any engine i am writing. Just a shame i didn't get to speak to you at the start and pursuade you to use 3:1 perspective :wink:
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Drawing tiles, map format & HELP NEEDED

Post by Chema »

Twilighte: I nearly forgot you asked me about how to draw the tiles... I will illustrate how I am doing in NOISE, or more specifically, how I am rendering in the WHITE room editor:

As I told you I am using the "draw stacked" method, which is just one of the methods I tried. This is the main loop:

Code: Select all

 xx = 120 - (tile_width / 2)
 xd = xx
 yd = 32 + tile_width
 l = 0
 k = l
 length = 0
 jo = 0
    
 For i = 0 To 18 
    For j = jo To length 
       ' Get the tile to draw
        k = j
        l = length + jo - j
        
        ' All the heights...
        For h = 0 To num_layers Step 1
        
         ' Get tile
         tilecode = map(k, l, h)
         
         If tilecode <> 0 Then
           ' Render tile (I also remove SPECIAL and MIRROR bits here and  
           ' proceed mirroring if necessary)
           DrawMasked Tilepics(tilecode), Maskpics(tilecode), xx, yd - (h * 8)
         End If
        
        Next h
        xx = xx + tile_width
        
   Next j
      
   If i < 9 Then
       length = length + 1
       xd = xd - (tile_width / 2)
   Else
       jo = jo + 1
       xd = xd + (tile_width / 2)
   End If
   
   xx = xd
   yd = yd + (tile_heigth / 2)
      
Next i
Of course many things can be precalculated and stored in a table and you need to keep the loop drawing just what is necessary. I also draw it in a doble buffer and dump it in the end.

Notice this is just to draw stacks (piles) of tiles. If you want to *really* have multiple layers (for example for different floors that might cover each other) then you have to do as many loops as layers. You can combine both methods and have layers and stacks whithin those layers. This would (I tested it) provide very nice effects, like roofs that disappear when the character enters. Problem of this is just performance.

I tried other methods too, like just looping through rows and columns and have a function to convert 3D (or 2D1/2) coordinates in isometric to screen coordinates (a long table might do, of course, at the expense of space). But found out this one to be the better approach... anyway I might well be wrong.

You would have to adjust some constants for your 3:1 aspect ratio.

In addition, the editor is going quickly. I can now load tilesets and change them on runtime (even if pngs are not supported just now). Also you have a 16x16 grid with all the possible rooms in the world, marking in blue those that are used. You can also copy or move rooms with drag&drop in that grid.

I have tested your set of tiles (some of them) and look quite impressive. Some of them do not work quite well, though, mostly because they exceed the size of a tile (like one of the round corners), but most are just incredible and you can create very nice-looking rooms with them!

I also have a good idea for the map format, so it is quite general and flexible, even if it does not compress data as well as my first approach. The idea is simple:
- divide tiles in those that can be in the inner 8x8 grid and those which are on the walls.
- For each group have tiles stored with this format:

Code: Select all

  1 byte for number of entries
  1 byte for tile code
  1 byte for repetitions of that tile
  1 byte for position of each repetition
- For the first group, position is coded as:

Code: Select all

  bits 7-5 i coordinate (0-8)
  bits 4-2 j coordinate (0-8)
  bits 1 and 0 k coordinate (0-4)
- For the second group, it is quite different:

Code: Select all

  bits 7-6 wall (N,S,E,W), this indicates one coordinate (i or j) at fixed value of 0 or 9
  bits 5-2 position in wall (either i or j coordinate, from 0 to 9)
  bits 1 and 0 k coordinate (0-4)
This would waste a lot of space with flats, even if they repeat often, so it would be easy to calculate (in the editor) which is the flat that repeats more often in each wall and use a special byte to indicate the "base flat" for that wall, so automatically it is placed along all the wall. Then other tiles can be placed (stored as seen for the second group) to change some of those flats and not only change the environment or place flats that the user can interact with, but also create openings (tiles with no flats) to move from one room to another.

It is highly flexible and easy to use, so it is a good approach for a general engine as WHITE is. If in any case more compression is needed, then the final user should rewrite the mapload function and either convert the map definition file or create one for his own usage. In this case very high compressions can be achieved, losing generality: for instance just 1 byte can specify the "type of room" which would state the flats that would be used to fill the walls, just as old filmation games did.

As soon as the editor can save/load maps and some things are fixed, I can give you a beta, so you can try it, develop more flats, and map some rooms, if you wish.

I am going on holidays next week until the end of August, so this would give you more time to continue with your own engine, unless you want to start now... :)

I will also need more things, so any of you out there might help:
- Graphics for the main characters (animation of four frames)
- Sounds. Small quick "beeps", "pongs", etc. to use them when the character moves ("tico-tico", as one friend of mine says), falls, moves up/down stairs, collide with objects, take an object, open sliding doors... All of them should be accesible with a jsr and should be small and fast and preserve registers and even page 0 variables used by the C compiler if possible.
- In a near future, other sounds that may play through interruptions. Not music, just ambient sounds. I would like to have something very easy to use and which we can change when things happen (or may happen). Something like storing a value at a given address and the interrupt routine plays that effect (0 for stop). Of course I am not sure if we would have performance problems, so I am afraid nothing complex and spectacular can be done.

Oh and another thing... I have tried to turn keyclick off by pokeing 0x08 into 0x26a and the C function key() stops working... That does not happen when I press CTRL+F.... any clues?

Regards,
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Progress before vacations...

Post by Chema »

And even before I get an answer to my last post, there it goes. Another progress report!

The map editor is progressing quickly and it now works 90%, even if some user interface features should be improved (not too much!, I am too lazy...) and it still has to be able to export the world and tileset in a format to be used directly by WHITE.

I have been doing some experimentation and there follow three screenshots. Remember I am just trying to see how things could be done and how well some ideas may work, so some tiles do not fit perfectly or some are missing... Just use your imagination to "see" how it should look in the end :)

Image
Image
Image

About the editor, you can see the 16x16 grid on the right (the whole world in WHITE), where used rooms are marked in blue. You can copy or move rooms in this grid using drag&drop.

It is very useful not only to develop the whole map in the end, but also to see how a set of tiles work together, and quickly test new ideas or graphics. Twilighte should find this very useful to finish all the tileset for Space 1999 !

I am leaving on vacation tomorrow, so I suppose there won't be news until september.

Nice holidays!
User avatar
Dbug
Site Admin
Posts: 4461
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Progress before vacations...

Post by Dbug »

Chema wrote:It is very useful not only to develop the whole map in the end, but also to see how a set of tiles work together, and quickly test new ideas or graphics. Twilighte should find this very useful to finish all the tileset for Space 1999 !
Have you put a download link somewhere for the tool so Twilighte can try to use it during your holidays ?

Have a nice time :)
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Progress before vacations...

Post by Chema »

Dbug wrote: Have you put a download link somewhere for the tool so Twilighte can try to use it during your holidays ?
Ah, yes... I have uploaded it, and it is at

http://www.defence-force.org/ftp/forum/ ... itor01.zip

Please keep in mind it is a development version, and it is *VERY* alpha, so it might well not even run!

I hope it is not the case, though :)
Have a nice time :)
Thanks! Same to you, if you are going on vacation soon!
User avatar
Twilighte
Game master
Posts: 819
Joined: Sat Jan 07, 2006 12:07 am
Location: Luton, UK
Contact:

Post by Twilighte »

This is an extremely cool editor Chema. Finally i get to play rather than do the complex mapping myself. I'm sorry, but i found your explanation brain destroying.
Anyway, i have no excuse now not to get on with the map layouts.
I will def try this at the weekend whilst i am at Assembly in Finland ;)

And again, it really looks like the best. I would put it on a par with Fabrices Euphoric, that is whilst his was the only emulator around, it was the best!

I have noticed a few flaws in order of priority...

1) It would be really cool if you could highlight the position a flat was going to be placed in as the cursor moved accross the map.
2) When mirror, it doesn't update the flat (graphic shape) shown bottom left.
3) it would also be cool if arrow keys could move cursor in list of flats up or down independant of where focus is.
4) how do i add flat graphics? just deposit flat in space1999tiles?
User avatar
Chema
Game master
Posts: 3020
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

Twilighte wrote:This is an extremely cool editor Chema. Finally i get to play rather than do the complex mapping myself. I'm sorry, but i found your explanation brain destroying.
Anyway, i have no excuse now not to get on with the map layouts.
I will def try this at the weekend whilst i am at Assembly in Finland ;)

And again, it really looks like the best. I would put it on a par with Fabrices Euphoric, that is whilst his was the only emulator around, it was the best!

I have noticed a few flaws in order of priority...

1) It would be really cool if you could highlight the position a flat was going to be placed in as the cursor moved accross the map.
2) When mirror, it doesn't update the flat (graphic shape) shown bottom left.
3) it would also be cool if arrow keys could move cursor in list of flats up or down independant of where focus is.
4) how do i add flat graphics? just deposit flat in space1999tiles?
I know, I know... I wanted to solve some of those, but had no time yet...

To add a flat graphic just put it in the folder AND add a line in the tileset.txt file, with the correct format (<name> <graphicfile> <maskfile>).

You would have to reload the tileset or exit and run the program again for updating the tile list... Would do this from within the editor in a future.

Well... talk again once I'm back in two weeks!

Cheers.
User avatar
Twilighte
Game master
Posts: 819
Joined: Sat Jan 07, 2006 12:07 am
Location: Luton, UK
Contact:

Post by Twilighte »

ok, have only now begun to design the map, which was a bit of a pain because space99 is circular, so more than 4 rooms are accessable from the Main mission control tower and most rooms are wider at one end to the other.
However, i believe i have got it sussed now. The design is 7x9, and each room (in most cases) will simply link to the room adjacent to it by a door, however i suspect you have put some code in their to link one room to a remote location not adjacent to it?

I also notice the editor does not register in my apps in the taskbar (Nor thru ALT-TAB), strange because it means i cannot switch to it directly unless it is visible somewhere.

I have based the map on MoonBase Alpha external structures, as found here...
http://www.space1999.net/~catacombs/cyb ... n1001.html
here is what i have done so far...

Code: Select all

		      BB HH    25       CC
			 HH 24 HH 23 HH HH
		      EE HH 16 18 09 09
			 17 07 06 08 08 02
			 12 00 01 03 HH
		      15 HH 21 05 04 HH GG
			 22 14 13 11 19
		      HH HH 14 20 10 HH
		      DD	     HH AA

AA Launch pad 3
BB Launch pad 1
CC Launch pad 2
DD Launch pad 4
EE Launch pad 5
HH Travel Tube
00 Main mission computer Annex
01 Main mission Command Tower
02 Weapons Store
03 Chemical Labs
04 Weapons Section
05 Computer Section
06 Medical Center
07 Astrophysics Labs
08 Technical Section
09 Technical Experimentations Labs
10 Geological Labs
11 Accomodation Unit
12 Fuel Storage (Non-Flammable)
13 Nuclear generating facility 3
14 Recreation and dining complex
15 Hydroponics Farms
16 Nuclear generating facility 1
17 Life Support Equipment Stores
18 Life Support systems building
19 Observatory
20 Maintenance building
21 Nuclear generating facility
22 Deep space tracking station
23 Chemical stores
24 Technical stores
25 Alien Life experimentation Unit
I hope you had a nice holiday
Last edited by Twilighte on Tue Aug 15, 2006 11:07 pm, edited 2 times in total.
Post Reply