Samuel Kahn

C++ Tricks: Efficient core libraries for game engines

C++ Tricks: Efficient core libraries for game engines

C++ Tricks is a series of posts on core libraries for game engines and language experiments shared as the Kahncode Core Libraries.

For a long time now, I have been meaning to write about core libraries for game engines, and share my own take on them.

I’ve always been fascinated by those tools that make your code so much more expressive and elegant. Over the course of my side projects, but also as fun little language experiments, I have compiled a collection of those core idioms of my own. Each of them emulates a feature of the standard library or adds some expressive feature to your toolbox.

Today I’d like to kick off a series of articles introducing the Kahncode Core Libraries. In each post, I will focus on one feature and shed some light on the implementation details. I will also be progressively releasing the code as I go through this series. The repository can be found on GitHub and is open for comments and contributions.

I hope you will enjoy, learn, correct and teach me something, and perhaps make use of this in one of your projects, game or not.

Continue reading →

Posted by Samuel Kahn in C++, KCL
GitCentral 1.0 released: File Locking, UE 4.23 support and more

GitCentral 1.0 released: File Locking, UE 4.23 support and more

GitCentral 1.0 has been released on the Unreal Marketplace.
This release adds the highly anticipated File Locking feature, support for the newly released Unreal Engine 4.23, as well as minor improvements and bug fixes.

As of this release, GitCentral is considered stable and is no longer a Beta plugin. As always, if you encounter any issues, please contact me at

Posted by Samuel Kahn in GitCentral
Nordic Game 2019 is over

Nordic Game 2019 is over

Nordic Game 2019 is over and what a great year it was!

This is my favorite event of the year, and I was very excited to attend again after so many years. I am very honored to have been offered to speak about GitCentral and improving quality of life and workflow for game developers out there.

Quality of life, iteration time, and general workflow improvements are aspects of your game development you should constantly strive to improve. I’m looking forward to talking more about the subject on this blog and at other events, as well as interacting with talented game studios and teams.

Several people asked to see my slides afterwards, so you can download them here. The 45 minute format was a bit too short for what I wanted to cover, but we made it! For those of you that still have questions, please contact me directly and I will be happy to help.

I strongly recommend every game developer to attend the next edition. There is so much talent on display, so many amazing people to meet, in a very intimate and relaxed setting.

Goodbye Malmö, until next time!


Posted by Samuel Kahn in Personal, Presentation
Choosing a Git hosting provider for game projects

Choosing a Git hosting provider for game projects

How to choose a Git hosting provider for game projects is a question that is often asked around. Game projects differ from the typical software project in size, team profile and requirements.

If you’re using GitCentral, you will most certainly need a remote repository to host your project. In this article we will go through some of the major Git hosting providers and compare them for this particular use case.

So what are the specific needs of a game project that make it special?

  • Confidentiality: In most cases, you don’t want your game’s source and assets to be available to everyone out there. Especially when your game is going to attract some attention from players. You will want to control the narrative, how to announce your IP or new features, and having access to the repository will let anyone know what you are doing. This is also a security issue: access to your source code could make it easier to cheat or to exploit your game.
  • Size: A game project is much larger than an average code project due to all the assets in binary form. For instance, all of Unreal’s uasset and umap files, but also work files from external tools such as Photoshop or Maya, which tend to be rather heavy. Git is notoriously bad at dealing with large files and its decentralized model requires full access to the entire history locally. This means your computer would have to store all binary files of the project, even those you don’t need, and enough data to rebuild any version of those files. Fortunately, there has been one major effort to solve this problem, Git-LFS. This is a mandatory feature for GitCentral, so we will only look at hosting with Git-LFS and we will be looking at how much data you can store and at what cost.
  • Project Management: Unlike open-source software projects, game projects often need centralized management tools. Several people in the team need to collaborate on features at the same time. Milestones are a collaborative effort towards a certain date or set of features, all of which needs to be tracked. Good project management tools are extremely important to a game project and we will review them.
  • Users: Most users of Git are programmers. Programmers are used to dealing with command line tools and less than ideal user experience. Game projects have many different kinds of users, such as Artists and Designers, who will easily get confused if the user experience is not great. We will look at the various tools offered by those hosting providers and evaluate ease of use and user experience.

We will compare the four major hosting providers that fulfill these criteria: GitHub, GitLab, BitBucket and Microsoft Azure DevOps. Continue reading →

Posted by Samuel Kahn in GitCentral, Source Control
Announcing GitCentral

Announcing GitCentral

I am finally ready to announce and release GitCentral.

GitCentral is a source control plugin for Unreal Engine that makes teamwork easy! Share your work in a few clicks, without ever leaving Unreal. It’s intuitive, fast and fun.

Most indie developers and small teams struggle with source control or don’t use it at all! GitCentral brings the source control workflow behind major game studios to teams of any size and budget. Never lose any work again, with full history of your project at your disposal, you can work confidently and roll back at any time.

I developed GitCentral during the course of a personal project with a team of remote collaborators. I am used to source control in the context of my professional projects, where we host our own Perforce servers. Unfortunately, without this expensive infrastructure, I realized there is no good solution for smaller teams out there to collaborate easily… until now!

GitCentral solves this problem for small teams using Unreal Engine. It implements a centralized workflow in which each asset can be versioned independently. Gone is the time where you had to use Dropbox, send assets over via email, or lose work when someone makes a mistake. Practice the same workflow major game studios use at a fraction of the cost.

As its name implies, GitCentral uses Git and Git-LFS as a backend. If you want to learn more, check out GitCentral’s features.

GitCentral was released on the Unreal Marketplace today. Check it out! This is a beta release, so there may be some issues left. I am looking forward to user feedback and will be available for support.

I hope you will have a great time using GitCentral!



Posted by Samuel Kahn in GitCentral, Source Control