What classic game would you like to clone?

Let's Clone

Member
Hey guys!

My name is Steven French and I make clone tutorials on my YouTube channel. I have a heaps of fun making theses and I try to keep the code pretty simple for new developers to learn. But I have a question for y'all!

Which classic titles would you be interested in seeing a tutorial series on? Typically, I just make the code on the first level/stage of the game as to keep the series short, so keep that in mind =P

I think I'll be working on Tetris next as it's a pretty simple one to bang out. In the mean time, I would love to get some suggestions on other titles!!

Many thanks and much love!!
https://www.youtube.com/channel/UC09fDF0UwNmUBcyje0MBehA?view_as=subscriber
 
I

immortalx

Guest
I'd be interested in any of the pseudo 3d racing games of the past. Even back then it was very impressive and I think many would find interesting how it can be implemented in gamemaker.
 

Let's Clone

Member
How about Tetris?
Tetris is quite likely to be next. I found some assets I can use and I've made a similar game before.


I'd be interested in any of the pseudo 3d racing games of the past. Even back then it was very impressive and I think many would find interesting how it can be implemented in gamemaker.
Oh man, I've had a few ideas about that style of game but that definitely seems like a challenge. No clue how they were able to pull it off back then haha.
 
P

Penthar Kingsland

Guest
Hey... New here

You know what's stupid... i have a HP Chromebook and cant install Fortnite or a Game Maker

Just for now i use Scratch...
 
Last edited by a moderator:

Let's Clone

Member
Hey... New here

You know what's stupid... i have a HP Chromebook and cant install Fortnite or a Game Maker

Just for now i use Scratch...
That's a bummer! Game Maker is a hella fun tool.

Have you tried Godot Engine? TBH, I kinda like it even more than GM, but I'm far more familiar with this platform haha.
 

Psycho_666

Member
I want to clone patapon. It's abandonwear at this point. Sony ain't bringing the PSP back and it seems like the PS4 is no place for fun little rhythm games, so patapon is dead. Still one of my favorite games for its unique style and charm.
 

Ladi_Pix3l

Member
Collaspe!!! if anybody remembers this. I'm sure it's still around but I would like to clone one or make my own rendition of it. I just don't understand how puzzles work unfortunately
 
E

ethian

Guest
I don't know what classic i would like to clone...
All what i think about this is to clone games that are not actually classics instead of games that are actually classics... sorry...
 
My first thought is Chrono Trigger, but since you're looking for something a little more simple that you can show in a tutorial, how about the old NES game Balloon Fight? Does anybody remember Balloon Fight?
 

K12gamer

Member
PONG, Break Out, DIG DUG

Also...if you make a playable demo with Pause Menu, HTML 5 auto Fullscreen and High Score table...
It would greatly be appreciated.
 

TheouAegis

Member
I got started on Castlevania III long, long ago. I just peek at its (the NES game) code every couple of weeks until my ADHD kicks in. lol Or I dabble in cleaning up my code, because I've rewritten it so many times - another aspect of ADHD.

I've been working kinda on PuyoPuyo (the NES version). Have the chaining algorithm done, just working on game mechanics.

I have most of the code done for my Pac-Man clone but haven't finished it because I got distracted (ADHD) with trying to make a random Pac-Man maze generator that I was satisfied with (and haven't found yet).
 

TheouAegis

Member
Only using tiles? Even for Pac and the Ghosts? That would be tricky haha. But could be a good challenge?
I'm pretty sure he meant only using tiles for the maze and the pellets, not for Pac-Man and the ghosts, oh and the fruit. an empty path has a tile value of 0, naturally; a pellet has a tile value of 1; anything higher than that is a wall tile. You could make Pac-Man, the ghosts, and the fruits tiles, but that's not necessary at all, as you would still need a whole slew of variables to keep track of the same things objects could take care of easily. The maze and pellets don't need to be updated every step, so they don't need objects.

Every step (i think), Pac-Man or the ghosts update an array of all the tiles around them NESW. Every 8 pixels the ghosts track Pac-Man's position and attempt to move toward him. The fruit was just random movement every 8 pixels, I think. Pac-Man didn't need to have all four directions checked every step, since he only can move in the direction that the player says; and the ghosts and fruit don't need to be checked every step because they can only move when aligned to the grid anyway; it was just easier for them to loop through all the objects and update their tiles every step.
 

