Topics

c++ ue4 vulkan erlang widget tdd go xmpp mnesia json exsim elixir python asyncio navigation java freetype cmake clion catch2 blog antlr

GitHub Pages Locally On Windows

January 3, 2023
[ blog  ]

My blog runs on GitHub Pages, which uses Jekyll. Usually I just push new posts to GitHub and check them once they’re active on the site, but sometimes it’s nice to be able to preview things locally.

Read More

Activatable Widgets

December 9, 2022
[ ue4  widget  ]

The CommonUI plugin for Unreal Engine has some really useful features. One of them is the notion of activatable widgets, and the activatable widget stack.

Read More

Editable Text Box With History

October 13, 2022
[ ue4  widget  ]

In the game I’m working on we use the chat window also to enter cheat commands, so I found myself in need of an editable text box with history, as you sometimes need enter the same command repeatedly. Or maybe you just want to spam the chat in the most efficient manner possible.

Read More

Unreal Chat

October 3, 2022
[ ue4  ]

Setting up a basic chat system in an Unreal Engine multiplayer game is quite easy, as UE takes care of all the networking.

Read More

Replicated Door Open in Unreal Engine

December 16, 2021
[ ue4  ]

It’s fairly easy to set up a door that opens in Unreal Engine, but having it replicate to all clients in a multiplayer game gets a little trickier. I’d like to show my take on this and explain the issues I’ve encountered.

Read More

Spline collisions in Unreal

December 7, 2021
[ ue4  ]

A spline component in Unreal Engine doesn’t really provide any collision detection, as far as I can tell. You can use the spline to add spline mesh components to an actor and those can in turn have collision, but I ran into a use case where I wanted essentially a spline based volume for detecting overlaps. So, rather than adding spline mesh components to the actor I simply added Box collision components - this gave me the results I wanted.

Read More

Navigation in Unreal

November 30, 2021
[ ue4  c++  navigation  ]

I’ve been doing some experiments with navigation in Unreal Engine. The navigation system is pretty powerful but does suffer a bit from a lack of documentation so I’m finding myself discovering things by trial and error and reading the underlying source code. I’m describing some of those experiments here primarily for my own benefit but hopefully others may find it useful as well.

Read More

Building a maze

April 12, 2021
[ ue4  c++  ]

I’ve been experimenting with the navigation system in Unreal (see my earlier posts, Click To Move and Visualizing Paths). What could be the best test environment for path finding? A maze, maybe? Anyway, making a randomly generated maze seemed like a fun project so I went ahead and did that.

Read More

Custom widgets in Unreal

April 9, 2021
[ ue4  c++  widget  ]

The UI system in Unreal, UMG, offers a fair number of widgets and allows you to do quite a lot in Blueprints. There may still be times, however, when you need to create custom widgets to fill some gap in the provided feature set, or for performance reasons. In this blog post I will go through the basics of creating a widget with custom rendering - in the near future I will follow up with more advanced issues.

Read More

Visualizing paths in Unreal

April 2, 2021
[ ue4  c++  ]

I’m continuing my experiments with the Unreal Engine navigation system, this time around I’m working on visualizing the path the character will follow. In my last blog post I described a component for finding and following paths - in this post I will talk about a component for showing the path.

Read More

Click To Move in Unreal

March 28, 2021
[ ue4  c++  ]

In this post I want to describe an approach I’ve used for controlling a character in Unreal with a click-to-move scheme. There is a sample with the Unreal Engine that has simple click-to-move, but I want something that gives me more control, allowing me to visualize the path, for example, and to allow integration with a WASD control scheme.

Read More

Unreal gotchas

January 23, 2021
[ ue4  ]

Here are some things I’ve run into lately while working in Unreal Engine, where I’ve spent way too much time tracking down the issue. By writing these down I’m hoping I’ll better remember them in the future, and maybe I can save somebody else time as well.

Read More

Experiments with Antlr

June 1, 2019
[ java  antlr  ]

At work, I’ve had reasons to look into Antlr recently and decided to do some experiments in a stand-alone project to get some experience with it. Antlr is a parser generator - I played with something like that way back when in college, but that was bison and yacc. I’ve also implemented some parsers for our data formats when working on games, usually with straight up C++ or Python code.

Read More

Area Allocator

November 4, 2018
[ c++  tdd  ]

The texture atlas in my Vulkan sprite renderer relies on an AreaAllocator class to keep track of areas allocated to the individual atlas textures. I have implemented such a class before, when I was working on EVE Online. This time around I’m building it from the ground up with unit tests, trying to do it in a proper test driven development style.

Read More

Alpha blending using pre-multiplied alpha

October 21, 2018
[ vulkan  ]

My sprite renderer needs to support alpha blending, and I’ve opted for a scheme using pre-multiplied alpha. I’m not going as far as pre-multiplying alpha into the textures, but rather performing the multiplication in the fragment shader. As far as the blending stage in the graphics pipeline is concerned, the alpha has been pre-multiplied, however.

Read More

Test Driven Vulkan

October 12, 2018
[ c++  tdd  vulkan  ]

I really like the concept of test driven development, but I’ve often struggled with applying it to the codebase I’m working in. It’s easy to do simple test projects from scratch with TDD, and I’ve used with success for new projects that go well beyond simple test projects.

Read More

Logging

October 10, 2018
[ c++  ]

When I was working on EVE Online I was accustomed to having a log viewer running at all times, capturing the log output from the EVE client (and the proxy/server when running a local server). We used to have an old program, implemented in Borland Delphi, simply called LogViewer, but then my colleague finally got fed up with it and wrote a new log viewer, dubbed LogLite.

Read More

Embedded shaders

October 9, 2018
[ vulkan  c++  cmake  ]

My simple Vulkan sprite renderer doesn’t have a large collection of complicated shaders. In fact, it only has one vertex shader and one fragment shader. Rather than loading the SPIR-V code from files on disk, I’ve opted for embedding them in the executable.

Read More

Back to basics

October 8, 2018
[ vulkan  c++  ]

I want to implement my own game engine, using Vulkan for graphics. The primary driver for this is to learn to use Vulkan, but I also want to try some things in the overall architecture and infrastructure of a game engine.

Read More

Elixir vs. Go

November 21, 2017
[ elixir  go  exsim  ]

I knew when I set out on my exsim project that it was ambitious - mixing three programming languages in one project, two of which were new to me. Elixir is very promising for handling lots of connections, and in general running concurrent tasks making good use of multi-core processors, which is why I found it interesting.

Read More

Disappointment

October 31, 2017
[ ]

My employer laid a bunch off people yesterday. While I still have a job, this makes me really sad. I feel bad for those people that didn’t have a job to go to this morning - some of them have worked here a long time, some of them are good friends, some acquaintances, some I can’t really say I know.

Read More

Go, Bots, Go

October 22, 2017
[ go  xmpp  ]

Earlier this year I started experimenting with the Xmpp protocol, and implemented bots in Python to communicate with an Xmpp server. I’ve now revisited those bots and reimplemented them in Go. I’ve been meaning to learn Go for quite a while, and this seemed like a reasonable first project to tackle.

Read More

Expiring Records

October 13, 2017
[ erlang  ]

I’m continuing my experiments with Erlang - this time trying out gen_server with a simple key/value store with a twist - the values have an expiration date.

Read More

Jumperbot

October 8, 2017
[ python  asyncio  xmpp  ]

In a previous blog I described a simple echo bot, that echoes back anything you say to it. This time I will talk about a bot that generates traffic for the chat server, that can be used for load-testing both the chat server as well as any chat clients connected to it.

Read More