• NV Random – Controlled randomisation for UE4

    I’ve released my second Unreal Engine Marketplace product.
    This one is a configurable randomisation system, written entirely in Blueprints.

    It allows random sequences of either numbers (e.g. die rolls) or outcomes (e.g. chance to hit) to be generated, with options to coax the results into fairer distributions and to limit unlikely edge cases.

    We’ve all played games where some randomised result feels really unfair because it seems to keep rolling against us repeatedly. Since the outcome of each roll is not affected by previous rolls, it’s perfectly possible (though unlikely) to get any number of low-probability results in a row, and given enough attempts and enough players, such a sequence is almost guaranteed to happen to someone.

    So, I created this system to allow designers to control the randomness, to make it slightly less random but also closer to what we as humans expect random outcomes to be like, based on some of the tricks I’ve read about other game developers using.

    It uses a two main methods to achieve this effect:

    The first method is the use of a shuffle bag – instead of rolling for each outcome as needed, a number of future outcomes are placed into a bag and their order is randomized.
    For example, given a 20% chance, two successes and eight failures are placed into the bag, guaranteeing an exact 20% outcome over ten rolls.
    This actually changes the nature of the what is being randomised – the individual outcomes are no longer random, but instead the order of the outcomes is randomised.

    The second method uses random generation, but adjusts the chances to favour some outcomes and disfavour or disallow others (such as excessively long streaks.)
    For example, when rolling six-sided dice, each number can become more likely to be rolled the more rolls it has gone without appearing.

    The system has a lot of options to further configure the randomisation algorithm. The full documentation is available on Google docs.

    These tricks can be used for things like making sure the player doesn’t go too long without scoring a hit or a critical strike, to make sure that a weapon which deals damage in a range has an even spread inside that range, or to make it increasingly unlikely for a player to go without finding rare treasure with a very low chance to drop, to name but a few examples.

    NV Random on the Unreal Marketplace

  • Preparing content for publishing on the Unreal Marketplace

    This tutorial is a quick summary of the process for preparing a content pack for submission into the Unreal Marketplace.
    It is geared towards content-based asset packs.

    The tutorial will cover three main aspects:

    1. Preparing the content, including a list of things to check before submission.
    2. Submitting the product to the Marketplace.
    3. Updating a submission, including updates when a new version of the Unreal Engine is released.

    Read the rest of this entry »

  • Using a light function to make a lantern that casts dynamic, soft shadows from its model

    The goal of this tutorial is to set up a lantern object which casts soft dynamic shadows from the solid parts of the lantern.

    The two normal ways of creating detailed shadows are to either bake them with static lights (which will not work for a moveable light source), or to use Raytraced Distance Field Soft Shadows, which don’t work very well if the light source is actually inside the model which is supposed to cast the shadow.

    Instead of either of those, I will explain how to solve this problem by using a light function.

    A light function is a material shader that can filter the intensity of light being output by a light source.  It can be used to give the light different intensities at different angles, with the output of the light dependant on the colour of the material, from black (no illumination) to white (full illumination).

    We will use this to effectively mask the parts of the light where we don’t want it to shine at full brightness.
    Further, we will blend between two different masks depending on the distance, giving a more realistic effect where the shadows are fairly sharp close to the light source, but get softer as the distance increases.


    Read the rest of this entry »

  • NV Spline Tools – version 2.0 update

    I have just released an update to my NV Spline Tools package, adding some new features that people asked about, and fixing some minor bugs.

    New in version 2:

    • Now uses instanced static meshes for “Between Segments”, “Periodic”, and “At Points” modes
    • Can now be called at run-time via the “Build Spline Mesh Sequence” function
      • It will re-use the previous components as much as possible to improve performance
    • Added the option to specify the Mobility of the created components
    • Added the option to globally override the curve type of the points in the spline
    • Added the option to automatically drop the spline points to the closest surface under them
    • Added the ability to use separate sets of meshes for the start and the end of the sequence
    • Fixed a bug where the choice of last segment in a randomised sequence did not use the random seed
    • Fixed a bug where the sequencing of meshes would be off if more than one series of meshes used it

    NV Spline Tools is available on the Unreal Marketplace

  • NV Spline Tools – a system for setting up a modular sequence of meshes to follow the path of a spline.

    I just got my first Marketplace submission published!

    It’s is a system for setting up a modular sequence of meshes to follow the path of a spline, built entirely in Blueprints for use at edit time when creating levels.

    I had been working on some props that were supposed to follow terrain along a path, but I wasn’t happy with how the easy way to do it was to stretch the meshes between each point on the spline, because that would mean manually placing each point at roughly the correct distance apart to avoid excessive stretching.

    So, I started work on a system that would let me repeat the meshes at appropriate distances along the spline automatically, to keep each mesh as close to its proper size as possible.

    I was adding a few more layout options, and thought that maybe this system might be generally useful to people who want to use spline meshes, so I decided to add a few more features, polish it up and document it, and release it on the Marketplace for others.

    NV Spline Tools is available on the Unreal Marketplace

  • Designing RPG systems

    The following are some musings on how to make good RPG systems, and which mistakes or pitfalls to avoid, based on the systems I’ve seen in various roleplaying games.

    Note that I am talking specifically about RPG character progression systems, and not the other staples of the genre such as dialogue, choices and consequences.

    I feel that a character system should:

    • Have interesting and meaningful choices
    • Differentiate gameplay between character builds
    • Feel satisfying
    • Avoid offering truly bad choices which only act as traps for inexperienced players
    • Not get in the way of normal play

    Read the rest of this entry »

  • Design Goals

    I have played a lot of games, and in so doing I have seen a lot of the same mistakes, or at least design decisions that I disagree with, repeated many times.
    I have also seen many excellent ideas in games that really helped them to stand out and be exceptional.

    Recently, I’ve taken some time to think about the types of things that I do and don’t like to see in games, and from there I have created a list of what I consider to be good game design goals.

    Of course, some of these are subjective – they are for making the type of games I like to see – but most of them are fairly general and should apply to almost every game.

    Game Design Goals

    1. The player should have to think.

    While some amount of direction is necessary, the player shouldn’t be spoon-fed exactly what to do next every second, or every time that they complete an objective.  Occasional hints are fine, but the player should need to think and work out how to achieve their goals for themselves, rather than just following instructions.

    Bad: The player is told exactly what to do each step of the way.
    Good: The player is told roughly what to do, and can find information hinting at the solution, or work it out for themselves.

    Read the rest of this entry »

  • UE4: Repeating Terrain – using blueprints and randomisation

    When creating levels for games, you will often want to place sequences of terrain features which repeat, for example: stairs, fences, and other repetitive details.

    When making stairs, you could model an entire staircase in your 3D-modelling package specifically for the area at hand, but that requires you (or your artists) to make a lot of customised, single-use meshes.

    Alternatively, you could model individual steps (or a mesh with a small number of steps) and repeat those until your staircase is the right height.  Constantly using the same model will most likely make the repetitive use of the same texture extremely obvious and jarring.

    This article proposes a solution to this problem: to create a number of unique meshes which are all variations on the same section of the repeating terrain, and to then use a blueprint to automatically select and place the individual meshes to build up the desired length of terrain.

    For example, to model a dozen variations of a single step, and then have a blueprint which randomly (or sequentially) picks one of those variations and places it appropriately until it has built the entire staircase.

    This allows the level designer to quickly and easily create repetitive terrain features, each with a unique look, and without requiring custom assets to be made for each individual use case.

    Four sets of stairs generated from four step models using the system described in this tutorial.

    Read the rest of this entry »

  • Bioshock – Game Design Anti-Patterns

    Bioshock is a 2007 game created by Irrational Studios, and is considered to be a spiritual successor to System Shock 2 (1999).


    Despite its unique setting and atmosphere, the game contains a number of major design flaws that are worth investigating as game design anti-patterns (anti-patterns are the study of a “wrong” solution to a problem, to understand why it’s wrong and how the problem could be solved in a better way.)

    In this article, I am going to specifically talk about two areas of Bioshock’s design;

    • Interface – the interfaces that the game uses to allow the player to control its various aspects, such as genetic powers and items.
    • Balance – the way that the various elements of the game are balanced against each other, and the way the game provides difficulty to the player.

    Before I begin, I would like to mention a “pitch document” from early in Bioshock’s development, which set out the developers’ aims and design goals for the game.
    This document is available as a set of images on Irrational’s Website.  I will be referring to and quoting sections of this document throughout the article, as I describe the various problems that the developers were looking to solve.

    Read the rest of this entry »

  • Hello world!

    Now, I have the power to rant about…. EVERYTHING!