The fruits of my labour: A cleaned up photograph taken on my phone of my 3D PSP scene part-way complete, and a lovely reflection of myself in the screen.
Sadly I neglected to take a photo of the completed version, which utilised point lights for the vehicle’s headlights, and set ambient lighting to 0x00000000 so that you would never see the ends of the road plane. The camera is rotatable, the car is moveable (with its headlights), the Mudkips – which are spawned randomly on the road ahead – are squishable, and the program keeps a count of your current kill streak at the top left, rather than the total kill count shown above. I won’t detail the workings of my solution for this assignment, as it was put together in quite a short amount of time using the incomprehensible samples and documentation provided by Sony, so I’m sure it’s not optimal. Hopefully PSP work will continue next semester and I’ll get to make something I can really be proud of.
Despite being guided towards using C for PSP development due to our lecturer’s preference, I chose to use C++ because of the ambitious concept of my demo, and my greater wealth of experience working with C++ than C. I really think this was the right thing to do as it allowed me to throw together a rough framework very quickly and get to the more complicated (and fun) parts of developing my demo. In this way I’ve managed to gain experience with numerous parts of the PSP API over a short period of time, and needless to say I’ve learned a lot.
Problems? Well well well:
I’d never used Makefiles before this project, so that was a challenge in the beginning. Once I’d wrapped my head around the syntax and failed to implement automatic dependency generation due to some timing bug, I settled on a solution which used multiple Makefiles to go through headers, src, and assets directories and compile and link any cpp file in sight, as well as convert all of my textures and models and send everything to an output directory.
The PSP is really not very powerful, so I had to be careful with the quality of models and textures I used. The 15 fps you mark in the photograph above is the result of a ridiculously high-poly model of a HummerH1 I had to tear limb from limb in order to get into memory. Once it was in memory I continued to strip the model of course – currently it has about a quarter of the number of vertices it originally had, and the textures are much, much smaller.
For the life of me I could not get spotlights to look good as the headlights of the Hummer. This was partly due to the lack of per pixel lighting and low number of faces in the road, but also due to a lack of understanding of the parameters, which the documentation and samples once again failed to assist me in.
Finally, I’d like to have gotten audio working so I could have played a certain theme song along with my demo, but time constraints, other deadlines, and the lack of any feature-full library for streaming audio prohibited me from doing so. I still really want to get this working though, so maybe I’ll get chance to sort it out during the study weeks in January.
But enough of my problems; what I really want to do now is get a video of my scene up on YouTube, but that, like Pastry3D’s video, will have to wait till I go back to university. Unfortunately I don’t have the money to shell out for a PSP devkit of my own – nor do I think Sony would sell me one if I did.