Skip to content

Well-known-Game-Studio/wot_a_good_game

Repository files navigation

wot_a_good_game

WOT: A Good Game - Wotxels; the first of its name

image

wot-demo-more-compressed.mp4

Overview

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.

Model Overview

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).

Character Sizes

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:

  1. 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).
  2. 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).
  3. 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.

Level Sizes

Here is how they currently look:

Interior (Rand House):

CleanShot 2025-06-28 at 15 15 44 CleanShot 2025-06-28 at 15 16 07

rand-house-compressed.mp4

Overworld:

image image

Controls:

CleanShot 2025-05-20 at 12 48 39

Opening

opening.mp4

Herding

herding.mp4

Attack

attack.mp4

Development

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:

  1. Edit /Users/Shared/Epic Games/UE_5.6/Engine/Config/Apple/Apple_SDK.json

Programming

Here's a useful Unreal Engine Style Guide that can help answer some questions about why and how to do certain things within UE5.

Packaging

Setup for iOS App

TODO: add info.

Setup for MacOS App

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.

Post about dSYM files

Setup for Android App

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/sdk
  • Android NDK : /Users/bob/Library/Android/sdk/ndk/28.1.13356709
  • Location of JAVA : /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
  • SDK API Level : android-34
  • NDK 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 adoptopenjdk8

You 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.

Modeling Workflow

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.

Land and other Voxel / Destructable Assets

  1. Model the land / object in VoxelMax
  2. Export as VOX
  3. Import into UE5
  4. Create VoxelWorld object and set the voxel size to be 20 cm

Characters, NPCs, and Assets Requiring Rigging

  1. Model the character(s) in VoxelMax
  2. Export as GLTF
  3. Scale the object to 0.25
  4. Import into Blender to rig - see the ./blender/README.md for further instructions on rigging and export as FBX into UE5.
  5. After importing, make sure to enable CPU Access in the skeletal mesh's settings in UE

Props, Foliage, and Non-Rigged Static Mesh Assets

  1. Model the object in VoxelMax
  2. Export as FBX
  3. Import into UE5, with import scale to be 25
  4. You will likely have to import with a translation as well to get the pivot to be in the correct place on the object.

About

WOT: A Good Game - Wotxels; the first of its name

Resources

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •