Pictured: Early build of Randy’s Crazy Mission! running on a TV.

It’s been a good while since my last post, so I decided to share some tidbits on the actual game development (or in-engine) side of my journey through making Randy’s Crazy Mission!
Before I start, I must say that if you’ve just stumbled onto this post without knowing what my game is, then to get caught up before reading this, you absolutely need to read this site’s first post, then move on and read the second post, and then read this update post that reveals some more about the plot. Those will introduce you to the concept and story of my game. You might get confused reading this post if you don’t know what this game’s whole deal is. And I know those three posts are a lot to read, but so will the game’s dialogue. So get used to it!
Small Update
At the time of writing this, I’m finalizing the demo’s script, and getting what’s finished in the script into the game. Also, back in the Spring I started making cutscenes (though barely, since the dialogue isn’t 100% final).
Below are some screenshots from the demo in its development state. There may be some oddities in them, like the misplaced tail for the textbox in one picture. By the way, I’m going to have a filter over the game, making it look analog to fit with the Atari/old cartoon theme. But, the filter hasn’t been made yet, so any images of the game I show in this post won’t look like that.



The character on the left of this image is a red square, who looks more accurate to Atari graphics! …No, not really, it’s just a placeholder.
2 Different Games
For Randy’s Crazy Mission!, I’m basically making two different games in one… sort of…
Let me explain this game’s main gimmick yet again. When players boot up Randy’s Crazy Mission! for the first time, it’s a bad and frustrating game. Intentionally, that is. What!? No good developer who actually cares about their creations would intentionally make their game bad! Well, without a good reason, that is. After the game’s six levels (in the full game, but in the demo it will just be after the first level), you’ll replay the game, but it’ll be different.
This game’s actually about the world inside a poorly-made Atari 2600 game in the 1983 video game crash. You’d know that if you read the posts I recommended at the start. Randy goes through the game again to search for glitch artifacts called “Relics” that are able to change the in-universe game’s coding when someone plays it, so that he can improve his own game, and also get recognition for doing something without someone in the real world controlling him through the Atari (“Atari” probably won’t be said much in the game though, for obvious reasons). Because, in the story, the in-universe game’s characters and world aren’t being restricted by their programming when no one’s playing it, the levels change. For the better. There’ll be new game mechanics, cutscenes, NPCs to talk to, alleviations to the previously frustrating gameplay, even moments that take advantage of the in-universe game’s poor design.
2 Different Levels
I’m handling this in two different ways in the code. The first method is using two different rooms for the two versions of each level. Actually three versions in the case of stage 1, but I don’t want to spoil you on my plans for the full release… Each level is one room in GameMaker, with the level’s individual “screens” being smaller camera placements within the room that change when the player reaches the edge.
The room for the “improved” version of the first level, for example, will have more health pickups than the “in-universe” version that I’ll make players go through first. The in-universe programmer (I won’t share his name)

made the in-universe Atari 2600 game too hard by not placing enough suckers for health regen, so the esteemed Free Candy 4 Randy Foundation™ put more in the level for Randy’s REAL adventure. See, enemies unfortunately have a natural urge to attack him even while they’re cartridge is sitting on the shelf, so people in the game have to help him with that problem.
atariMode
My second method is the variable “atariMode.” When this variable is set to true, it will make the game act like how it is in-universe. When set to false, it changes stuff to fit the improved versions of the levels after the game really begins.
atariMode can toggle how the game transitions from screen-to-screen. In the in-universe game you play before the story, every screen in each stage takes a variable amount of time to appear, so going from one screen to the other makes you wait on a black screen for a bit. After the story begins and Randy goes through the stages again, screens transition through a quick screen swipe.
It can also control how enemies behave. In the in-universe game, enemies behave in a rigid and uniform way because they have to follow their programming by their creator who I won’t name. Otherwise, they’ll have more varied behavior and will even interact with each other.
And atariMode, when set to false, adds effects that weren’t present the first time around, like big yellow words that appear when Randy hits (or is hit by) an enemy, to add more flavor to the real game.
I’d like to note that I haven’t fully implemented these behaviors yet at the time of writing this, but I’ve already put the variable in the game.
Dialogue
When it came to how I handled the dialogue and in-game text, I used a single script solely for storing “topics,” which are what contain text for separate interactions or cutscenes. Each line of code in the topic represents a single page of the textbox.
Every topic has a title. Using a function called “dialogueBegin()” in the code, I would just insert the title in the parenthesis. So, for example, I could type ‘dialogueBegin(“Green Berries”)’ in a block of GameMaker code that is for testing textboxes with the “1” key, so I can have one of the game’s characters make my blood boil. That specific topic is one of the examples below, if you’re curious.
You know, maybe I should have handled dialogue by storing the text in a separate file instead of a script. Oh well… I’m not sure if that would affect performance or anything.
I’m planning on having different language translations stored in separate scripts, and selecting another language will set the dialogue function to use the corresponding topic script.
Below are just a portion of some unfinished topics. As you can see, there are some special characters in the text, such as asterisks and curly braces. These are for things like text effects and pauses in the dialogue. Also, in between some of the lines, there are some functions for controlling what happens in the cutscenes, like PAUSE and RESUME for example, which are for pausing and resuming the GameMaker Sequence that the topic is for (cutscenes in this game are being made using Sequences).
I recommend clicking on the images to view them in full size. Makes them easier to read.


















Glitches

Along the way, I’ve been screen-recording the game whenever I come across an interesting glitch or unintended thing when programming. I think I’ll include most of these in a video in the game’s demo that players can unlock upon completion. I’ll show a few of them right now (in GIF form). By the way, don’t question why Randy gets small when he moves in these GIFs.

Watch Randy eat an NPC (Not-Participating Character) and rapidly shoot temporary projectile sprites.

Don’t know what this is all about…

Quicksand.

Randy’s levitating clone shoots counterclockwise rotating flowers. Try to guess what kind of mechanic this is at this point in development.

W-WHERE ARE THEY GOING!?!?!?!?

Where’s he shooting that projectile from…? That sprite won’t be used for the enemies in the finished product, by the way. That sprite’s really used for “Townsfolk” NPCs. He shouldn’t have died……….

Moonwalking (in the year it debuted).

Don’t know what to say here.

He’s going in! This will end well.
By the way, while these aren’t glitches, I wanted to show some pictures I used as placeholder graphics for stuff like Randy and the ground back when I started game development and was going to make the game in Unity. I’ve gotten a new computer since I switched to GameMaker, so I don’t have Unity on my new PC. That means I can’t show you the original version of the game running with these placeholders. But I do still have the assets in a folder on an external drive I used for the project, so I decided to show you them. So…………. here they are:
