WOT: A Good Game - Wotxels; the first of its name
- Youtube: https://www.youtube.com/@wellknowngamestudio9054
- Twitter: https://twitter.com/WellKnownGames
wot-demo-more-compressed.mp4
Here is an overview picture of the models that have been made for the prototype so far and how (in the modeling software) they were built together to get a rough idea of how well they look together and work together.
Here is a zoomed-in view of the character sizes, starting with the largest on the left, with two options for medium models (medium and medium-flat), and then the smallest model (which is simply a few small blocks of certain colors/traits).
Here is an example drawing showing the different level sizes (rough approximation) that could be used for different parts of the world, broken down into 3 main categories:
- Overworld - This is the most zoomed out, at which point we'd be using the smallest character models, that would only be a few blocks tall. The Overworld allows the player to traverse the whole world and enter points of interest. Within the overworld the player can see the points of interest rendered as smaller models, and can even see other smaller versions of NPCs such as enemies and friendlies (but likely not animals and other environmental objects).
- Point of Interest - This is the medium model - at which point we'd be using the medium / medium-flat models. This would be used for towns or other places that the character goes to in the overworld. Within points of interest there will be NPCs including animals, as well as interactibles such as buildings, chests, collectables, and such. If a player enters a building / cave, etc. they will transition to the interior model (largest).
- Interior - This is the most zoomed in model of a specific place which uses the largest / most detailed character model. This might be used for the inside of a house or cave for instance.
Here is how they currently look:
Interior (Rand House):
rand-house-compressed.mp4
Overworld:
opening.mp4
herding.mp4
attack.mp4
If on MacOS: using modern xcode
If you upgrade your macos/xcode beyond what is supported by your version of unreal engine, you may need to do the following:
- Edit
/Users/Shared/Epic Games/UE_5.6/Engine/Config/Apple/Apple_SDK.json
Here's a useful Unreal Engine Style Guide that can help answer some questions about why and how to do certain things within UE5.
TODO: add info.
If you want to do direct distribution for MacOS, you need to enable Hardened Runtime in the Xcode project. It's also recommended to do Product->Archive
from within XCode to ensure everything is signed properly.
Follow the setup instructions here.
Note: you will likely have to modify the /Users/Shared/Epic\ Games/UE_5.6/Engine/Extras/Android/SetupAndroid.command file - possibly to
point to the right JAVA_HOME directory. In my case I had to modify the
JAVA_HOME export in the SetupAndroid.command file to point to
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home and had
to install jdk8 specifically.
You will need to set the environment variables (under Android SDK)
appropriately, e.g.:
Android SDK:/Users/bob/Library/Android/sdkAndroid NDK:/Users/bob/Library/Android/sdk/ndk/28.1.13356709Location of JAVA:/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/HomeSDK API Level:android-34NDK API Level:android-34
For that version of java (jdk 8) which is required to successfully build for android, you can (on macos) install it via:
brew install --cask adoptopenjdk8You will also need to update a build config file in your unreal engine installation. See this link for more info.
Add the following lines to the dependencies section of your UE app/build.gradle:
/Users/Shared/Epic Games/UE_5.6/Engine/Build/Android/Java/gradle/app/build.gradle
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'src/main/libs', include: ['*.jar'])
// note Gradle will use newest version if multiple specified
implementation('androidx.appcompat:appcompat:1.2.0')
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.6.1'
// ADD THE LINES BELOW:
def billing_version = "8.0.0"
implementation "com.android.billingclient:billing:$billing_version"
}To sign your app, you need to follow these instructions here
For more information about packaging for android see this link.
All modeling is done with VoxelMax, make sure in the settings to select
Optimize Mesh and to configure the Minimum Texture Size to at least
1024x1024.
If you have exported from VoxelMax and get multiple materials in blender, then
you can fix that by baking those materials into a single texture following this
guide
or this
guide
⚠️ NOTE: you need to be in the object edit mode when you export assets from VoxelMax, otherwise the origin / pivot point of the mesh will not be the local origin of the model, but will instead be the origin of the scene and you'll have to import with tralsation, rotation as well as scale.
- Model the land / object in
VoxelMax - Export as
VOX - Import into UE5
- Create
VoxelWorldobject and set the voxel size to be 20 cm
- Model the character(s) in
VoxelMax - Export as
GLTF - Scale the object to
0.25 - Import into
Blenderto rig - see the ./blender/README.md for further instructions on rigging and export as FBX into UE5. - After importing, make sure to enable
CPU Accessin the skeletal mesh's settings in UE
- Model the object in
VoxelMax - Export as
FBX - Import into UE5, with import scale to be
25 - You will likely have to import with a translation as well to get the pivot to be in the correct place on the object.








