Project Name: Project Description
MCTk GitHub Repo
The MCTk is a project bourne out of the trials and errors i made while learning to make Roguelike games.
MCTk - The MaxCodes Toolkit - is a headers only library featuring map generators, path finding algorithms, perlin noise generators
psuedo-random number generators, Containers (Stack, Queue, Deque, List), engine logic and more. Designed to be used as an adjunct
to BearLibTerminal it provides easy to use features in order to build roguelike games in C++ with little fuss.


Making Goblins Move In this three part series i discuss various methods of moving NPC(Goblins) characters common to Rougelike games
Using the template world project listed below i explore influence maps and pathfinding algorithms, as well as some
of the math relating to distance. The series is divided into three parts, each building on what was presented in previous
installments. The parts cover:
  1. Part One: Common problems encountered in when developing NPC's for a roguelike
    The idea behind influence maps is introduced, and a simple version based on euclidian distance is used as an example
  2. Part Two: A discussion on distance and different ways it is represented
    Euclidian Distance vs Manhattan distance, and the implementation of Breadth First Search algorithm for pathfinding
  3. Part Three: Continuing the exploration of pathfinding algorithms, Dijkstra's Algorithm, A* algorithm, and Breadth First Search are explained in greater detail. Returning to the topic of influence maps, Breadth First Search
    is used for setting tile values instead of Euclidian distance to creat what the RogueDev community has dubbed "Dijkstra Maps".

As always all source code from this project is made available under the MIT license at


Project Name: Project Description
Roguelike Template Download Code: [templateworld.tgz]
This is a template C++ project that contains three headers and a driver .cpp, along with libBearTerminal, and its associate header.
I use this template for testing new ideas before merging them into whatever project i' working on. It can also be used as a jumping off
point for creating your own game.
  • The headers, basic_world.h, and basic_ent.h containe classes and structs that are the needed to make a an explorable map.
  • The functin World::sampleMap() produces a very basic map with three Rooms connected by a tunnel.
  • helpers.h contains two random number generators, one for whole numbers in any range, the other produces floating point integers.
  • basic_ent.h contains a class for creating characters, be it either a user controlled player, or an NPC although there is no pathfinding or AI included for an NPC.
    You can follow my tutorial Here to see how to do that.
  • templateworld.cpp contains the code for initializing a player andnavigating it around the map using the arrow keys.



Project Name: Project Description
nettime2 Project Repo: [http://github.com/maxgoren/time2]
Not so long ago i was feeling nostalgic and reading about the Y2K fiasco when it got me thinking
in my own ADHD scattered way about time, the UNIX epoch, how ugly the standard 'date' command output
is, and how i hadnt coded anything in C for a while. This all culminated in nettime2, a system timestamp
calibration tool, that presents a less "sterile" looking system date and time output, as well as
the ability to compare the local system time to a timeserver, and if there is a discrepancy, set
the system time to the value supplied by the aformentioned timeserver. It produces the time stamp
by transforming the amount of second since the beginning of UNIX time into a user readable string


Project Name: Project Description
libTCOD Swift wrapper
and tutorial
Code Repo: [http://www.github.com/maxgoren/swift-TCOD]
Tutorial: [SwiftTCOD Tutorial]
This project came about when I first became interested in the development
of Roguelike games. Incidently I had just started dabbling in the Swift language
and was looking for a cool project to really get a feel for what the language had
to offer. I quickly realized that although there was a significant knowledge base
in the Rogue like dev scene, it was lacking when it came to Swift. As is reflected
in the /r/Roguelikedev index of past code along events, most developers
choose the route more travelled with the extensive documentation and support for
libTCOD with python. The rest choosing to implement libTCOD or BearLibTerminal in
their native C/C++ bindings, with a smattering of developers using Rust, C#,
heck, languages like javascript, and even Go had a Roguelike tutorial. After getting
a feel for the roguelike development process by creating one in C++ using BearLibTerminal
I decided to take the plunge and create a Swift wrapper for libTCOD, taking advantage
of Swift's access to the Objective-C and thus C and C++ compiler through Xcode
The result is this, a wrapper for interacting with libTCOD in a native, Swift way,
and a tutorial to in the tradition of the various Roguebasin tutorial development cycles.