Slightly cold news on page 10! Phlamey breaks the server. | |
This is a long thread. Click here to view the threaded list. | |
Phil Mellor | Message #71962, posted by monkeyson2 at 00:00, 20/11/2005, in reply to message #71957 |
Please don't let them make me be a monkey butler
Posts: 12380 |
Why do I always end up reading your posts when coming back from the pub DRUNK? Your suggestions sound ALL RIGHT |
[ Log in to reply ] | |
Phil Mellor | Message #71963, posted by monkeyson2 at 00:03, 20/11/2005, in reply to message #71962 |
Please don't let them make me be a monkey butler
Posts: 12380 |
<random forum bug>The 'view post' didn't work correctly after I posted to this thread. My post started off page 3, but I was taken back to page 2. Anyway, don't let me take this thread off on a tandem.</random forum bug> Gaming development discussion, carry on now: |
[ Log in to reply ] | |
Jeffrey Lee | Message #71965, posted by Phlamethrower at 01:51, 20/11/2005, in reply to message #71963 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
<random forum bug>The 'view post' didn't work correctly after I posted to this thread. My post started off page 3, but I was taken back to page 2.Go fix it then Gaming development discussion, carry on now:Hmm, writing this pseudocode for the WIMP interface is a bit harder than I thought, without having some existing code open for me to base it around. Suffice to say, the controls configuration window will work in a similar way to the one in Dark Matter, along with the graphics configuration. I think Dark Matter asks RISC OS for a list of compatible screen modes - if not then I'll have to write one for this. I might also just lump all the config options together into one big window. I'll skip the rest of the WIMP stuff then, and go into the game engine. The engine can be entered from the WIMP via 3 functions: loadgame, newgame, and playgame. When the functions return, the computer will switch back to the desktop and the game will be paused (if the game state was successfully initialised).
|
[ Log in to reply ] | |
Jeffrey Lee | Message #71992, posted by Phlamethrower at 20:45, 21/11/2005, in reply to message #71965 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Assets and asset management Here's something that we have yet to go into sufficient detail on. There are numerous assets used by the game:
* The game config file is a (special) mission script * Commands are added such as 'PEDDEFPATH', 'CARDEFPATH', 'MISSIONPATH', etc. to add a path to the list of paths to search for specific files. Then something like 'LOADPED "foo"' will search the list of ped paths for ped type "foo", and load that definition for use by the game. * Individual mission scripts are then able to load exactly the right files they need. ...which is actually quite similar to the system GTA 3/VC/SA uses. A script-type config file specifies the directories where data is stored, and triggers the loading of the data. Seperate script-type files for each map section then dictate what files are needed for that area of the map, etc. The game config file could also contain an algorithm to generate the megamap, and dictate to the main map generator exactly what each individual map should look like. In particular when mission scripts are loaded, each mission script could have certain requirements laid out, e.g. the map needs at least 3 hospitals, 5 ganglands, etc. Scripts could even dictate the exact shape of some buildings/areas. Basically, more power in the scripting system will lead to more flexibility in game design and modding, but potentially more complicated engine code (support for on-demand loading of files) and in this case, slow map generation if too much of the algorithm is in the mission script itself. Hmm. [Edited by Phlamethrower at 20:48, 21/11/2005] |
[ Log in to reply ] | |
Jeffrey Lee | Message #71993, posted by Phlamethrower at 20:58, 21/11/2005, in reply to message #71992 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
but potentially more complicated engine code (support for on-demand loading of files)For this, I think that all I need is some set/hash ADT code. Which I was planning on writing anyway. (Especially since it'll be useful for other things like tracking the variables in mission scripts. And probably some other coding projects, and lots of pesky data handling tasks which I keep coming across) |
[ Log in to reply ] | |
Jeffrey Lee | Message #72012, posted by Phlamethrower at 16:35, 22/11/2005, in reply to message #71993 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
*wonders how many people still read this* Anyway, here's my vision of how all the asset management stuff will be done. The game config script will go something like this:
Then in the prison mission script:
Once the level is complete, the mission script can then run the .nextmap function, which will look something like this:
So how this will all fit in with the engine is that: * When !DeathDawn is run, the WIMP sprites & templates will be loaded * If the user starts a new game: - the game config script will be loaded, and .onload automatically run - this will cause the engine to load the fonts & graphics used for the loading screen - the script will then display the loading screen, which will presumably use some form of voodoo to work out how much progress has been made - it will use NEWGAME to detect that it's a new game, and go on to generate the megamap and run the first mission script - the mission script will then load all the cars, peds, etc. used in that map - it will detect that there is no map, and generate the map and initialise the first mission(s) for that level - the script will then stop, and the newgame() C function will start the main game loop * If however the user loads a saved game: - the game config script will be loaded - this will load the fonts & graphics for the loading screen, and cause it to be displayed - NEWGAME will be false, and thus execution will stop - then the variables and map data will be loaded from the save file. Loading of the ped & car variables, as well as the map data, will trigger loading of the appropriate ped/car/tile definitions from disc. - the mission script indicated in the save file will be loaded, and .onload run. - the script will load any other cars, peds, etc. used in that map - it will detect that the map data does exist, and stop the script - the loadgame() C function will then start the main game loop [Edited by Phlamethrower at 17:20, 22/11/2005] |
[ Log in to reply ] | |
Jeffrey Lee | Message #72044, posted by Phlamethrower at 16:59, 23/11/2005, in reply to message #72012 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Game storyline & mission progression Rather than having one storyline that will carry you through the entire game (as in GTA 3/VC/SA), I'm going to go with the more freeform GTA 2 system. In GTA 2 there are 3 major gangs in each level; you have 3 respect meters, showing how much the gangs love/hate you. To proceed to the next level, all you have to do (IIRC) is raise a certain amount of money. This will then trigger a mission where all 3 gangs try and hunt you down and you must kill their leaders. All the other missions are optional, giving you (almost) complete freedom in how you want to complete the game. If you do decide to do missions for the different gangs, then you'll find that only some are available at any particular time, depending on your respect level with that gang. Killing members of one gang will lower their respect for you, but increase another gang's respect for you. Likewise completing a mission for a gang will increase their respect for you and lower another gang's respect for you. I'm suggesting that we (I) use this basic system for this game, as it will avoid us having to write any fancy-pants storyline, and gives the player more freedom. In each map there will be several gangs, and they will have respect meters. If they respect you they will offer you work, if they hate you they will try and kill you. There may be some hardcoded missions or tasks that you must complete, or various triggers which will allow you to progress to the next map. The prison map I think this is a good idea for this map. As previously stated, it will be a city that has been converted into a prison. It will be surrounded by a tall wall to prevent prisoners from escaping, and will have some form of water/moat outside the wall. The only entrance to the prison will be by air or a single train track. The train track will lead to prisontown, the 2nd level of the game, where all the prison guards live and the supplies are stored. The game starts with you getting transported into the prison by the train. The train track is elevated above the floor; to deliver prisoners it simply enters the city via a gate, stops over a carefully placed pool of water, then the carriage tips up and the prisoners fall out After the prisoners are dumped off, the rival gangs will arrive and try to "recruit" as many new prisoners as possible, as well as kill any members of the opposing gangs that get in their way. So you can either run from them or follow them back to a recruitment office and get your first mission. Packages of food are occasionally delivered to the prison by a big cannon located in prisontown. The prisoners and gang members must race to where the food package has landed if they want to eat prison food; those lucky enough to have real farm land at their disposal would probably stay at home A couple of missions could be based around the collecting of the food packages. At some point while you're in prison, the cataclysmic disaster will strike the world. You will at first be unaware of it. It will only begin to affect prison life at a predetermined stage of the game, e.g. you reach a certain amount of cash or have completed a certain number of missions. At that point something will happen, e.g.: * A prisoner infected with the zombie virus will be delivered and start infecting people * The food cannon will start shooting blanks, and people notice that there are no guards on the walls * A plane/helicopter crash-lands in the prison * The prisoner transport train crashes * etc. Then a series of missions will be unlocked which will lead you to defend your gang/escape the prison. Escape will most likely be via the train tracks. Animated map tile sprites For these, I think the simplest method would be for tile sprites to be named <tile>#<t> where <tile> is the tile name/number, and #<t> gives the time at which the animation should switch to that sprite. E.g. sign#10 (Sign unlit) sign#12 (Sign lit) would result in the unlit sprite being used on times 10 and 11, and the lit sign on times 0-9 and 12. These times will probably be measured in 25ths of a second, to keep the sprite names short. Object types There is some fuzzyness as to exactly what the 'objects' are, and how they will be defined. The different object types I can think of are: 1. Bullet, fire plume, water plume, rocket, grenade 2. Static sprite/animation (bullet impact, blood splatters, scorch marks, metal sparks, skid marks, explosions, other stuff) 3. Traffic cones, roadblock barriers, and other pushable objects which change appearance when hit (i.e. fall over) 4. Bollards, rocks and other immovable obstacles 5. Destructible objects (Hereby referred to as 'meat', for no particular reason) You could then store the different objects in one data structure:
animid would index the 'animations' variable:
Some animation ID's will be hardcoded to use specific sprite names; e.g:
The other animation ID's won't be used internally by the game, and so will be assigned on a first-come-first-served basis to the different cone/bollard/etc. sprites as they are loaded from disc. Specific objects can then be spawned by mission code, e.g. BOLLARD "bollard" vpos 0.02 would spawn an immovable bollard at location vpos with radius 0.02, using sprite "bollard". BULLET ROCKET vpos 30 pped would spawn a rocket 'bullet' at location vpos, heading 30 degrees, with owner pped. EXPLOSION vpos 400 pped would cause an explosion at vpos, dealing 400 damage, with pped attributed as the owner. This command will cause 3 things to happen: 1. Damage to everything near vpos 2. Set some objects near vpos on fire 3. Create an explosion animation object at vpos, with the appropriate animid and death time. Object sprites stored on disc will use the <name>[#<t>][_<x>,<y>] naming method, where <name> is the base name, [#<t>] is the optional animation frame/time, and [_<x>,<y>] is the optional origin coordinate (if omitted, the center of the sprite will be used). Sprite names are too short! Because of this, sprites with no name part will be supported. If you had OBJPATH "<DeathDawn$Dir>.objs", then you could create a sprite file "<DeathDawn$Dir>.objs.generic.foo", and create sprites inside that file "#0_5,5", "#5_27,36", etc. This sprite animation can then be referred to as "foo" or "generic.foo" in the code. Sprites with names (e.g. "explo#3" in file "<DeathDawn$Dir>.objs.generic.gen") can also be referred to as "explo", "gen.explo", or "generic.explo" However trying to ask for "#0", "#0_5,5", "foo#0", "foo#0_5,5" etc. will result in an error, as neither the animation frame or center coordinate are considered to be part of the sprite name when the sprites are loaded. [Edited by Phlamethrower at 16:50, 24/11/2005] |
[ Log in to reply ] | |
Jeffrey Lee | Message #72071, posted by Phlamethrower at 14:19, 24/11/2005, in reply to message #72044 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Variable types in mission scripts
As shown in a previous example, mission scripts will have support for arrays. [] brackets will be used to denote an array. Arrays initially have capacity for storing 0 entries. "ifoo[] = 5" will shrink/enlarge array ifoo to hold 5 entries (from 0 to 4 inclusive); existing values will be preserved where possible, new entries will be set to null values. "isize = ifoo[]" will set isize to the current size of the array. "ifoo[i]" will provide access to array item i. Jumping to arbitrary parts of code ...will not be directly supported, in order to make sure mission scripts can be changed without invalidating save games. However I'm thinking of two ways around this problem: Either code labels which are arrays, or the ability to use a string containing the name of the label to jump to. In fact, I'll just support both. [Edited by Phlamethrower at 18:25, 24/11/2005] |
[ Log in to reply ] | |
Richard Goodwin | Message #72072, posted by rich at 14:27, 24/11/2005, in reply to message #72044 |
Dictator for life Posts: 6828 |
EXPLOSION vpos 400 ppedHow are you going to deal with radius/drop off of damage? Or just simplifying it by having 400 across the whole (square?) area of the explosion anim, and nothing in adjacent areas? Having one of those sets of circles you see when nuclear weapons are discussed on TV - instant death in the middle circle, heavy firey damage in the next circle, lesser shockwave damage in the next circle - would be quite cool. Do you have a "people blown off their feet" anim? I suppose flipped cars are already catered for? ________ Cheers, Rich. |
[ Log in to reply ] | |
Jeffrey Lee | Message #72074, posted by Phlamethrower at 14:49, 24/11/2005, in reply to message #72072 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
How are you going to deal with radius/drop off of damage? Or just simplifying it by having 400 across the whole (square?) area of the explosion anim, and nothing in adjacent areas?Yes, it will be some form of radial dropoff. That example was just meant as a quick example, not an indication of how it will work ingame The model will probably be similar to the one used in GTA 2 - Instant death if you're close, get set on fire if you're nearby, or get blown away and hurt if you're further out. (In GTA 1 it's pretty much the same, but you don't have a health meter so it's either instant death, fire, or nothing at all) Do you have a "people blown off their feet" anim?Not yet - but I haven't drawn any sprites or made any final lists of animations yet. So basically, if a "people blown off their feet" anim is needed (which it probably will be), I'll make sure one is there. I suppose flipped cars are already catered for?Yes - cars can't flip I'll upload a short gameplay video of GTA 1, so you can see what things used to be like. I was going to upload a fairly long video, but after playing around for a while it seems that it's impossible to encode a 320x240 video at anything less than 400kbps. Either that or the motion detection isn't working properly due to poor framerate. |
[ Log in to reply ] | |
Jeffrey Lee | Message #72078, posted by Phlamethrower at 15:36, 24/11/2005, in reply to message #72074 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
http://www.phlamethrower.co.uk/misc2/gta1.mpg (14MB) |
[ Log in to reply ] | |
Jeffrey Lee | Message #72079, posted by Phlamethrower at 17:06, 24/11/2005, in reply to message #72078 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
*tries to resist the urge to start coding* Ped AI activities These are all the different AI modes peds can be placed in.
Cars have no AI without a driver. Thus, to set the AI of a car, you only need to set the AI of the ped that is driving it. E.g. a car with it's driver set to kill someone, will try to run that person over or use car mounted weapons to kill him. Extra flags will also be available, controlling what modes of transport the ped is allowed to make use of:
Other ped/car events
Any other ped/car related events people can think of? |
[ Log in to reply ] | |
Simon Challands | Message #72080, posted by SimonC at 17:50, 24/11/2005, in reply to message #72079 |
Right on, Commander! Posts: 398 |
*tries to resist the urge to start coding*Why? Just leap straight in and make it up as you go along. I inevitably find that I lose interest in something before it degenerates into an impossible to work with mess |
[ Log in to reply ] | |
Jeffrey Lee | Message #72081, posted by Phlamethrower at 17:53, 24/11/2005, in reply to message #72079 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Ped AI control
So, onwards we go... Spatial sorts I think a simple system would be best. Split the map up along every 4th row and column of the block stack array. In each of these regions keep a list of the peds, cars, and objects that have their origin in that region. Collision detection routines will then check against that region and the 8 neighbouring regions. Non-collidable objects (skidmarks, explosion graphics, etc.) can be stored on the tail end of the object list for that 4x4 region, while collidable objects can be stored on the head end of the list. This will allow all the non-collidable objects to be skipped by the collision detection algorithms. There will probably only be 2 or 3 levels of road in any 4x4 region, so sorting peds/cars/objects by their Z coordinate would be pointless. Hmm, I seem to have run out of stuff that needs designing. Help?! |
[ Log in to reply ] | |
Jeffrey Lee | Message #72083, posted by Phlamethrower at 17:55, 24/11/2005, in reply to message #72080 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
I inevitably find that I lose interest in something before it degenerates into an impossible to work with messThat's what I'm trying to avoid doing If I don't design as much as possible as properly as possible, I'll either lose interest before getting stuck or get stuck then lose interest. |
[ Log in to reply ] | |
Richard Goodwin | Message #72084, posted by rich at 17:57, 24/11/2005, in reply to message #72079 |
Dictator for life Posts: 6828 |
Any other ped/car related events people can think of?PED_STOP_FOR_NICE_CHAT PED_TALK_ABOUT_WEATHER PED_SIT_AT_PAVEMENT_CAFE_SO_CAR_CAN_CRASH_THROUGH_SCENE PED_BUY_HOTDOG_FROM_VENDOR PED_STACK_BOXES PED_CARRY_GLASS_ACROSS_STREET PED_RUN_FRUIT_STALL PED_RUN_AWAY_SCREAMING I think I've seen to many bad '70s cop shows... However, some of these are of course used in later GTA games. ________ Cheers, Rich. |
[ Log in to reply ] | |
Jeffrey Lee | Message #72085, posted by Phlamethrower at 17:59, 24/11/2005, in reply to message #72084 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
PED_STOP_FOR_NICE_CHATPED_GO, with a trigger to activate some mission code to display some text when it reaches it's destination PED_TALK_ABOUT_WEATHERSimilar to above PED_SIT_AT_PAVEMENT_CAFE_SO_CAR_CAN_CRASH_THROUGH_SCENEAnd that, although obviously it would activate the car moving rather than a message Hey, stop editing your post while I'm replying [Edited by Rich at 17:59, 24/11/2005 - it's OK, I'm done now!] |
[ Log in to reply ] | |
Richard Goodwin | Message #72086, posted by rich at 18:03, 24/11/2005, in reply to message #72085 |
Dictator for life Posts: 6828 |
How about PED_SILLY_BLOODY_JOGGER and PED_WALKING_ICKLE_FOO_FOO_DOGGY? Although running would sort out the first, and custom sprites handle a lot of stuff for both. Hey, I'm just thinking how to make this a living, breathing cityscape. Although it might not work so well with the prison setting... PED_THROW_BRICK_THROUGH_SHOP_WINDOW? ________ Cheers, Rich. |
[ Log in to reply ] | |
Richard Goodwin | Message #72087, posted by rich at 18:05, 24/11/2005, in reply to message #72085 |
Dictator for life Posts: 6828 |
I was thinking more about telling the ped to sit; the car crashing through the scene would be me, at which point they'd be running screaming.PED_SIT_AT_PAVEMENT_CAFE_SO_CAR_CAN_CRASH_THROUGH_SCENEAnd that, although obviously it would activate the car moving rather than a message Perhaps an extension of RIDE - although that'd mean you'd need some kind of "vehicle" that appears to be a chair and has a top speed of 0mph. ________ Cheers, Rich. |
[ Log in to reply ] | |
Jeffrey Lee | Message #72088, posted by Phlamethrower at 18:21, 24/11/2005, in reply to message #72086 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
How about PED_SILLY_BLOODY_JOGGERHmm, I guess an extra control will be needed to state if a ped should walk or run as its default activity. Also we need an EVADE mode, so that the ped tries to get away from something. One thing that does need thinking about though, is the gang system. Each ped will belong to a gang, the relationships between the gangs will dictate how they react to each other, some AI modes could be set to target specific gangs, etc. I guess the game config script would contain definitions of the form: GANG 1 NORMAL GANG 2 POLICE GANG 3 CRIMINAL GANG 4 PRISON1 GANG 5 PRISON2 GANG 6 PRISON3 GANG 7 CORP1 GANG 8 CORP2 ..etc. Each colour combination listed in the ped definition files would then have a gang associated with it. If a max of 32 gangs (or 64) is used, then the gangs and gang membership can be represented as a set of bitflags. You can then use the gang information to specify what ped types should spawn in a map region, the target for an AI goal, etc. GANGAI POLICE KILL CRIMINAL would cause the police to kill criminals, GANGAI CRIMINAL JACK NORMAL would cause criminals to carjack normal people, etc. |
[ Log in to reply ] | |
Jeffrey Lee | Message #72089, posted by Phlamethrower at 18:23, 24/11/2005, in reply to message #72087 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
I was thinking more about telling the ped to sit; the car crashing through the scene would be me, at which point they'd be running screaming.Adding new activities should be fairly easy - I just wanted to make sure I had the majority of them listed so I can work out what the system needs to cope with. |
[ Log in to reply ] | |
Jeffrey Lee | Message #72090, posted by Phlamethrower at 19:14, 24/11/2005, in reply to message #72089 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Hash code has been written (Note - It just uses an unsorted list, so will be very slow ) |
[ Log in to reply ] | |
James Shaw | Message #72091, posted by Hertzsprung at 20:13, 24/11/2005, in reply to message #72090 |
Ghost-like Posts: 1746 |
:uploadyouruml: |
[ Log in to reply ] | |
Jeffrey Lee | Message #72094, posted by Phlamethrower at 20:33, 24/11/2005, in reply to message #72091 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
:uploadyouruml:UML? Fuck off |
[ Log in to reply ] | |
Jeffrey Lee | Message #72102, posted by Phlamethrower at 00:32, 25/11/2005, in reply to message #72094 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
IT EXISTS. Well, the WIMP interface does.
|
[ Log in to reply ] | |
Adrian Lees | Message #72103, posted by adrianl at 01:22, 25/11/2005, in reply to message #72102 |
Member
Posts: 1637 |
Isn't that a bit like designing the iPod case before inventing the HD and audio compression? [Edited by adrianl at 01:24, 25/11/2005] |
[ Log in to reply ] | |
Jeffrey Lee | Message #72104, posted by Phlamethrower at 01:38, 25/11/2005, in reply to message #72103 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Isn't that a bit like designing the iPod case before inventing the HD and audio compression?Well, the headphone socket and buttons on the case work! |
[ Log in to reply ] | |
Jeffrey Lee | Message #72105, posted by Phlamethrower at 02:49, 25/11/2005, in reply to message #72104 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Mission script tokens While tokenising the mission script, the tokeniser may come across one or more of the following:
typedef struct { It's as simple as that! For reserved words, the data will be the word ID. For variables, the data will be the pointer to the variable in the mission script variable data structure. Constant values will be converted to variables with unique, unreproducable names. The name will start with the variable type identifier, then will contain a semicolon (thus making it unreproducable), then the string version of the variable, taken straight from the mission script. The mission variable repository This will use the hash ADT. The key will be the variable name, the value will be the following structure: typedef struct { The mvar structure is what token.data will point to. Data will be arranged as follows:
|
[ Log in to reply ] | |
Jeffrey Lee | Message #72106, posted by Phlamethrower at 04:11, 25/11/2005, in reply to message #72105 |
Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff
Posts: 15100 |
Mission variable repository... coded! |
[ Log in to reply ] | |
James Shaw | Message #72111, posted by Hertzsprung at 09:24, 25/11/2005, in reply to message #72103 |
Ghost-like Posts: 1746 |
Isn't that a bit like designing the iPod case before inventing the HD and audio compression?You don't buy an iPod for the music though, do you. |
[ Log in to reply ] | |
Pages (22): |< < 3 > >| |