Two Tribes Engine; the engine which we used to create Toki Tori 2+ and RIVE with

Overview

Two Tribes Engine

We, Two Tribes, have used this engine for over a decade. It started with early development on the Nintendo DS and ultimately resulted in our latest games Toki Toki 2+ and RIVE. The engine itself is heavily focused on empowering designers. They can build levels and creatures (entities) with relative ease, while programmers could focus on building new functionality.

Included in this repository is a fully working test level of RIVE. It demonstrates the capabilities of the engine. Feel free to experiment with it, change it or make something with it yourself.

While the test level works without any issues, please do note that there is no guarantee that everything will work under different circumstances. Only a small part of the RIVE assets are included in this distribution. So there is a high chance that features are missing, or are generating asserts when fiddling around with different settings. If that happens, feel free to open an Issue on github and we might be able to help out. But as this software is provided "as-is", it might take a while before we are able to help out.

Licenses

Engine License

The engine is licensed under the GNU GPLv2 license. A copy of the license is included in the repository. Should you require a different license because of the nature of your project, feel free to contact us.

Assets License

All assets contained in the .\assets folder are copyrighted. All rights are reserved. You are allowed to personally use them to experiment with the engine and discover its possibilities.

Without our written permission you are not allowed to use them (nor any derivate work) in a product (free or commercially). Nor are you allowed to redistribute them in any way.

Directory Structure

├── assets
│   ├── conversion              -> contains platform conversion scripts
│   │   ├── config              -> contains main conversion scripts
│   │   ├── intermediate        -> temp directory for asset conversion
│   ├── output                  -> will contain converted assets
│   ├── source
│   │   ├── shared              -> source assets shared across all platforms
│   │   ├── win                 -> windows only source assets
│   ├── LICENSE                 -> the more restrictive license that applies to the assets
│   ├── scripts.code-workspace  -> the script VS Code workspace file
│   ├── windows.xml             -> asset database for the windows version of the game
├── build
│   ├── win                     -> contains the windows executable build
├── config                      -> contains various configuration files for asset conversion and gamelauncher
├── src
│   ├── engine                  -> contains the Two Tribes engine. The main engine upon which our games were built
│   ├── game                    -> contains game specific code. This code was used in our latest projects: Toki Tori 2+ and RIVE.
│   ├── ttgame.sln              -> the Visual Studio 2017 solution
├── tools                       -> contains various tools required for the asset conversion
└── .gitattributes
└── .gitignore
└── LICENSE                     -> a copy of the GNU GPLv2 license, under which this engine, except for the assets, is licensed
└── README.md                   -> this readme file

Spaces and dots

Ensure the entire path does not contain any spaces nor dots. Some asset converters don't work well with those. Especially take care of that when downloading a release zipfile from github, as those zip filenames can contain dots.

Virus & Threat Protection

After downloading this repository Windows Defender might interfere with asset conversion, as it can flag asset conversion executables for a threat scan. When that happens the conversion might stall for a while, waiting for Windows Defender to scan the executable. Asset conversion might not resume after such a stall, resulting in a permanent stall.

In that case simply run the conversion multiple times, until it is finished. After a successful run, Windows Defender has flagged the asset conversion executables as safe and a conversion stall won't happen again.

Designers Instructions

Installing RIVE font

First ensure to install the RIVE.ttf font located in .\assets\fonts, otherwise the conversion step will fail.

Converting assets

All converters run on Windows. To convert all assets, simply run .\assets\conversion\convert_win.bat or .\assets\conversion\convert_win_rebuild.bat

Alternatively you can convert assets by using the TTTray and/or TTAssetMonitor applications.

TT Tray

Two Tribes developed a small tray app that you can use to easily convert assets or boot up the game.

To use it first register the project configuration by running: .\config\register_tray.bat. This registers the information contained in .\config\ttgame.tttray with the TTTray application.

