PX8 is an Open Source Fantasy Console (128x128 pixels default resolution) in Rust, by using a cartridge that contains the code/gfx/music. The code could be in Python/Lua, or you could create directly everything in pure Rust by using it as a library.
Specifications:
It works on all platforms (Linux/OSX/Windows/Raspberry PI), in the browser (via Emscripten).
You can follow the development of the project here.
Editor mode:
Multiple resolution support:
More advanced examples:
Advanced Micro Platformer - Starter Kit http://www.lexaloffle.com/bbs/?tid=28793 in Python https://github.com/Gigoteur/PX8/tree/master/games/amp
2D Terrain Generation (http://www.lexaloffle.com/bbs/?uid=12213) in Python https://github.com/Gigoteur/PX8/tree/master/games/terrain
Voxel framework (http://www.lexaloffle.com/bbs/?tid=28308) in Python https://github.com/Gigoteur/PX8/tree/master/examples/voxel
BR: it is an example from duckduckontheloose (https://github.com/seleb/DuckDuckOnTheLoose) https://github.com/Gigoteur/PX8/tree/master/games/BR
Flappy bird clone(http://p1xl.com/files/flappy.p8): https://github.com/Gigoteur/PX8/tree/master/games/flappy
Noise support:
More gifs ?
You can get prebuild binaries for many platforms directly on itch.io or you can build your own executable with the latest changements (see the BUILD instruction):
You can get directly the source code of the latest version via git:
git clone https://github.com/Gigoteur/PX8.git
cd PX8
The first thing to do is to install Rust, so please go to rustup and follow all instructions.
The build is the same for all platforms (Linux/OSX/Windows).
You must build PX8 with cargo directly in release mode to have the best perf. And you can choose to disable the following plugins for the cartridge:
For example to have all features:
cargo build --features="cpython px8_plugin_lua" --release
You will need multiple things:
Packages for Debian/Ubuntu:
Please enable the GL Driver to speed up the console (7 - Advanced Options -> Ac - GL Driver -> Yes) via:
Install external dependencies via brew:
Right now you need to export the DYLD_FALLBACK_LIBRARY_PATH env variable for the python support, e.g:
By default the resolution will 128x128 but you can change the default values by calling the mode API function:
mode(width, height, [aspect_ratio])
Example:
mode(128, 128, 1.0)
mode(512, 128, 4.0)
You can force opengl with SDL via the '-o' option:
./target/release/px8 -o ./games/ski/ski.px8
You must follow the following guide to install Emscripten. After that you can find some help here.
You can see example of PX8 + Emscripten in the demos repository. You could also see live example from your browser:
Each pixel can be access from 0 to 128 (or the new defined width/height) :
Right now only 2 players could play a cartridge.
Player 1:
Player 2:
System shortcut:
You should be able to run it directly by providing the path of the cartridge:
./target/release/px8 ./games/ski/ski.px8
You could run the API demos:
./target/release/px8 -s 4 ./examples/api_demos.p8
or some fancy demos:
./target/release/px8 -s 4 ./examples/demos.p8
./target/release/px8 -s 4 ./examples/voxel/voxel.px8
./target/release/px8 -s 4 ./examples/pong/pong.px8
./target/release/px8 -s 4 ./games/ski/ski.px8
./target/release/px8 -s 4 ./games/amp/amp.px8
./target/release/px8 -s 4 ./games/terrain/terrain.px8
./target/release/px8 -s 4 ./games/BR/BR.px8
You can edit directly the GFX (Sprites + Map) with the 'F6' hotkey (to alternate between the run mode and the editor), or to open the cartridge by using the specific '-e' option:
./target/release/px8 -e ./games/ski/ski.px8
and you can save the GFX data with 'F5'.
With the '-s' option you can change the size of the console, so you can increase it (2/4/8/10).
You can also use the fullscreen option by using '-f' option.
You can add the '-o' option to force SDL to use OpenGL
Compatibility mode with PICO8You could load a PICO8 cartridge file by using the '-m pico8' option to convert the Lua code.
How to create a new cartridgePX8 will call 3 functions, at startup or during the runtime:
After that you can use the API to do your game. There is no limitation of what you can do in Python or Lua languages.
By default I don't do any modification in the Python or Lua interpreter, so you are free to create threads, load native files, etc
You will be able to find more technical documentation in the wiki
The syntax of Python program is exactly the same that the Python 3.
You can create a classical Python program, all you need is to define the previous functions (_init, _update, _draw), and you can import any packages.
def _init(): px8_print("INIT") def _update(): px8_print("UPDATE") def _draw(): px8_print("DRAW")
This is a modified version of Lua 5.3.4 that supports:
function _init() print("INIT") end function _update() print("UPDATE") end function _draw() print("DRAW") end
More details here about each function with the arguments: API
The console is inspired from the awesome Pico-8, so there is a compatibility mode (not 100%, and it is not the goal of the project) available with Pico-8 console and cartridges (P8/PNG).
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4