A fresh start

Welcome to Hexode, a blog dedicated to game design.

What is Hexode?

It is definitely not just a blog. It is a project. Hexode, as a video game, is a turn based strategy game focused around space combat on a hex based grid. At the moment of this post, Hexode is still in early development stage (so early it cannot be called a game yet). The code is open source, You may visit my github page, follow the stages of development, and even contribute. Despite its open source nature, and my openness to collaboration, I have a clear vision of what I am trying to achieve (more on that later on following posts). Of course people can fork the project and make it their own, I am totally fine with that. I am just stating that I will keep the ownership of this particular repository.

Read More

Hexode basic Game Design

It is about time to speak a little bit about the game itself, right? What makes Hexode different from other existing titles? And what is this going to feel like? I will try my best to highlight the most important points in the game design. Things are still subject to change, of course. But I think it is important to fix some ideas. As the development is getting me closer to something playable, I feel the need to write this down.

Read More

How to make a callback function when a UPROPERTY is being replicated in C++

In a previous post, I was speaking about a design problem I had with replication of the hexagonal coordinates of a token. My problem was that I was using a Tick event in Blueprint to compute the target position. Doing this computation each frame was not really efficient and it was not a really good design either. UE4 provides a way to implement a callback in C++ when replication happens, but at first it wasn’t working from me because the callback was never executed on the server. Well… Turned out it was normal because the replication was only happening on the non-authorities, duh !

Read More

Unreal Engine and network replication

The Unreal Engine features its own model of network communication. Hexode is a multiplayer game by essence and I will try to explain in this post how it has been implemented so far.

To understand the network replication model, one has to first grasp the object model of UE and the notion of authority. Comming from Unity3D, the object model of UE was completely alien to me as there is no such thing in Unity3D. In the latter, everything is a gameobject and you may attach any component (with some restrictions and dependencies between certain components) and any script. It also means that you may organize the code as you so desire and define how each object is being (or not) replicated.

This is not the philosophy of the Unreal Engine.

The Unreal Engine differentiates between Actors (Something that is part of the level like a character or a skysphere or the hexagonal board of a previous post), Pawns (Actors that can be “possessed” by a Controller, a human or an AI), GameMode, GameState, PlayerState, etc. Read More

Infinite hexagonal board with axial coordinates

When it comes to hexagonal boards, the choice of a coordinate system is primordial. From that choice derives the complexity of the underlying algorithms, like pathfinding for example.

Hexode uses a system of axial coordinates. Each hexagon has its position defined by two integers (U,V). This naming convention may be a bit misleading as those are the same letters used for describing texture coordinates. But I think the code itself is not ambiguous as I have defined a custom Unreal structure “HexCoordinate”, which is really handy when it comes to using it with Blueprints.

hexagonal_coordinates
Read More

Unreal or Unity3D?

I am strongly considering to switch the project from Unity to Unreal. Since the Unreal Engine is now completely free and because I think that the PBR shaders in Unity are giving bad results, it is really likely that I make the change. Light reflection is just plain wrong and it is a known bug. I am not making that up. I know Unity plans in its road map to solve the problems I have encountered, but I think that Unreal, in this aspect, is much more mature. Unity is a great tool for beginners and to make fast prototypes. There is no question about it. But I feel like I am hitting a wall here… Read More

Plasma turret – Part 2

Following the previous post about modelling comes this post about UV mapping. Before applying texture to a model, it is necessary to create a UV map. Basically, the UV is what links the texture in 2D to the model in 3D. In the example below is a depiction of the mapping of the “rotor” part of the model. For this section of the model I did mark the seams of the UV map myself (ctrl+e while having an edge selected, then “mark seam”). There are some “good practices” that I tried to follow: Read More