Games, a challenge, and more

The Games



Abby and Elliot


Machi Koro


A Challenge

Long ago, back in my summer camp days, one of the leaders introduced us to “hacking”. While he didn't really teach us how to hack anything, he let us pretend that we were hacking his website. In reality, all it was was a puzzle, hidden in the source code behind a textbox, in which we were to find the password that would allow us move on to the next level.

For a bunch of kids who had never learned much more about code than HTML, the game was pretty difficult. After banding together with the others to eventually break through all seven levels I was left with the feeling that it could have been more.

Fast forward to now, and it is my turn to present this puzzle to you. Maybe you'll learn something… Or maybe you'll have something to teach me when you're done.

Some More

Game Engine

                import { Engine, Dimension, override, config } from 'engine';
                import cfg from '../resources/config.json';
                import Level1 from './rooms/level-1';

                @config('resources', cfg)
                class MyGame extends Engine {
                  constructor() {
                    super('#game', new Dimension(1024, 768));
                  start() {
                const myGame = new MyGame();

Currently available in two languages (JavaScript and C++), this game engine contains a number of useful features for building your own games with no additional software.

Read more

Every time I make a game, I end up reaching deeper into the inner workings of whichever engine I happen to be using. After years of using them, I took a shot at making an engine myself, based on features I've seen in the others. This is my third (I think), and most successful attempt and a reasonably easy to use and useful engine.

As it stands, I'd say it is as much a proof of concept as it is a fully-functioning library. Though it may never become a full game engine, I've been able to make some pretty decent prototypes with it with little difficulty. If you are interested, I encourage you to try it out. If it's missing a good feature you need, I'll add it in, or you can put it in yourself.

It is currently available in two languages (JavaScript and C++), but I plan to add more in the near future (Ruby or Haskell?). Detailed documentation is available in the repository.

See less

Sandy Simulator

                # sandy state
                sandyIsHungry = true
                sandyIsSleepy = true
                sandyIsHappy  = false

                # sandy brain
                if sandyIsHungry then
                    puts "Sandy is hungry!! Feed him!"

                if sandyIsSleepy then
                    if sandyIsHungry then
                        puts "Then he can go to sleep!"
                        puts "Sandy wants to go outside to take a nap"

                if sandyIsHappy and not sandyIsHungry then
                    puts "Purrrrrrr... (= ^ w ^ =)"

Learn to code by creating a virtual cat, Sandy. No previous knowledge of programming is required, and no extra software is required! Write in Ruby, in your browser, and bring your simulated Sandy to life.

Read more

Originally created to teach a few of my friends, Sandy Simulator is a series of lessons in the basics of programming using repl.it. Though Python is often the language of choice for teaching, I have always liked the friendly appearance of Ruby.

As of now, I have almost no “students,” so I haven't really built it out too much. If it ever starts gaining popularity I'm willing to add more content, and maybe more advanced tutorials in the future.

I've never really tried directly teaching before, so feel free to try out these lessons and leave feedback, even if you already know how to code. I know I'm not great at it yet, so I'll try and take your comments into consideration.

See less

Dialog System

                dialog_msg("Hello! Welcome to your new adventure.", "???", spr_oak);
                dialog_msg("I'm "+COL+"rOak"+COL+"k. What's your name?", "Oak", spr_oak);
                dialog_input("Enter a name", "Red");
                // ...
                dialog_msg("Good luck on your adventure, "+VAR+"player_name"+VAR+"!", "Oak", spr_oak);

Being a common feature of games, this Dialog System has provided an example of how to manage and display complex dialogues for over 3000 GameMaker developers. This (or some variation of it) is the system I use for my own games today.

Read more

Since most games, RPGs in particular, have some sort of dialogue between the player and the other characters, I found myself using the same sort of system in each game. Eventually, I decided to polish it and publish it on the original (now extinct) GameMaker Community.

My example includes a number of important dialog features, such as displaying the text typewriter-style, font and colour changes, splash images, string input and more. These problems often troubled newer GameMaker developers, so in its time, this example was well received by the community. In the end it has reached over 3000 people and was used to develop this game: Midsummer Night.

See less

Inventory & Shop Example

                inv_add("Apple", 3);
                // ...
                if(inv_has("Apple")) {
                  inv_subtract("Apple", 1);
                  hp += 10;

Probably the most-asked question by new game developers is “How do I make an inventory?” The disappointingly low number of high-quality examples to follow inspired me to make this system which has since reached over 4000 GameMaker developers.

Read more

Admittedly, I once wondered how to make an inventory myself, and when I looked there were shockingly few good examples on the forums (pretty much none). Rather than ask again, I ended up hacking one together myself. Eventually, I had made what I thought to be a pretty good system, and so I published it on the GMC in hopes of reducing the number of inventory questions.

After being reviewed by the moderators, my example was immediately published to the “Staff Choice” section. Since then, it has reached over 4000 people.

See less

Show more