The TTTray application itself is located in .\tools\tttray.

To exit the app or reload the configuration file(s), hold shift while clicking on the tray icon and then select the now visible options.

TT Asset Monitor

In addition to the TTTray application, Two Tribes developed a file watcher that can quickly convert modified assets. The game can load some modified assets on the fly, or by pressing F5 ingame. That way you never need to close and reopen the game to see your changes.

To use it first register the project configuration by running: .\config\register_filewatcher.bat. This registers the information contained in .\config\ttgame.ttassmon with the TTAssetMonitor application.

The TTAssetMonitor application itself is located in .\tools\ttassetmonitor.

To exit the app, hold shift while clicking on the tray icon and then select the now visible exit option.

Scripting

Most of the high level features of the game are programmed in Squirrel. Just open the Visual Studio Code project in .\assets\source\ to see what's possible. There are nut file extensions in the VS Code Marketplace to help you with syntax highlighting.

Prerequisites

Any text editor would do fine, but VS Code is highly recommended.

Coders Instructions

Prerequisites

Visual Studio 2017

  • Get and install VS 2017:

https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2017-and-other-products

DirectX June 2010 SDK

  • Get the following DirectX SDK:

https://www.microsoft.com/en-us/download/details.aspx?id=6812

  • Only "Install DirectX Runtime" and "DirectX Headers and Libs" are required for installation. Ensure to uninstall any previous 2010 runtime version of DirectX, otherwise the installation might end up in a S1023 error

  • Verify that the DXSDK_DIR environment variable is set. This should've been done by the installer.

Modify property sheets

Now we need to let Visual Studio know the location of this DirectX version.

  • Go to C:\Users\<username>\AppData\Local\Microsoft\MSBuild\v4.0

  • Open Microsoft.Cpp.x64.user.props

  • Append $(DXSDK_DIR)Include; to IncludePath. Be sure to append at the END of the string.

  • Append $(DXSDK_DIR)Lib\x64; to LibraryPath. Be sure to append at the END of the string.

Microsoft.Cpp.x64.user.props now looks something like this:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include;</IncludePath>
    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(DXSDK_DIR)Lib;</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

Win32

Win32 support in the engine has been deprecated.

Windows SDK

You might also like...
CyberVal is a paste of a internal Valorant Cheat which has been used by several providers like LeagueHell, Enduty and several other pasted chairs.

CyberVal CyberVal is a paste of a internal Valorant Cheat which has been used by several providers like LeagueHell, Enduty and several other pasted ch

Sysmon event simulation utility which can be used to simulate the attacks to generate the Sysmon Event logs for testing the EDR detections and correlation rules by Blue teams.

SysmonSimulator SysmonSimulator is an Open source Windows event simulation utility created in C language, that can be used to simulate most of the att

Rule Engine (RE) creates an interpretable anomaly classifier from many one-feature and two-feature decision rules

Rule Engine (RE) creates an interpretable anomaly classifier from many one-feature and two-feature decision rules

A fake AMSI Provider which can be used for persistence.
A fake AMSI Provider which can be used for persistence.

A fake AMSI Provider which can be used for persistence.

Maker of special .exe, which contains additional files which are unpacked when .exe is run

exe-archivator Program that make exec-me.exe, which contains additional files which are unpacked when exec-me.exe is run. After compleating unpacking

🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.

Plants vs. Zombies Online Battle This project has two original repositories: https://github.com/czs108/Plants-vs.-Zombies-Online-Battle https://github

Two alphanumeric LCDs and 2 LED bars to show and manage some in-flight parameters
Two alphanumeric LCDs and 2 LED bars to show and manage some in-flight parameters

FS2020-LCD-Panel with Arduino Two alphanumeric LCDs and 2 LED bars to show and manage some in-flight parameters for FS2020. In this project you can pl

