Winds of Almerra

An open-world, melee RPG full of life built in UE4


Scripting, Coding, Words, Colors

C#, C++ and other compiled endeavors

For mapping data elements, nothing beats spreadsheets.  When planning out massive game worlds, there is sometimes a need to align foliage, fauna or other data elements to world space to procedurally add various mechanics.  This is where a simple conversion script can come in handy to directly convert images to csv's.

Data Layering with Image to CSV Conversion


(Happy data generated using 'B' color values, slightly warped just due to my column sizing in excel :) )

Easy peasy in C#!  The struct for the Y alignment columns needs be to setup in Unreal according to the image's resolution.  The above is using a 64 x 64 image, and is read/wrote using System.Data; and System.Drawing;

The method involves taking a specific pixel via:
System.Drawing.Color pixelColor = testimage.GetPixel(x, y);

and breaking it into its R,G,B component via:
string pixelColorStringValue = pixelColor.B.ToString("D3");

From there its as simple as adding the image.Width and .Height into loops based on a set image size to bookend the comma deliminator.  Now you can draw any kind of data within Photoshop!

Using a hidden static mesh as the base of the Boat--and a Skeletal version with jointed components as the visual version you can create a "stable" platform for movement and collisions while still allowing for simple rigged animations for oars or other props.  


Physics in-engine can then be used on an array of points by using: AddForceAtLocation(FVector(DampingForce.X, DampingForce.Y, DampingForce.Z + BuoyancyForceZ), TestPoint).



The result of three panning sine waves in world space at z=26000 --a responsive, lightweight ocean system that can be pinged for Z values

Ocean Buoyancy & Walkable Surfaces