Let's Clone

Member
Damn, I wasn't getting notifications here so I'm a bit behind haha.


I want to clone patapon. It's abandonwear at this point. Sony ain't bringing the PSP back and it seems like the PS4 is no place for fun little rhythm games, so patapon is dead. Still one of my favorite games for its unique style and charm.
My buddy does picel art for me whenever we do game jams. He's been itching to make a rhythm game, so I'll run this by him. If not a clone, I could definitely make a version of this for a jam, and I typically stream the code process over at twitch when I do them.

Collaspe!!! if anybody remembers this. I'm sure it's still around but I would like to clone one or make my own rendition of it. I just don't understand how puzzles work unfortunately
Collapse would be great! I'm working on a larger project atm, so I was hoping to grab a small game to work on. This, or something like it, could be it!

I don't know what classic i would like to clone...
All what i think about this is to clone games that are not actually classics instead of games that are actually classics... sorry...
Please, drop them ideas at me! I really do get a kick out of cloning classics, but a few modern titles have been coming to my mind lately. Very likely that I will end up bouncing back and forth haha.

Not sure if it's a traditional "classic" but I've always wanted to do a shining force clone.
Never heard of Shining Force, but I will definitely be doing a turned-based game at some point. But it likely wont be for a while =/

My first thought is Chrono Trigger, but since you're looking for something a little more simple that you can show in a tutorial, how about the old NES game Balloon Fight? Does anybody remember Balloon Fight?
BALLOON FIGHT! This has been on my list for a long while now! I hope to not disappoint haha.

PONG, Break Out, DIG DUG

Also...if you make a playable demo with Pause Menu, HTML 5 auto Fullscreen and High Score table...
It would greatly be appreciated.
I have the html5 export, which I utilize whenever I do game jams. I can definitely toss that in to one of the clones soon!
High score table is easy to do locally, but I've had issues with it while using HTML5. So that might depend on what I learn first haha.

I got started on Castlevania III long, long ago. I just peek at its (the NES game) code every couple of weeks until my ADHD kicks in. lol Or I dabble in cleaning up my code, because I've rewritten it so many times - another aspect of ADHD.

I've been working kinda on PuyoPuyo (the NES version). Have the chaining algorithm done, just working on game mechanics.

I have most of the code done for my Pac-Man clone but haven't finished it because I got distracted (ADHD) with trying to make a random Pac-Man maze generator that I was satisfied with (and haven't found yet).
To a lesser extent, I know the feeling! I often create a desire to create a certain mechanic and before finishing the actual game I feel satisfied enough and move on haha.

When it comes to NES/SNES my mind goes straight to Super Ghouls And Ghosts. I replicated the movement mechanic for a jam I did last year. Hella complaints that it was too hard XD

I'm pretty sure he meant only using tiles for the maze and the pellets, not for Pac-Man and the ghosts, oh and the fruit. an empty path has a tile value of 0, naturally; a pellet has a tile value of 1; anything higher than that is a wall tile. You could make Pac-Man, the ghosts, and the fruits tiles, but that's not necessary at all, as you would still need a whole slew of variables to keep track of the same things objects could take care of easily. The maze and pellets don't need to be updated every step, so they don't need objects.

Every step (i think), Pac-Man or the ghosts update an array of all the tiles around them NESW. Every 8 pixels the ghosts track Pac-Man's position and attempt to move toward him. The fruit was just random movement every 8 pixels, I think. Pac-Man didn't need to have all four directions checked every step, since he only can move in the direction that the player says; and the ghosts and fruit don't need to be checked every step because they can only move when aligned to the grid anyway; it was just easier for them to loop through all the objects and update their tiles every step.
Yeah, I think you're right. And pretty spot on with your thoughts on implementation.
Although, you might not have known, the various ghosts have different behaviors. I've forgotten which is which, but one will move directly towards Pac, one will chase but avoid direct confrontation, one will try to predict where Pac is going to move next, and I don't recall any others. Hella neat and I didn't realize until researching for making a clone of it haha.
 

TheouAegis