C/C++ Application to solve irrigation rotation whatever two-turn rotation or three-turn rotation, longitudinal section design, hydraulic calculations, and design of hydraulic structures like weirs and tail escape.
C/C++ Application to solve irrigation rotation whatever two-turn rotation or three-turn rotation, longitudinal section design, hydraulic calculations, and design of hydraulic structures like weirs and tail escape.

Irrigation works C/C++ Application to solve irrigation rotation whatever two-turn rotation or three-turn rotation, longitudinal section design, hydrau

OpenGL Template Engine - a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects.
OpenGL Template Engine - a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects.

OpenGL Template Engine is a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects. This is the template I personally use for my own projects and provides me with the general OpenGL 3D render setup with model import and UI.

Comments
  • CMake files are incomplete?

    CMake files are incomplete?

    Hey there!

    I just cloned the source and took a look at the project files, and noticed that there are a few CMakeLists.txt files as well as some Makefile rules in the Linux folder. It looks like there are some things that may have been missed in the GPL release:

    • Possibly a root CMakeLists.txt that groups engine and game together?
    • Non-NDA contents of the ttdev folder
    • A separate tools/shared/ folder?

    Aside from that it seems like the source itself is complete, but that's at a quick glance. In particular I'm interested in seeing if I can make FAudio work with the Windows XACT data, to make it so non-Windows targets can share the same audio files without a conversion process.

    In any case, thanks for releasing this code, it's very interesting to read through!

    opened by flibitijibibo 7
Releases(v1.0.0)
Owner
Two Tribes
The official Two Tribes github
Two Tribes
Two mice, two cursors

Mouse multiplexer This is Arduino code that makes it possible to have two mouse cursors when connecting two USB mice to the same machine. It works on

Jacek Fedoryński 14 Dec 13, 2022
The merge() function is used for merging two halves

The merge() function is used for merging two halves. The merge(arr, l, m, r) is a key process that assumes that arr[l..m] and arr[m+1..r] are sorted and merges the two sorted sub-arrays into one. See the following C implementation for details.

Pranit Puri 2 Nov 16, 2021
A web application which finds the shortest or quickest path from two points in the city of Rio de Janeiro.

A web application which finds the shortest or quickest path from two points in the city of Rio de Janeiro. Obviously not Waze. (final project for EDA @ EMAp, 2021)

null 2 Nov 17, 2021
Create a calculator of any kind in any language, create a pr.

calculators Create a calculator of any kind in any language, create a pr. Create a calculator of any type using the programming language of your choic

Akshay Gautam 2 Oct 21, 2022
Libft is an individual project at 42 that requires us to re-create some standard C library functions including some additional ones that can be used later to build a library of useful functions for the rest of the program.

Libft is an individual project at 42 that requires us to re-create some standard C library functions including some additional ones that can be used later to build a library of useful functions for the rest of the program.

Paulo Rafael Ramalho 0 Jan 1, 2023
A Visual Studio template used to create Cobalt Strike BOFs

Introduction Cobalt Strike beacon object files (BOFs) is a feature that added to the beacon in order to allow rapid beacon extendibility in a more OPS

Securify 163 Dec 28, 2022
The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-source and can be used with OpenOCD as a general-purpose programmer

pico-probe-programmer The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-sou

martijn 22 Oct 15, 2022
The goal of this project is to create the function get_next_line.c which

The goal of this project is to create the function get_next_line.c which, when called in a loop, will then allow the available text in the file descriptor to be read one line at a time until the end of the file. The program must compile with the flag-D BUFFER_SIZE=xx which will be used as the buffer size for the read calls in get_next_line.

REDA JAANIT 5 Jul 26, 2022
GLSL optimizer based on Mesa's GLSL compiler. Used to be used in Unity for mobile shader optimization.

GLSL optimizer ⚠️ As of mid-2016, the project is unlikely to have any significant developments. At Unity we are moving to a different shader compilati

Aras Pranckevičius 1.6k Jan 3, 2023