Skip to content
lifning edited this page Aug 4, 2012 · 13 revisions

Concept

Optiness is meant to be a framework for solving video games in the general case. It matches general-purpose "solver" modules against "game" modules. So long as these modules implement their respective API's, Optiness can pair them up without either being coded with knowledge of the other. Conceptually, the same "breadth first search" module could solve a simple maze game or a level in a 2-D platformer without any modification.

History

Optiness is an idea that was in gestation since somewhere around or before 2009 and was finally born in early 2011.

It was inspired by lifning playing Super Mario Forever (video of someone else playing it) and wishing that a computer could do it for him. A bit of hypothesizing and hacking with chrismerck later and it became a thing. Years later that thing became a program. The original plan was to hack the functionality into either FCE Ultra, Nestopia, or NEStra, but ultimately the code would have to be too messy. After a period of hiatus, libsnes (now known as libretro) appeared and made this project seem plausible again.

The first incarnation of the project unsuccessfully paired a genetic algorithm strategy against a simple randomly generated maze. In late 2011, it generated its first successful runs of Super Mario Bros. and Super Mario World using a greedy algorithm named "wario". With some tweaks the paths generated became considerably better.

Plans and dreams for the future

  • Dijkstra strategy for RPG-ish games
  • Multiprocessing
  • Loosely coupled multiprocessing (iterative map-reduce?)
  • A rerecording interface
  • Loosely coupled competitive/cooperative rerecording
Clone this wiki locally