Member
Although, you might not have known, the various ghosts have different behaviors. I've forgotten which is which, but one will move directly towards Pac, one will chase but avoid direct confrontation, one will try to predict where Pac is going to move next, and I don't recall any others. Hella neat and I didn't realize until researching for making a clone of it haha.
Going off Ms. Pac-Man (because it was better programmed), they spawn in the ghost house and just bob up and down over a range of 8 pixels. At the beginning of each step, it checks if the number of pills when the maze started minus the number of pills remaining is equal to the required number of pills to free each ghost and then sets the ghost to move toward the middle of the ghost house and then up out of the house. Since Blinky starts out of the house by default, he goes into flee mode and makes his way toward the top-right corner; each ghost has each of the four corners as its destination for fleeing. Every time each ghost is aligned to the grid, it gets a target position: Blinky targets Pac-Man directly, Pinky targets 3 cells ahead of Pac-Man, Inky targets abs(PacMan.x - Blinky.x), and Clyde is just messed up (lol) in that he targets Pac-Man directly like Blinky unless Pac-Man is less than 2 tiles away. But other than that, all the ghosts share the same code, so you can pretty much dump it all into one script and leave it at that.


@Siolfor the Jackal INSIDER TIP: The original Castlevania has an unintended bug in the Crow's code. Castlevania III had a bunch of typos too, but none as "game-breaking" as this one.
https://castlevaniadungeon.net/forums/index.php?topic=8633.msg190703#msg190703
I might post a video of the bug and the fix if I ever figure out how to make videos on my computer. lol
 

TheouAegis

Member
Not sure if it's a traditional "classic" but I've always wanted to do a shining force clone.
I've been playing the Shining saga Sega Classics app lately. Shining Force was the first TRPG I played and I fell in love with it instantly. I asked for it for Christmas and my dad got me SF2 instead. I was disappointed; I still love SF1 the most for its art style, but I did eventually beat SF2 a couple times. But if you "cheat" like I did and just Aura-grind her, you can basically solo the rest of the game with Karna.

Shining The Holy Ark is my all-time favorite Saturn game, although I'm not a fan of Shining In The Darkness (still playing that right now, though). Once I finally remember to download the translation guide, I'll go back to playing Shining Force III. I liked it enough even without a translation, but didn't want to get too far in without one.

The rest of the Shining games are a disappointment (although I did beat Shining Wisdom), but then again, most of them weren't by the same company.


But if we're going to go remaking TRPGs, I'd personally like a remastered version of Wachenröder from the Saturn. Its crappy graphics and weak gameplay hamper it, but the cut scenes were just simply beautiful in a steampunk, grunge way. And the soundtrack wasn't too shabby either. I mean, I actually beat the game without playing any other games between sessions, so for me it was definitely entertaining enough despite having no clue what anyone was saying (it's Japanese).

I also like Sakura Taisen, another TRPG but with a dating sim adventure game added in. Was kinda fun trying to sweet talk a little girl who brought her teddy bear along with you on a [play] date to a theme park just so I could get a combo attack out of her on the next mission. lol Again, hard to do without knowing Japanese, but I did get pretty far into the first one (I have both).

And of course, who could forget (unless they never played any of them) Front Mission? They make me rage soooo hard sometimes, but I always go back to them. There's just something so attractive about the grittiness of the games' world. And wanzers. Forget Mechwarrior, I love Front Mission's mechs sooooo much more.


OOOH! I'd love to see a remake of Wario Land 3D! lol
 
Last edited:

Let's Clone

Member
Going off Ms. Pac-Man (because it was better programmed), they spawn in the ghost house and just bob up and down over a range of 8 pixels. At the beginning of each step, it checks if the number of pills when the maze started minus the number of pills remaining is equal to the required number of pills to free each ghost and then sets the ghost to move toward the middle of the ghost house and then up out of the house. Since Blinky starts out of the house by default, he goes into flee mode and makes his way toward the top-right corner; each ghost has each of the four corners as its destination for fleeing. Every time each ghost is aligned to the grid, it gets a target position: Blinky targets Pac-Man directly, Pinky targets 3 cells ahead of Pac-Man, Inky targets abs(PacMan.x - Blinky.x), and Clyde is just messed up (lol) in that he targets Pac-Man directly like Blinky unless Pac-Man is less than 2 tiles away. But other than that, all the ghosts share the same code, so you can pretty much dump it all into one script and leave it at that.


