repr — function for printing Lua tables

Hey all!

I wrote a function that will come in handy when printing tables in Lua. Normally, when you call print on a table, it is first tostring-ed into a memory address and looks something like `table: 000002074CD2C070`. How unhelpful! If only there was a better way…

I’ve created a function, repr, that works like Python’s repr. It returns a nice, printable representation of Lua values (strings, numbers, bools, and of course tables). It is designed with two goals in mind: (1) be as close as possible to a literal code representation and (2) be as useful as possible during debugging. Check it out at this GitHub repository, or keep reading this post!

local repr = require(3148021300)
local myTable = {
   hello = "world";
   score = 5;
   isCool = true;
}
print(repr(myTable)) --> {hello = "world", isCool = true, score = 5}

Continue reading “repr — function for printing Lua tables”

Fast Distance Comparison Algorithm

Comparing distances doesn’t have to be slow! Learn a simple yet valuable shortcut that’ll make distance checks significantly faster in most languages.

Hey, this is a quick post about quickly comparing the distance of two points (2D or 3D). In this article, I’ll be using Roblox Lua for demonstration, but this method ought to work in many different languages. The goal is to find a fast way to answer the questions:

  • Is a point within a certain distance of another point?
  • Which of these two points are closest to this point?

Continue reading “Fast Distance Comparison Algorithm”

Spell Slingers Character and Ability Previews

Hey everyone! I took some time today to record some previews for a few characters/abilities in Spell Slingers. These are all works-in-progress with placeholder character names, models and kits. Everything’s subject to change, but in the meantime I want your feedback! So, what do you think?

I’m open to feedback on Twitter or via the game’s Discord server; this invite link still has more than 50 uses left from last week’s announcement – check the Spell Slingers splash page and Twitter in case this invite expires!

Announcing: Spell Slingers

Aww yes! It’s time. I’m officially announcing my next title on Roblox…. Spell Slingers! Click here to visit the splash page for the game.

Spell Slingers is the name of the MOBA game I have been working on since December 2017. I briefly mentioned it in my graph theory series and on my personal Twitter feed. I’ve poured my heart and soul into developing the game and its engine, so I’m hoping this will be my best game yet. Open beta has not started yet, but I will make announcements (here, Twitter, Discord, Roblox…everywhere) when it does.

Please follow the official Twitter @Spell_Slingers! If a group on Roblox is more your speed, you can join it here. Finally, I’ve set up a Discord server for the game, but be warned: that invite link only has 100 uses on it! If you’re from the future, check the Twitter for an up-to-date link).

I’m excited to share more information with you soon. Thank-you for your unending support, and I’ll see you soon in-game.

Mirror Muse is now Free-to-Play!

Hello everyone! This is a quick blog post to announce that my 2015 game Mirror Muse is now free on Roblox.com! Click the game icon below to play it now:
Game Icon of Mirror MuseI made this game in Fall 2015 during my internship at Roblox Corp under the Accelerator Program. My goal was to create a compelling mobile puzzle game. While I feel that I mostly succeeded, single-player games don’t exactly thrive on Roblox, especially not ones designed for mobile play.

So, to help drive players to at least try out the game and blow the dust off, the game is now free-to-play. You can still unlock more puzzles with the variety of modules available for only 10 Robux each. The level editor is also still available for only 40 Robux.

If you’ve never tried the game out, now’s your chance! Thanks for your support.

Object-Oriented Programming in Lua (Part 5 – Inheritance)

Inheritance is ubiquitous in the world of object-oriented programming. It makes your classes easy-to-maintain and allows you to reuse a lot of your software. In Part 4, we cleaned up some class code and packaged it all into one nice complete class. In this part, we’ll talk about how we can form a relationship between two classes in which a subclass inherits the state and behaviors of a superclass.

Continue reading “Object-Oriented Programming in Lua (Part 5 – Inheritance)”