Source code from Atlas, our 64k demo presented at Revision 2019 with Macau Exports

Overview

Atlas source code dump

This is a dump of the source code for the engine, graphics tool and player for Atlas, our 64k demo released with Macau Exports at Revision 2019. It's been updated to build with the latest Rust nightly, but for the most part is identical to what we showed in the graphics breakdown stream.

Goals of this dump:

  • You should be able to build and run a fully-functional tool and player.
  • You should be able to explore the code in this repo and maybe learn some things about how we built it.

To that end, we will accept pull requests and issue reports that help us achieve these goals. Other PRs and issues will not be accepted. For instance, a PR to fix a crash when starting the player is fine, but a PR that replaces part of our post-processing stack is not.

Building

You'll need a 32-bit, nightly build of Rust. The repo has been tested on the 2021-10-01 nightly. Install Rustup then run the following command in the repo folder:

> rustup override set nightly-2021-10-01-i686

The repo contains two executable packages. The graphics tool provides features including live shader reloading, a property editor and an animation system with a timeline and curve editor. The player bundles up a synth, shaders and animation data into an optimized executable that plays the demo from start to end and can be krunched to under 64kb.

To build and launch the tool, run the following command from the tool folder:

> cargo run

To build the player:

  • Ensure the tool has run at least once to generate the export blob - see the section below on running the tool.
  • Ensure you have a resource compiler available on your PATH. If you have Visual Studio installed, this can be achieved by using a Developer Command Prompt.
  • Run the following command from the player folder.
    > cargo build --release
    

This will create a player.exe inside the target folder in the repo.

Using the tool

The tool will open the project file at project/saves/000000-000000-head.save when started, and save to that file on close. By default this has the timeline from the post-party final version of Atlas.

When closed, the tool minifies all shaders and generates a binary blob of shaders and animation data to be packed into a player build. This blob is placed in project/data.blob. Closing the tool will take a bit of time due to minifying shaders, if you want to disable this set MINIFY_SHADERS to false at the top of tool/src/exporter/shaders.rs.

For more info on using the tool have a look at the Atlas graphics breakdown video.

Known issues

  • There are A LOT of warnings. Some of these are just rushed coding, some of them are due to changes in Rust.

License

The demo code is provided under the MIT license.

laurentlb's Shader Minifier is provided under the Apache 2.0 license.

Un4seen Developments' BASS audio library is provided under a free for non-commercial use license.

ocornut's dear imgui is provided under the MIT license.

cimgui is provided under the MIT license.

imgui-sys is provided under the MIT license.

WaveSabre is provided under the MIT license.

You might also like...
This repository contains the source of "The Rust Programming Language" book.

The Rust Programming Language This repository contains the source of "The Rust Programming Language" book. The book is available in dead-tree form fro

Maai_core is an open source AI that is written in rust

maai_core is an open source AI that is written in rust. It is more focused on being lightweight and speedy.

Diosic is an open source web-based music collection server and streamer

Diosic is an open source web-based music collection server and streamer. Mainly suitable for users who need to deploy on servers with low hardware specifications.

An open source WCH-Link library/command line tool written in Rust.

wlink - WCH-Link command line tool NOTE: This tool is still in development and not ready for production use. Known Issue: Only support binary firmware

Open source bible study program on Linux!
Open source bible study program on Linux!

Open Witness Library Open Witness Library is a program to read articles that carries God's true name. Warning This branch is outdated, please refer to

An open-source UCIe implementation developed at UC Berkeley.

UCIe An open-source UCIe implementation developed at UC Berkeley. This project is very early-stage. If you are interested in contributing, see below.

Rust based magic-string with source map chains support

enhanced-magic-string Rust implementation of https://www.npmjs.com/package/magic-string with original sourcemap chain support. license. This project i

An AI-native lightweight, reliable, and high performance open-source vector database.
An AI-native lightweight, reliable, and high performance open-source vector database.

What is OasysDB? OasysDB is a vector database that can be used to store and query high-dimensional vectors. Our goal is to make OasysDB fast and easy

Leetcode Solutions in Rust, Advent of Code Solutions in Rust and more

RUST GYM Rust Solutions Leetcode Solutions in Rust AdventOfCode Solutions in Rust This project demostrates how to create Data Structures and to implem

Owner
Monad
Hop into the Monad-mobile and we'll show you a cool coffee shop downtown that also sells candles.
Monad
Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Jason Shin 9 Apr 10, 2022
Small ray tracer demo of the F# to Rust language transpiler in Fable 4.x

Small ray tracer demo of the F# to Rust language transpiler in Fable 4.x

null 45 Nov 16, 2022
CSGO demo parser for Python

CSGO demo parser for Python Demo parser for Counter-Strike: Global Offensive. Parser is used to collect data from replay files (".dem" files). The goa

null 11 Dec 7, 2022
The source code that accompanies Hands-on Rust: Effective Learning through 2D Game Development and Play by Herbert Wolverson

Hands-on Rust Source Code This repository contains the source code for the examples found in Hands-on Rust. These are also available from my publisher

Herbert 261 Dec 14, 2022
This repository contains the Rust source code for the algorithms in the textbook Algorithms, 4th Edition

Overview This repository contains the Rust source code for the algorithms in the textbook Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.

chuan 549 Dec 26, 2022
Source code for the book Rust in Action

Welcome to Rust in Action source code This source code repository is a companion to the Rust in Action book available from Manning Publications. Suppo

Rust in Action 1.3k Dec 30, 2022
Tool to convert variable and function names in C/C++ source code to snake_case

FixNameCase Tool to convert variable and function names in C/C++ source code to snake_case. Hidden files and files listed in .gitignore are untouched.

AgriConnect 4 May 25, 2023
Source code of Ferrocene, safety-critical Rust toolchain

Ferrocene is a toolchain to enable the use of the Rust programming language in safety-critical environments. It is a proper downstream of the main Rus

Ferrocene 530 Oct 7, 2023
An inquiry into nondogmatic software development. An experiment showing double performance of the code running on JVM comparing to equivalent native C code.

java-2-times-faster-than-c An experiment showing double performance of the code running on JVM comparing to equivalent native C code ⚠️ The title of t

xemantic 49 Aug 14, 2022
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners

CleanIt Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners Motivation Motivation is to build a complete

Kristoffer Rakstad Solberg 216 Dec 13, 2022