My name is Malte, and I'm pretty new around here, so I thought I'd say "hi" and talk a bit about what I'm up to
![Smile :)](./images/smilies/icon_e_smile.gif)
The short version
I'm doing a basic game engine/framework for the PlayStation 1 for my final Master's thesis.
The (very) long version
I'm taking a Master's degree in Games Tech, and atm I'm doing my thesis. I want to be an engine programmer, so I thought I'd do something related for my thesis. Honestly, I just wanted to program an engine, but a thesis requires some kind "research". So I ended up deciding to try and create and test the viability of general-purpose 3D game engine for the PlayStation 1.
I'm planning on testing the viability by measuring the performance of the engine, but in pretty bad way... You see, because "hardware hacking" (e.g. modchips) is a bit of a legally grey area where I'm from, my supervisor won't approve the use of it for the thesis (formally, at least). So the "research question" is instead going to be answered by testing the performance in an emulator. Yes, I know this is super inaccurate, but as long supervisor approves it I can get to tinker with my engine. Also, it still gives some notion of the capabilities (can the engine handle 1 million game objects or 1000).
I have no prior experience with PlayStation development, and only a bit of experience with really low-level programming (assembly) and hardware, so this has obviously taken some getting used to. Already spent my fair share (at least more than I anticipated) trying to understand the hardware and low-level stuff. I do however, have some experience in game and game engine development, so I hope it will be "easier" once I get the basics down and start moving into my own "turf".
Status
Throughout February, I've been creating a small game in order to understand the technicalities of the PlayStation and the psn00bsdk (which I'm planning to use as a base for my engine). Some kind people on the Discord server has helped me out with various questions, so thanks a lot for that.
I just finished that small project yesterday, and you can see a demo here:
Disclaimer: it's shit gameplay (is it even a game?) and I play with one hand.
It's pretty rudimentary, but I got to test directional lighting, 3D mesh rendering, textures, sounds, music, sprite rendering and debug text.
I'm definitely not an electrical engineer, and I personally failed at installing a modchip into my PlayStation using a cheap soldering iron. A real nice guy helped me out though, so it's all set up (yay!). I did figure out how to create a serial-to-usb cable, so with Unirom and nops I have a nice work-flow with the actual hardware.
Atm, I'm using PCSX Redux as my go-to emulator, as that seem to be the best in terms of debugging and development capabilities (the GDB server is really, really nice).
So now, I'm basically moving on to create the actual engine.
Goal
I'm really not planning on this engine being any kind of marvel as I'm all alone and have fairly limited time. And I expect I need to spend significant time wrestling with the PlayStation and psn00bsdk. I'm planning on the following features:
- Game object system (approach undecided)
- Renderering of textured and lit 3D meshes
- Asset system (maybe including packing)
- Various base utility (fixed-point, strings, list, vector, matrices, map etc.)
- Rudimentary collision system
- Sound system
- Text system
- Basic 2D image system
This is not much, but it might be a stepping stone for something more interesting after my thesis (we'll see if I'll continue working on it).
The plan is to get it in a state where I can use for a game jam in mid April, which of course will go so smooth that we'll have the best game ever, and people will ditch all other engines in favor of this brilliant piece of software.
I've only found one other attempt/talk of a PSX engine (the Lameguy64's engine), so I don't know if this project might be of interest to someone. Maybe just as a foundation or inspiration for something more serious? Not expecting it, but thought I'd might share it anyway. Unfortunately, I can't share the source-code before the thesis has ended (as that would make me plagiarize myself), but I'll definitely share it once the project is done!
Any tips, tricks, opinions, recommendations or questions are very much welcome!