@Siolfor the Jackal INSIDER TIP: The original Castlevania has an unintended bug in the Crow's code. Castlevania III had a bunch of typos too, but none as "game-breaking" as this one.
https://castlevaniadungeon.net/forums/index.php?topic=8633.msg190703#msg190703
I might post a video of the bug and the fix if I ever figure out how to make videos on my computer. lol
You're really looked into this, I love it! Thanks for the info.

Have you tried using OBS to record? I use it for my streaming and tutorials and it works really well for me. And it's free ;)
 
E

Exabella

Guest
If I could somehow merge Chrono Trigger and Fallout: New Vegas into a single dystopian open world game that would be :rolleyes:
 

MissingNo.

Member
I think my next clone will be either Super Mario Bros or Contra.
I agree with Super Mario Bros, yes there is a lot of Platformer tutorials out there but it would be neat to actually learn how to program Marios slippery physics and
to program stuff like the hidden 1 up blocks and multi coin blocks as well as the hammer brother movement patterns.
 

Megax60

Member
I agree with Super Mario Bros, yes there is a lot of Platformer tutorials out there but it would be neat to actually learn how to program Marios slippery physics and
to program stuff like the hidden 1 up blocks and multi coin blocks as well as the hammer brother movement patterns.

The thing i hare most is the rng bros, those hammers are not fun at all
 

Niels

Member
Never heard of it. But a quick google search has me thinking it wouldn't take too long to clone a chunk of it. I'll consider this one for sure.
It was a excelent zelda2'ish dungeoncrawler.
I once started a zeliard inspired game in gamemaker, but I kinda got stuck on the seamless room wrap part

LGR has a review of the game and called it a hidden gem:

 

TheouAegis

Member
Yeah I agree, still would be fun to see gml of them because they have a bunch of different behaviours such as jumping between layers of blocks.
So I didn't finish translating all the code for the Hammer Bros. There's a lot of stuff shared between enemies and so it's a pain to sort out what code applies to the Hammer Bros and what applies to, say, a Blooper. Then there's the whole issue of some code I haven't yet found uses for. And there's even some code I question the usefulness of. Also they handle collisions separately from the rest of the state code. But basically, it amounts to something like this:
Code:
enum states
{
    move = $00,
    jump = $01,
    fly = $02,
    stun = $04,
    attack = $08,
    dead = $20,
    axed = $40,
    slide = $80
}
/*
    NOTES ABOUT STATES
  
    Stomping enemies sets to states.stun
    Shooting enemies with fire or knocking them away sets to states.dead|states.fly
    Hammer Bros and Lakitu are always set to states.dead when stomped
    Spiny Eggs are states.fly|states.jump
    Buzzy Beetles and Koopa Troopas go to states.slide when kicked
    Bullet Bills are states.jump when alive
    Cutting the bridge sets Bowser to states.axed (otherwise he's dead)
*/

var rand;
rand[0] = irandom(255);
rand[1] = irandom(255);

if !(state & states.dead)
{
    //If not ready to jump
    if alarm[0]
    {
        alarm[0]--;
      
        //If not ready to attack
        if alarm[1]
            alarm[1]--;
        else
        {
            //Throw a hammer...maybe
            alarm[1] = $30 - $14*HARD_MODE;
            var n = rand[0] & 7;
            if !n
                n = rand[0] & 8;
            if !hammers[n] && !global.instances[n div 3 + 4]
            {
                    hammers[n] = $90; //not sure yet what this is for, seems to be multi-purposed
                    with instance_create(x,y,obj_Hammer)
                        owner = other.id;
                    state |= states.attack;
            }
            else
                alarm[1]--;
        }
    }
    else
    {
        //Jump up or down, depending on location on the screen
        if state & 7 != states.jump
        {
            var n = 0;
            //If over halfway down, jump to the highest possible platform
            if y > $7F
                vsp = -6;
            else
            //If essentially in the top half of the screen, jump down a little ways
            if y < $70
            {
                vsp = -4;
                n = 1;
            }
            else
            //If in the middle, jump wherever
            if rand[0] & 1
                vsp = -4;
            else
                vsp = -6;
          
            state |= states.jump;
          
            //If jumping down in hard mode, there's a 50% chance to jump all the way down
            if HARD_MODE
                n &= rand[1];
            else
                n = 0;
            //Set the collision timer
            alarm[2] = $20 + $17*n;
          
            alarm[0] = rand[0] | $C0;
        }
    }
  
 
    if global.timer & $40
        hsp = -$B0/$100;  
    else
    if !CHASE_TIMER
        hsp = -$60/$100;
    else
        hsp = $50/$100;
    if x < Mario.x
        image_xscale = 1;
    else
        image_xscale = -1;
}

    /* This next block used by all enemies, condensed for Hammer Bros here */
  
