What is Happening 6

Follow @PistonDeveloper at Twitter!

This blog post is a brief summary of what happened the past 7 months in the Piston project.

Piston (Core)

List of contributors (69)

Piston-Examples

I forgot to mention in last blog post that there is a new example using the rs-tiled and piston together.

List of contributors (34)

Conrod

Conrod is an UI framework that makes it easy to program UIs in Rust.

List of contributors (84)

Image

Image is a very popular image library with pure-Rust encoders and decoders.

Recently we have made a collective effort to reduce the burden of maintenance and got rid of the PR queue. Thanks to people making PRs helping each other with reviews! We started an image working group where you can chat with people working on Rust image libraries.

List of contributors (118)

Imageproc

Imageproc is a library for image processing.

List of contributors (21)

Dyon

Dyon is a scripting language with lifetime checker instead of garbage collection, a similar object model to Javascript and lots of other features useful for gamedev.

Dyon-Interactive is now upgraded with many new features.

You can now install dyongame on your computer:

cargo install piston-dyon_interactive --example dyongame

To run, type dyongame <file.dyon>

Other news:

List of contributors (7)

Turbine

Turbine is a long term project to develop a game engine with built-in editor.

Currently some components are developed separately and tested, for later be used in the game engine.

AdvancedResearch

A part of Piston project is research, which moved to its own organization when unrelated to game development.

I have been busy the past half year working on the control problem of artificial super-intelligent agents (ASI). Basically, no one knows how yet how to solve this important research problem, but we believe we are getting closer.

There will only be a few bullet points here, the rest you have to start exploring here.

  • A “Polite Zen Robot” (PZR) might be made safely extensible by using neutral judgements (Link to paper)
  • Granular judgments indicates rational agents might cooperate if their future identity is uncertain (Link to paper)
  • @forefinger suggested a mechanism for bounded utility functions in the human brain linked to the role of serotonin (Link to paper)
  • @forefinger made a mathematical model of the cerebellum (!) (Link to repository)
  • We will start combining Piston and AdvancedResearch to create simulated environments for agents (and use other Rust projects as well!) (Link to repository)

What is Happening 5

Follow @PistonDeveloper at Twitter!

Shush! It has been 4 months since last blog post, how times fly by when you do not notice!

In this post I will give a summary on some projects, and then go into more details about some new research!

Piston-Tutorials

List of contributors (32)

Conrod

Conrod is an UI framework that makes it easy to program UIs in Rust.

  • New triangles primitive widget
  • Improved touch experience
  • Lots of bug fixed

List of contributors (66)

Image

Image is a very popular image library with pure-Rust encoders and decoders.

  • Improved BMP support
  • Lots of bug fixed

List of contributors (95)

Imageproc

Imageproc is a library for image processing.

  • Support seam carving for color images
  • Sobel gradient for color images
  • Improved performance
  • More tests and documentation

List of contributors (16)

VisualRust

  • Fixed incremental build

List of contributors (14)

Dyon

Dyon is a scripting language with lifetime checker instead of garbage collection, a similar object model to Javascript and lots of other features useful for gamedev.

Starting a new project to make a Dyon to Rust transpiler: https://github.com/pistondevelopers/dyon_to_rust

List of contributors (4)

Piston-Music

  • Support for playing sounds in addition to music
  • Change volume on both music and sound

List of contributors (3)

AdvancedResearch

AdvancedResearch is a collection of projects that explore new ideas and concepts. This is moved to its own organization to not spam PistonDevelopers with emails.

Here are some things that happened since last blog post:

Homotopy maps are functions normalized between 0 and 1 on input and generate points that are continuously connected with each other. I found this idea very cool because you can use them for rendering directly without any extra knowledge. The challenge is to find the right API design so you get the best from both worlds of graphical editors and programming.

At perfect intelligence, problems get solved at the information theoretic optimal performance. I used the tools of path semantics to reason about how this might work, but have not formalized it yet (I lack the right conceptual tools!). Surprisingly it is kind of like binary search, but instead of sorting the algorithm need to arrange sub-types. You can order a T-shirt with the symbols of the first steps ∃f{} (it is called a “universal existential path”).

Probabilistic paths: A new discovery

formula for probabilistic paths

Here is a thought experiment designed to help you understand what it is about:

  1. Take a lot of monkeys
  2. Make them type randomly on a keyboard
  3. What is the chance one of them recreates Shakespeare (or Harry Potter)?

Using standard probability theory, it is easy to compute this chance, even we never will get the opportunity to test it out in practice, because it is very, very tiny.

monkey typing on keyboard

In principle, there is a correct probability for any similar question we can ask, no matter how complex the experiment is and how long time it takes to complete.

If you put the same monkeys to play Super Mario, what is the chance one of them will win? We do not know that yet, because the code of Super Mario is much more complex than the first example. Using standard formulas for probability distributions will not get you very far. What we need a different way of thinking about probabilities that can be interpreted from programs.

A probabilistic path is a transform of the source code of e.g. Super Mario, such that you can compute how likely a monkey is to win the game.

In additon you need:

  1. A function describing how likely a given input is
  2. A function describing what is a winning condition from the output

A huge breakthrough in path semantics happened by extending the theory to probabilities of finite sets. Now I got a higher order path semantical function that solves similar problems to the one above. It is called “probabilistic path” in the language of path semantics.

I tested it on very simple things, because it is very hard to use on complex algorithms. One open problem is how describe in a meaningful way why the algorithm is allowed to sum positive and negative numbers while always ending up in the valid probability range between 0 and 1.

What is Happening 4

Follow @PistonDeveloper at Twitter!

Here are some of the things that happened since the last post:

AdvancedResearch

Advanced research focuses on making conceptual breakthroughs in system thinking. The previous advanced research under the Piston project is moving to this new open source organization. You can read about the rationale of separating this research from the Piston project here.

Some bullet points of the overall progress:

  • New approach to mathematical foundation of friendly artificial intelligence nicknamed “golden rationality”
  • Some progress on path semantics and generalizations to probability theory
  • Gini solvers could balance economic inequality (can be tested in MMOs)
  • Established contact with scientists and engineers about mitigating climate change

Golden rationality is a very recent topic, where I try avoiding the scary first order approximation to friendly superintelligence and instead focus on human value approximation concerning group strategies. This means it is not about superintelligence “in a box”, but about beating the efficiency of individual rational agents in a world where AI is standardized and utilized by many people. For discussion and questions, open up an issue here.

Normal research related to gamedev will continue under the Piston project.

Conrod

  • New CollapsibleArea widget
  • Improved performance
  • Added crates.io categories
  • Various bug fixes and improvements

List of contributors (59)

Image

There is an internal compiler bug on Rust 18 Beta, so if you have troubles compiling your project, you might want to use Right stable or nightly instead.

  • Simple BMP support
  • PPM support
  • New constructor for adjusting quality of JPEG encoding

List of contributors (89)

Imageproc

  • Improved performance, incluing better parallization using Rayon
  • Added more benchmarks
  • Ellipse and bezier drawing
  • Various bug fixes and improvements

List of contributors (14)

Dyon

  • New intrinsics
  • Optional namespaces with shared aliases
  • Link loop (a loop that concatenates body expressions using Dyon’s link data structure)
  • Try expressions (turning errors into result)
  • Various bug fixed and improvements

List of contributors (4)

VisualRust

  • Cargo support
  • Support for both Visual Studio 2015 and 2017
  • Various bug fixes and improvements

List of contributors (14)

Other projects

  • New versions of Gfx has been updated through the ecosystem
  • resize has gotten nice upgrades and performance improvements
  • music now supports sound clips
Older Newer