C.G.D - Classic Game Designer

edited October 2013 in Brand new software
UPDATE: August 07, 2013

AN UPDATED VERSION OF CGD IS NOW AVAILABLE, DETAILS HERE:

http://www.worldofspectrum.org/forums/showpost.php?p=715509&postcount=63





Original post follows:

Hhhokayyyy, I'm making a test version of CGD available. If there is enough interest I'll do a rewrite that allows more features, UDGs and screens but for the moment I'd like to know how intuitive the designer is, if there are any bugs, and how many things I've forgotten to mention in the instructions.

CGD is for creating games with that early 1980's old school feel.

ls1_zps7fb980b5.gifis1_zps796736be.gif
sp1_zpseafb23a2.gifmp1_zps141d459f.gif

***Info below now obsolete***
[strike]Download the CGD game designer itself (test version).

Download the instructions (the first draft of)[/strike]
***Info above now obsolete***

Download an RZX of a simple Pacman game being created

Download the z80 of the above Pacman game embedded in CGD

21/07/13 EDIT > This version has a bug, for now POKE 29326,250, POKE 29335,250 solves it. Updated version to follow.

Feel free to host elsewhere.


mediafire links
Instructions

CGD TAP

Pacman z80

Pacman rzx


CGD uses Patrick Rak's superb XOR Shift random number generator. Thanks to Einar Saukas for the name. Though I haven't intentionally used Jonathan Cauldwell's AGD as a model to base CGD on, I must have subconsciously taken a lot of it's ideas.

I would recommend watching the RZX and look at the embedded z80, then reading the instructions and having a play with the designer.

I will post info later on including Beepola and using your own intro screen later. I anticipate changes to the instructions but once completed I would like offers of translating them into other languages. As has been suggested elsewhere, I will consider translating the designer itself into other languages but it depends how much interest there is.

I will accept entries made with CGD to the CSSCGC2013, but I don't think I can allow them to win (but maybe 'win').

I've not had this tested by anyone else yet so please be gentle. You are my play testers! I will upload some more games that show off CGD's features a bit later.
Post edited by R-Tape on
«1345