//                if state == states.stun | states.jump
//                    grav = $20/$100;
//                else
grav = $3D/$100;
y += vsp;
vsp += grav;
if vsp > $47F/$100
    vsp = 4;
/* add friction, but it's 0 in this case */
x += hsp;
I left out a bunch of stuff, since this was just to get an idea of how they worked. The collision checking happens at some point outside the scope of this code. The code is pretty messy, in my opinion. Anyway, there are a couple key points here. When an enemy dies, it just does movement code and that's about it. There's some stipulation I saw in the code to suggest otherwise; maybe it was for Bowser - whatever, I didn't delve into it because it didn't apply here. So assuming our Hammer Bro isn't in his death state, it counts down a jump timer (alarm[0]). If that timer hasn't gone off yet, it then counts down a hammer timer. If the hammer timer fires, the Hammer Bro picks a random piece of pre-allocated instance memory to try to create a hammer in; if that memory is already occupied, then he won't throw the hammer. ....I'm not sure why it's so complicated, but I guess it has something to do with how two Hammer Bros co-operate with each other. Anyway, when the jump timer goes off, the game checks the Hammer Bro's y-coordinate. If farther than halfway down the screen, he will do a high jump and land on the highest possible platform. If he's in the upper half of the screen, he'll try to jump down to the farthest platform. If he's in the middle, he'll randomly jump up or down (or just up if a platform is directly above him). In hard mode, there's a 50% chance to jump all the way to the ground floor from the highest platform. A collision timer is set based on the outcome. Now, the thing about old console games is they used a game timer that just constantly counted up. In my code, I refer to it as global.timer. The Hammer Bro will change direction every 64 steps (roughly 1 second) unless his chase timer has gone off, in which case he'll just run after Mario. I apparently overlooked the code that tells the Hammer Bro to change movement when Mario jumps over him, but whatever. Anyway, then the Hammer Bro moves as one normally would.

Now the way jumping across platforms is handled, from what I can tell, is when he jumps, the collision timer (alarm[2]) is set to either a low value or a high value. When the Hammer Bro detects terrain (e.g. breakable bricks) below him, it then checks if that collision timer has gone of yet; if the timer hasn't gone off, he just keeps falling through the block, treating it as a one-way platform; but if the collision timer has already gone off, then he will land on the platform. If you noticed, he always jumps high with a short collision timer when low on the screen; that way he is less likely to fall off the screen.
 

Let's Clone

Member
So I didn't finish translating all the code for the Hammer Bros....
Homie, this is amazing!
First of all, how did you access the original code that you analysed/translated? Super interested in how you were able to look into the actual mechanics, as I've been basing all of my clones off of fell haha.

Secondly, I imagine the Hammer Bro's reason for checking a pre-allocated instance of memory is to reduce file size. This single instance wouldn't save a whole lot, but this tactic could be useful if used more throughout the game. They had hella small memory sizes after all, so them bits were valuable haha.
 

MissingNo.

Member
as I've been basing all of my clones off of fell haha.
What is fell? Was that a grammar mistake or is it some abbreviation I'm not aware of?

Secondly, I imagine the Hammer Bro's reason for checking a pre-allocated instance of memory is to reduce file size. This single instance wouldn't save a whole lot, but this tactic could be useful if used more throughout the game. They had hella small memory sizes after all, so them bits were valuable haha.
Yeah Miyamoto has gone on record saying that once they got near completion of the game they wanted to add another easier enemy instead of the Koopa being the normal enemy.
So they came up with the idea of Goomba, the problem was that they didn't have much space left to work with so they just made one sprite and flipped it back and forth
to give the illusion of it walking. So as you can see space was very limited.
 

Gamebot

Member
How about old school comodote 64 games such as Choplifter and omega race. Those are pretty easy as far as setup.

The era includes donkey kong, congo bongo, pac man, up n down, root beer tapper! Love em all.
 
Top