Platform Game Designer Platform Game Designer is separated into two different programs, the linear designer and the explorer game designer. The former creates linear platform games where the player must collect all items on each screen before progressing to the next, the latter creates exploration-based games where the player can move from room to room at will. Although slightly different, most features are common to both utilities and these instructions have been written as a general guide to using both. Where differences occur they are documented. Main Menu Enables you to select a function of the game you wish to design. The amount of memory remaining available to your application is displayed in the top right corner of the this screen. Sprite Design Move cursor around the sprite with the cursor keys. Use SPACE or 0 to set/unset a pixel. ENTER returns to the main menu. Sprites 00 and 01 are used as the main player sprites, and have 8 frames of animation each. Sprite 00 is displayed when the player moves left, and sprite 01 when the player moves right. All other sprites have four frames of animation and may be used for the patrolling nasties. F = Next frame L = Last sprite N = Next sprite P = Paper colour I = Ink colour B = Toggle brightness M = Copy current frame to clipboard H = Flip sprite horizontally V = Flip sprite vertically K = Paste frame from clipboard C = Clear current frame X = Create a new enemy sprite D = Delete current sprite (cannot delete sprites 00 and 01) ENTER = Return to main menu Character Block Design Blocks are used to construct the screens. Each block is 8 x 8 pixels in size, and has a different type assigned to it. There are a number of different types, each with its own different set of attributes. These are: EMPTY SPACE - player can move freely through free space blocks. NORMAL PLATFORM - player may move freely past platforms from left or right, and jump onto them from any direction. CONVEYOR LEFT - a solid block which propels the player left, as if standing on a conveyor belt. CONVEYOR RIGHT - as above but propels the player right instead of left. SOLID WALL - a block which is impassable from any direction. DEADLY - touching a deadly block results in the loss of a player life. COLLECTABLE ITEM - an item which needs to be collected by the player. ON/OFF PLATFORM - a platform which appears and disappears every few seconds. The linear game designer has the following additional blocks which are not available in the explorer game designer: CRUMBLY PLATFORM - as a normal platform, but as a player stands on this it crumbles away and eventually becomes empty space. EXIT - empty space which flashes when all items collected. Moving into a flashing exit proceeds to next screen. MAGIC DOOR - an impassable block which disappears once a magic key has been collected. MAGIC KEY - an item which when collected turns all magic doors into empty spaces. Move cursor around the character with the cursor keys. Use SPACE or 0 to set/unset a pixel. ENTER returns to the main menu. Q = Move left through list of block properties W = Move right through list of block properties L = Last block N = Next block P = Paper colour I = Ink colour B = Toggle brightness M = Copy current block to clipboard K = Paste block from clipboard C = Clear current block X = Create a new character block D = Delete current character block ENTER = Return to main menu Screen Layout Move cursor around the screen with cursor keys. Use 1 and 2 to select the character block you wish to place at the current cursor position. SPACE or 0 places the desired block on the current screen at this position. ENTER returns to the main menu. 1 = Move left through block table 2 = Move right through block table N = Next screen P = Previous screen X = Create a new screen D = Delete current screen T = Change title of screen B = Set colour of title bar (for all screens) ENTER = Return to main menu Patrolling Nasties This is tricky and takes some practice to master, but is easy enough when you know how to use it. It helps if you have already designed your screen layout, and at least one alien sprite before selecting this function. The path followed by each the aliens on any particular screen are shown as red bars. Each alien can patrol up and down, or left and right but not in any other way. Using the Q key to toggle between the aliens on any screen. Once an alien is selected use the cursor keys to move the bar around. SPACE or 0 will allow you to move the other end of the bar. N = Next screen P = Previous screen Q = Move next patrolling alien S = Change speed of selected alien T = Change type of sprite used for selected alien D = Delete selected alien X = Create new alien on current screen (up to 4 per screen) ENTER = Return to main menu Player Starting Positions This option is unique to the linear game designer. Use this to determine where the player will start on each screen. Move the start position around the screen with the cursor keys. N = Next screen P = Previous screen ENTER = Return to main menu Map Layout Only available in the explorer game designer. The "map" of your game is arranged as a grid of 10 x 8 locations, all of which start off empty. Empty locations appear as two hyphens "--", rooms appear as the screen numbers, eg "01" or "12". As each room is designed in the screen designer it can be placed in this grid at a chosen location. During the game it will not be possible for the player to move into an empty grid space, nor will the game start if the starting grid location is empty, or has not been selected. The red cursor can be moved around the grid using the cursor keys, to change the room at a particular grid location move use keys '1' and '2'. Rooms are displayed in the bottom two thirds of the screen as they are selected to make matters easier. Your map will follow the rules of Euclidean geometry, but you can bend the rules to create a warped playfield should you desire. Moving left from a room situated at the left edge of the map will cause the player to re-appear in the room placed at the right edge of the next row up, if one is placed there. Similarly, moving right from a room at the right edge will take the player to the room at the extreme left edge of the room one row below. If you don't want this to happen you should construct walls on the relevant screens to form a physical barrier. It is also possible to re-use a room, that is to make it appear more than once in your map. Press 'X' to declare a grid location as the point at which the player is to begin the game. You will then be required to manipulate a red cursor to determine player's starting coordinates. Press ENTER to return to grid layout mode when this is done. 1 = Select previous room from list 2 = Select next room from list X = Select place where player first starts the game ENTER = Return to main menu Keyboard Controls Define the controls the player will use in the game. Although it is perfectly valid to use the ENTER key in the game, when using the Test game function from the main menu the ENTER key will return to the main menu screen so the ENTER key will not work as you expected. When your game is saved this function will be disabled so the ENTER key will function correctly. Miscellaneous Displays a number of prompts asking basic questions about the game. On choosing this option you will initially be prompted "Fall without dying y/n ?". Press Y if you wish to allow the player to fall any height without dying, or N if you want a fall from a great height to result in the loss of one life. After this you will be prompted to decide how many lives the player will begin the game with, so enter a number from 1 to 9. In the linear game designer you will next be asked "Time bar on y/n?". Press Y if you want to impose a time limit to complete each screen, or N if the player is to be allowed as much time as he or she likes. The next question in both utilities is "Change direction mid-air?". Press Y if you wish the player to change direction in mid-air (like in Egghead In Space), N if not (more like Manic Miner). If you answer "yes" to this prompt you will be given the option to have the player's character bouncing all the time, usefull if you're writing a game where the main character is a ball, kangaroo, man on a pogo stick or whatever. Once this is done you can change the prompt that appears at the end of each game. Note that this prompt only appears when you run the game independently of the game designer program, and then only if you start the game with RANDOMIZE USR 32768. If you are writing your own title page and starting the game with RANDOMIZE USR 32771 this prompt will not appear. Music This allows you to add some 48k beeper music to your game. If you would rather incorporate 128k music then simply leave this screen empty and use a decent 128k music program such as Soundtracker. The music is displayed as a list of numbers, as if they were values in a series of BEEP statements. All notes in the list have the same duration, the values listed refer to the pitch, and are all in the range 00 to 24. A note with a pitch of 00 will produce a tone at middle C, whereas 24 will produce a tone two octaves higher. Two hyphens ("--") denote a rest, ie a period where no note is played. The tune is repeated ad infinitum within the game, but you can make it as long as you like, subject to available memory. An example tune, the first few bars of the theme to "Captain Pugwash", goes thus: 12 12 12 12 -- -- 12 12 12 12 -- 19 16 -- 12 16 -- 19 24 -- 19 16 -- 12 07 07 07 07 -- -- 07 07 07 07 -- 14 11 -- 07 11 -- 14 19 -- 14 11 -- 07 -- As with everything, experimentation is the best way to learn. Keyboard controls for this section are as follows: Move red cursor around the tune using the cursor keys or 5678. 1 = Decrease pitch of current note 2 = Increase pitch of current note D = Delete note at cursor position X = Insert a new note or rest at current cursor position ENTER = Return to main menu To turn a note into a rest simply press space, or keep your finger down on the 1 key. To turn a rest into a note, press 2. Status Panel This allows you to change the layout of the status panel, and is particularly useful if you intend to set up your own graphic status panel in the bottom third of the screen before your RANDOMIZE USR or CALL to start the game. For example, you may wish to draw a futuristic panel and display the score and lives around your design, or perhaps have a mediaeval scroll effect - a screen compressor will allow you to do this, but make sure your routine is located below memory address 32768. Also, if your status panel does not have enough room for a 32-character description of each room you can reduce the length of the title bar, and move it somewhere more convenient. The status panel details are displayed along with a menu. Select the detail you wish to manipulate from the list, then use the cursors or 5678 to manipulate the display item. When you are satisfied, press ENTER. In addition, when manipulating the title bar you can use keys 1 and 2 to shorten and lengthen the bar respectively. If you have the know-how, you may wish to incorporate a custom font. Set this at address 32000 or below, and make the system variable CHARS point to it by poking addresses 23606 and 23607. Patrolling Nasties Where would a platform game be without these! Patrolling nasties are the aliens, robots and other weird ceatures that inhabit the levels, and either patrol left and right, or up and down. Q = Select next alien on current screen S = Change speed of current alien T = Change type of current alien D = Delete current alien X = Create new alien N = Next screen P = Previous screen ENTER = Return to main menu Frames This option allows you to select the frame rate, or speed, at which your game will run. Select 2 to run at 25 frames per second for a fast action platformer, 3 for 17 frames per second if your game is a more considered affair. 4 runs at 12.5 frames per setting, which was the frame rate used in Manic Miner. Jump This allows you to change the height which the player may jump in your game. The HI setting enables jumps of up to 3 blocks high, the LO setting permits jumps up to 2 blocks. For a fast action game the HI setting is probably better although this may make the screen feel a little smaller. For a slower game the LO setting is recommended. Load Game Loads a previously saved game from tape. If you attempt to load a file which is corrupt, or is not a Platform Game Designer file the program will not allow you to return to the main menu, and will remain in loading mode until a valid game is loaded. The demonstration game, Space Hopper, can also be loaded into the linear designer and changed should you desire this. It is not possible to load a game created with the Linear designer into the Explorer designer, or vice versa. Save Game This option prompts for a filename of up to 10 characters, then saves the game to tape. Regular saves are recommended. This may then be loaded back into the game designer at a later point and edited further. When you have completed your masterpiece and wish to produce a version which loads and automatically runs from tape independently of the designer program you will need to write a BASIC loader program along the following lines: 10 CLEAR 32767: LOAD ""CODE : RANDOMIZE USR 32768 Then save this program to tape with SAVE "progname" LINE 10 immediately before a saved copy of your game. If you wish to produce your own menu or title screen ensure your code does not interfere with this area of memory. When you wish to start the game use a call to address 32771, as this starts the game without the "Press any key to begin" prompt. While copyright of Platform Game Designer is the sole property of its author, copyright is waived on all games produced using Either utility. You are therefore free to publish or distribute your creations as you wish, providing that you do not include the designer program itself. The save function displays the memory area occupied by your game. In addition, another 544 bytes are used as a temporary buffer just after the end address. If you are experienced and know what you are doing it is possible to use this area for your own routines or workspace, but bear in mind that it will be overwritten when the game starts. Test Game This enables you to test your work, and as such starts the game on the screen you were last editing. Press ENTER at any point to return to the main menu. Advanced Programmers Customising Your Games By starting the program with USR 32771 control is passed to the calling program, be it BASIC or machine code, as soon as the game is over. There is no reason why you shouldn't write your own introduction screen, game over routines etc. Games will not set the attributes or border colour themselves, so make sure you select the colours you want either in the BASIC loader program, or in your title screen code. Also, the screen is not cleared prior to starting the game, so either see to this yourself, or better still set up your own status panel in the bottom third of the screen. Linear games only exit when all player lives have been lost as completing the final level loops the player back to the start again with an extra life. Explorer games are unique in that they will exit should the player collect every item, so you may wish to have two separate game over screens. PEEK 33464 will return 7 on completion of the game, and zero should the player lose all lives. Memory Used Games written with either utility always start at address 32768, and the end address is displayed whenever you save your game. The following 544 bytes are not used as program code or data but as a buffer and if memory is tight you could use this area as a workspace. In practice it is likely to be of little value however, as this area is overwritten by the game during play. The rest of the Spectrum's RAM is entirely your own. PROGRAM © 2005 Jonathan Cauldwell RELEASED by CRONOSOFT Www.cronosoft.co.uk