Open source game engine for PlayStation 2™
Showcase video »
YouTube tutorials »
Report Bug
·
Request Feature
Tyra is a project that allows you to easily create games for the PlayStation 2 console.
When I tried to make a game for PS2 a few years ago, I realized how many things had to be done to tame this exotic console architecture.
Decision was simple - I need to create an engine which will handle 3D file loading, 2D/3D rendering, animation, audio, handling between PS2 CPUs, synchronization.. It should be simple as possible - so people with no experience can create a simple game in a few hours.
And that's what Tyra is all about.
- 01 - Setup environment - Text tutorial or Video
- 02 - Cooking game assets - Video
- 03 - Create a game repository - Video
- 04 - Run game from USB in PS2 - Video
- 01 - Code - Hello world
- 02 - Code - 2D rendering
- 03 - Code - 3D minecraft blocks
- 04 - Code -
de_dust2.obj
rendering - 05 - Code - 3D animation
- 06 - Code - Background music and sound effects
- 07 - Code - Static lightmap and dynamic directional lights
- 08 - Code - Skybox and debug rendering
- 09 - Code - Manual rendering (a'la OpenGL)
- 10 - Code - Sprite sheet (font)
- 11 - Code - Texture repeating
- Demo game - Code
- Docker image with Tyra, all tools and
PS2DEV
C++20 compiler - 3D rendering via
VU1
coprocessor:- Static rendering
- Morph animation rendering
- Super optimized, custom minecraft block renderer
- Debug rendering (lines, boxes, bboxes)
- Manual rendering (a'la
OpenGL
)
- 2D rendering
- Frustum culling:
- Simple - culling whole mesh
- Precise - culling only visible parts of mesh
- Clipping:
- Standard "fake", but fast PS2 clipping done in
VU1
- Software clipping done in
EE Core
- Standard "fake", but fast PS2 clipping done in
- Optimized math functions via
VU0
coprocessor - Background music and sound effects support
- Pad support
- USB support
- Memory card support
.wav
Audio file support.obj
3D file support.md2
3D file support.png
Texture file support
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/amazing-feature
) - Commit your Changes (
git commit -m 'Add some amazing-feature'
) - Push to the Branch (
git push origin feature/amazing-feature
) - Open a Pull Request
List of games developed with Tyra.
If you created one, please contact me - I will add it to the list :)
- Tyracraft by Wellinator
- Game with car by freebytego
- Rock, paper, scissors by GuidoDQR
- TyraTale by Br4k2n
Distributed under the Apache License 2.0 License. See LICENSE
for more information.
- EE (Emotion Engine) - whole set of processors and subsystems that make up the PlayStation 2
- EE Core - main PS2 CPU (c++ done here)
- GS (Graphic synthesizer) - configurable rasterizer and texture mapper. Has only 2MB~ memory for textures, but for the opposite have very high transfer rate, so you can switch textures in the blink
- VU0 - programmable (ASM) vector processor that is accessed by inline assembly code injected into C program.
- VU1 - programmable (ASM) vector processor, which is similar to vertex shader. Accessed via DMA.
- IOP - I/O processor which enables access to peripheral devices, such the game controller
Without these guys, Tyra would not happen:
- Dr Henry Fortuna - for code sources, PS2 academy tutorials
- Whole PS2DEV team, and specially to Rick Gaiser, fjtrujy - for a lot of good tips!
- Wellington Carvalho, André Guilheme, Matías Israelson, Guido Diego Quispe Robles - for testing, contributing to Tyra and sharing cool ideas!
- Leonardo Ono - for software renderer example (with clipping!)
- Lukasz D.K. - for huge archive of PS2 stuff
- Guilherme Lampert - for code sources
- Jesper Svennevid, Daniel Collin - for openvcl's code samples
- Manieq - for nice splash screens!
- And so many other guys. Thanks!
Project Link: https://github.com/h4570/tyra
Sandro Sobczyński - sandro.sobczynski@gmail.com