Comments

  • edited July 2013
    Hmmmm? I see you went with classic instead of crap ;)
    You can't expect me to have lunch with a man who's favourite part of the chicken is the right wing!
  • edited July 2013
    this seems to be a lot of fun.:D
    can it only create pacman typ games? - space invader typ would be nice
    kempston support too
    beepola support is great
    im from germany, but for me a german translation in not important. dont know how other people think

    but all in all... congratulation to this tool

    will try to create some (maybe crap) games in my hollyday;)
    ZX Everyday in Germany
  • edited July 2013
    Good title, good idea.
    Will check it out dude. Will do it for sure.
    ZX81/ZX Spectrum/Amiga/Atari music: http://yerzmyey.i-demo.pl/
  • I look forward to creating classic games like Skool Daze, Lords of Midnight etc
  • edited July 2013
    Sounds cool! :smile:
  • edited July 2013
    Hmmmm? I see you went with classic instead of crap ;)

    I have to thank Einar for the name suggestion. I decided to drop the crap in the end because I've spent aggggessss on this. It might not look it but it's got some of my best coding in it, unfortunately some of worst too, as I ran out of patience near the end.

    I almost went with OSGD (old school game designer) but that's not a TLA :D.
    ZX Oxo wrote: »
    this seems to be a lot of fun.:D
    can it only create pacman typ games? - space invader typ would be nice
    kempston support too
    beepola support is great
    im from germany, but for me a german translation in not important. dont know how other people think

    but all in all... congratulation to this tool

    will try to create some (maybe crap) games in my hollyday;)

    Thanks for the suggestions, I hope it is fun :smile:

    There are a lot of options regarding game type, adventure, maze, open screen arcade, breakout, platforms and ladders & turn based games. I've just put a frogger game together with it in 1 hour while listening to the cricket. In future I want to implement jumps and firing, so at present space invaders would need a lot of imagination (but there's a challenge I might take up :D).

    frogger_zps217ec831.gif
    Download MOTORWAY AMPHIBIAN HERE.
    It's a z80 of the frogger game embedded in the CGD designer.
    Yerzmyey wrote: »
    Good title, good idea.
    Will check it out dude. Will do it for sure.

    Cheers!
    I look forward to creating classic games like Skool Daze, Lords of Midnight etc

    :lol: I should have included a disclaimer!
    Sounds cool! :smile:

    Cheers! Hope people find the designer usable enough to make some fun games with it.

    EDIT > I've spotted a couple of bugs in the font designer by the way, not sure why but on occasion the font gets corrupted. Will look into this later.
  • edited July 2013
    w00t, expect a flurry of crap games from the likes of me and Rebelstar :P
    The comp.sys.sinclair crap games competition 2015
    "Let's not be childish. Let's play Spectrum games."
  • edited July 2013
    R-Tape wrote: »
    I've spotted a couple of bugs in the font designer by the way, not sure why but on occasion the font gets corrupted. Will look into this later.

    I'd suggest using Claus Jahn's excellent FZX font editor instead. Providing you stick to 8x8 characters and define all 96 of them it can output a standard Speccy font (with the .chr extension). CGD looks like a nice little tool though. Someone should use it to port the hidden snail game from the Sega Master System.
  • leespoons wrote: »
    w00t, expect a flurry of crap games from the likes of me and Rebelstar :P

    Classic games Lee, classic! ;)
  • edited July 2013
    Sorry, typo ;)
    The comp.sys.sinclair crap games competition 2015
    "Let's not be childish. Let's play Spectrum games."
  • edited July 2013
    leespoons wrote: »
    w00t, expect a flurry of crap games from the likes of me and Rebelstar :P
    Classic games Lee, classic! ;)

    Oh dear, have I* created a new euphemism? Look forward to next years Classic Games Competition. How's this: any 'crap' game entered to the comp done with CGD has to be balanced by a separate attempt at a good game?

    Either way, I hope someone is able to make something with it :smile:

    *Einar's fault :p
    aowen wrote: »
    I'd suggest using Claus Jahn's excellent FZX font editor instead. Providing you stick to 8x8 characters and define all 96 of them it can output a standard Speccy font (with the .chr extension). CGD looks like a nice little tool though. Someone should use it to port the hidden snail game from the Sega Master System.

    I remember seeing FZX and realising what a howler my font designer was. The problem is that I made the mistake of trying to share code between the udg, sprite and font designer and got tied up in spaghetti. I really need to rewrite a large section of CGD, or miss out the font designer altogether.

    It's good idea, and a far better utility than mine, but my original idea was to be able to sit down on my real speccy & be able to make a game like Vampe, so it would include the fun of doing your own font all in one sitting. But yep, any 768 byte, 96 char font can be loaded into the game (memory address 52224 as per the instructions).

    The snail game is an excellent idea (and makes me think I should have an in game music feature as I first intended), hope someone makes it so!
  • I can't seem to change the players start position.
    Also, any chance of an undo key on the sprite/block editors?
  • edited July 2013
    I can't seem to change the players start position

    So if you insert a player sprite into the map is it overwritten? Could you drop me a PM with specifics? I thought I'd sorted this bit out :sad:

    The intended function is to have the player start at xy 0,0 unless you insert a block otherwise. If you do , wherever you insert the block (like in the frogger z80's, that's where the player sprite starts).
    Also, any chance of an undo key on the sprite/block editors?

    Yep a good idea, though I should say in advance it's not as easy to properly implement as I thought. Leave it with me :-)

    Ooh also, the 'R' key rotates your UDG in the editors (not mentioned yet).
  • edited July 2013
    R-Tape wrote: »
    I really need to rewrite a large section of CGD, or miss out the font designer altogether.

    I don't think it's worth it to bother about a font editor. The task of creating a font is very separated from everything else, just like creating a loading screen. In both cases, there's no advantage to provide a built-in editor, since users will find it a lot easier to use an external, specialized tool to do it anyway.

    If you simply remove your current font designer, and perhaps just add instead an option to load a font from tape, would it save bytes useful for something else?

    (BTW C.G.D. looks really great, good work!)
    Creator of ZXDB, BIFROST/NIRVANA, ZX7/RCS, etc. I don't frequent this forum anymore, please look for me elsewhere.
  • edited July 2013
    I don't think it's worth it to bother about a font editor. The task of creating a font is very separated from everything else, just like creating a loading screen. In both cases, there's no advantage to provide a built-in editor, since users will find it a lot easier to use an external, specialized tool to do it anyway.

    If you simply remove your current font designer, and perhaps just add instead an option to load a font from tape, would it save bytes useful for something else?

    I think I agree, especially as the damn thing is bugged anyway. It wouldn't save much but memory is not really a problem, even without compression there is room for more screens. Doing so now though means a rewrite, which I'm considering.
    (BTW C.G.D. looks really great, good work!)

    Ta!
  • R-Tape wrote: »
    So if you insert a player sprite into the map is it overwritten? Could you drop me a PM with specifics? I thought I'd sorted this bit out :sad:

    The intended function is to have the player start at xy 0,0 unless you insert a block otherwise. If you do , wherever you insert the block (like in the frogger z80's, that's where the player sprite starts).

    Ok, my bad. I didn't read the instructions! I'll give that a go!

    Edit: ALS practically rights itself on this! :)
  • edited July 2013
    Ok, my bad. I didn't read the instructions! I'll give that a go!

    Edit: ALS practically rights itself on this! :)

    Heh so it does!

    lawnmower_zps340db10e.gif

    ***BUG REPORT***

    I've discovered why the font was being corrupted, when you press 'C' in the map editor it copies the current map to the clipboard. It is this data that is overwriting the font, I put the clipboard in a 'safe' place early on and forgot about it as the rest of the code grew over it.

    For now POKE 29326,250, POKE 29335,250 solves it.

    Apologies. An updated version will follow.
  • A few questions:

    1. Is there a limit to how many sprites you can have on the screen?

    2. Is it possible to display a score at the bottom of the screen?

    3. Would it be possible in a future release to change the map layout so you could have the screens lined up as a long corridor if you wanted? In something like P.A.W. you define where the exits on each screen take you so for example screen one might have the following exits:

    N>2
    E>3
    S>4
    W>5
  • edited July 2013
    1. Is there a limit to how many sprites you can have on the screen?

    Yep 12 maximum including the player.
    2. Is it possible to display a score at the bottom of the screen?

    Not in this version. Should be implemented though.
    3. Would it be possible in a future release to change the map layout so you could have the screens lined up as a long corridor if you wanted? In something like P.A.W. you define where the exits on each screen take you so for example screen one might have the following exits:

    N>2
    E>3
    S>4
    W>5

    Yeah should be, a bit like in AGD where you can have any arrangement.

    EDIT > it might even be possible to do a long corridor in this version, I'll have a look & get back to you.

    I'll do some better instructions next week too.
  • edited July 2013
    A few questions:
    3. Would it be possible in a future release to change the map layout so you could have the screens lined up as a long corridor if you wanted?

    It's not quite a long corridor but if you create a block with the 'level skip' property (the flashing hash block in the pic), and place in the map like this:

    levelskip_zps6d2b42f4.gif

    Every time you hit the right hand side of the screen you move up a level, but unfortunately you can't go back.

    Next weeks CGD update will have a 'level down' block which would enable you to go left and right in the corridor. If doing it this way the game completion can only happen on screen 9 (because if the game completes on screen 5, all that will happen is that you will appear on screen 6).
  • Excellent. I may have a "classic game" on it's way soon!
  • edited July 2013
    BTW the C.G.D. loader program contains CLEAR 26999 twice. It made me thing the program crashed the first time I loaded it, because this unnecessary repetition makes it just show a blank screen after loading everything.
    Creator of ZXDB, BIFROST/NIRVANA, ZX7/RCS, etc. I don't frequent this forum anymore, please look for me elsewhere.
  • edited July 2013
    Excellent. I may have a "classic game" on it's way soon!

    Double excellent!

    Also - if doing a flip screen game don't insert a player sprite into the map (unless you want to appear there of course).

    If you don't insert a player sprite the default start is x,y 0,0.

    You can poke different values in:

    POKE 33980,xcor (number 0-31)
    POKE 33985,ycor (number 0-21)
    BTW the C.G.D. loader program contains CLEAR 26999 twice. It made me thing the program crashed the first time I loaded it, because this unnecessary repetition makes it just show a blank screen after loading everything.

    Cheers yeah I know, the reason is that without it the designer has some very strange behaviour. It's a bug I need to sort out.

    I did all my testing dumping the code in from the SPIN assembler, and when I made it into a TAP file there was some unexpected behaviour.
  • R-Tape wrote: »
    the default start is x,y 0,0.

    You can poke different values in:

    POKE 33980,xcor (number 0-31)
    POKE 33985,ycor (number 0-21)

    This will be probably be the way I'll do it. Cheers.
  • Is this a bug?

    I have three blocks allocated as follows:

    Block 0 - Do nothing
    Block 1 - Solid Block
    Block 2 - Dec Counter 1

    When I move over block 2, instead of leaving a blank space behind, it leaves behind the solid block (block 1).

    Edit: It's okay, I think I just need to rearrange my blocks! Block 1 should be by blank space.
  • edited July 2013
    Is this a bug?

    I have three blocks allocated as follows:

    Block 0 - Do nothing
    Block 1 - Solid Block
    Block 2 - Dec Counter 1

    When I move over block 2, instead of leaving a blank space behind, it leaves behind the solid block (block 1).

    Edit: It's okay, I think I just need to rearrange my blocks! Block 1 should be by blank space.

    Yep not a bug.

    Dec counter 1 blocks are deleted with block 1, 2 with block 2, 3 with 3. I originally had them all deleted with block 0, but found occasions when it would be nice to have different. I've arranged the code to make it easy to poke numbers in if you want to change this (details to follow).
  • Yep, just me rushing in without reading the instructions properly!
    I'm having a lot of fun with this! :)
  • edited July 2013
    R-Tape wrote: »
    Cheers yeah I know, the reason is that without it the designer has some very strange behaviour. It's a bug I need to sort out.

    Perhaps because POKE 23739 affects the channel and CLEAR is one of the instructions that fully restores it.

    My suggestion is, instead of this:
    10 CLEAR 26999: LOAD ""SCREEN$ : POKE 23739,111: LOAD ""CODE : CLEAR 26999: RANDOMIZE USR 27000
    

    Try this:
    10 CLEAR 26999: LOAD ""SCREEN$ : POKE 23739,111: LOAD ""CODE : PAUSE 0: CLEAR: RANDOMIZE USR 27000
    

    Now you can remove the initial pause from your Assembly routine since it will be executed from BASIC instead.
    Creator of ZXDB, BIFROST/NIRVANA, ZX7/RCS, etc. I don't frequent this forum anymore, please look for me elsewhere.
  • edited July 2013
    Thumbs up on the rzx you provided. Very good tutorial. If only it could have annotations :)
  • edited July 2013
    Perhaps because POKE 23739 affects the channel and CLEAR is one of the instructions that fully restores it.

    Brilliant, that's it. The only ROM routine I'm using is the print number one at 6833, and it was blocking that. I'm surprised I've not had this problem before. So I could use the CLEAR, or maybe just POKE the 244 back into 23739. Thanks Einar.
    spud wrote: »
    Thumbs up on the rzx you provided. Very good tutorial. If only it could have annotations :)

    I'm going to do more of these, and maybe some written tutorials. I considered doing a youtube vid that talks you through everything but I'll never get the thing released by the time I've sorted that.
Sign In or Register to comment.