[WiP] Breakout for PSX

Start a work log and update it occasionally with your projects progress
Post Reply
Kyoril
Interested PSXDEV User
Interested PSXDEV User
Posts: 7
Joined: Mar 13, 2022
I am a: Programmer
PlayStation Model: SCPH-5552
Discord: Kyoril#9629
Location: Germany

[WiP] Breakout for PSX

Post by Kyoril » May 27th, 2022, 3:23 am

Greetings!

Today, I wanted to start the dev log of my very first game developed for the Sony PlayStation. I chose to build a clone of the popular game Breakout by Atari.

The game will be a 2.5D game, meaning that you control the game 2D but it is actually rendered using 3D models.

A licensed ISO of the current state of the game can be downloaded HERE (Last updated May 27th, 2022).

Please note that the game is currently developed for PAL mode, and targets 50 FPS and a screen resolution of 320x256. The game is developed using in C using the PSY-Q SDK.

Feature list:
  • Support for Control Pad, Analog Controller and the DualShock
  • Title screen
  • 3D rendering
  • Custom font rendering
  • 8 different levels
  • Support to pause the game
  • Sound effect playback
  • Disc archive format for fast reading
Things still to do:
  • Support for Music playback
  • Option to enable vibration on the Dual Shock
  • Lots of polishing and optimizations as well as code refactoring (adding animations, optimizing file formats, etc.)
  • Add credits and gameplay options
  • Add support for NTSC
  • Apply feedback from the community (YOU)
Credits: Credits go out so far to LameGuy64 for his amazing code snippets and tutorials which helped me out a lot so far. While I was initially using PCKLIB, I now developed my own tool based on pcklib, but without using a sector for creating a virtual file system.

Image
Title screen
Image
Menu
Image
Gameplay 1
Image
Gameplay 2
Image
Running on real hardware

I would really love to hear your feedback!
Last edited by Kyoril on May 23rd, 2023, 5:06 am, edited 5 times in total.

User avatar
Shadow
Verified
Admin / PSXDEV
Admin / PSXDEV
Posts: 2670
Joined: Dec 31, 2012
PlayStation Model: H2000/5502
Discord: Shadow^PSXDEV

Post by Shadow » May 27th, 2022, 12:28 pm

Really good potential and very impressive! Needs better physics though and the camera movement is too rough. Try to make the camera smoother, maybe by adding a delay and 'speed ramp' algorithm to it so it's more fluid ;)

The paddle shape is weird too. Not sure why it's got a cut-out on it. You can also try adding XA music playback and SPU sound effects.
Development Console: SCPH-5502 with 8MB RAM, MM3 Modchip, PAL 60 Colour Modification (for NTSC), PSIO Switch Board, DB-9 breakout headers for both RGB and Serial output and an Xplorer with CAETLA 0.34.

PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.

Kyoril
Interested PSXDEV User
Interested PSXDEV User
Posts: 7
Joined: Mar 13, 2022
I am a: Programmer
PlayStation Model: SCPH-5552
Discord: Kyoril#9629
Location: Germany

Post by Kyoril » May 27th, 2022, 8:10 pm

Shadow wrote: May 27th, 2022, 12:28 pm Really good potential and very impressive! Needs better physics though and the camera movement is too rough. Try to make the camera smoother, maybe by adding a delay and 'speed ramp' algorithm to it so it's more fluid ;)

The paddle shape is weird too. Not sure why it's got a cut-out on it. You can also try adding XA music playback and SPU sound effects.
Thank you very much for the feedback. I will try to incorporate it. :)

Kyoril
Interested PSXDEV User
Interested PSXDEV User
Posts: 7
Joined: Mar 13, 2022
I am a: Programmer
PlayStation Model: SCPH-5552
Discord: Kyoril#9629
Location: Germany

Post by Kyoril » May 28th, 2022, 3:24 am

I just updated the game. Doesn't look like much, but was actually a lot of work today. I hope you enjoy the changes! I also updated the screenshots and the download link for the ISO file in the original post.

Here's what changed:
  • Completely revamped the controls. The paddle now accelerates and slides once you no longer add any input to it. This makes the digital pad controls much more enjoyable (IMHO) and also works for the analog sticks. It also ensures that the ball is more likely to be moved horizontally as it has friction with the paddle (when you move the paddle to the left while hitting the ball, the ball is redirected to the right depending on the paddle velocity).
  • Completely revamped the camera. Instead of focusing the ball and the paddle, the camera is now more focused to the center of the map and follows the paddle in position.
  • Added camera interpolation, which makes fast look-at-target changes a lot smoother (for example when you loose a ball at the other side of the level)
  • Added animation to the score. instead of just updating the number, it get's counted up.
  • Added animation to blocks when a new level is loaded. Blocks should now fall from above instead of simply spawning
  • Adjusted lighting to follow the camera so the level is lit from the camera's perspective. Also updated the ambient light a bit to make stuff more visible which was previously in the dark.
  • Fixed a crash when reaching level 8. All levels should now be playable (tested myself :D Personal highscore of ~520.000)
  • SELECT no longer returns to the title screen. Instead, it only happens when you hit SELECT while the game is PAUSE or while in the game over screen.
  • Revamped the game over screen. It looks a lot cleaner now and offers you a menu where you can choose to restart or return to the title screen instead.
  • Revamped the title screen a little bit to include the version number (0.2 i call it) and also added a new feature to my engine which allows me to center text horizontally a lot easier.
There are still known issues with sorting the blocks and the ball, and still some features are missing, which is why I don't call the game version an alpha yet.

As always, your feedback on this new version would be amazing! Have fun :)

Edit: Next on my list is sound btw.

User avatar
mzxtuelkl
Curious PSXDEV User
Curious PSXDEV User
Posts: 20
Joined: Jul 26, 2021
PlayStation Model: SCPH-5501
Location: United States
Contact:

Post by mzxtuelkl » May 29th, 2022, 8:57 pm

I'd personally prefer a more subtle camera that didn't move as much, but the smoothness of the camera itself is nice. The game's fine so far!

Kyoril
Interested PSXDEV User
Interested PSXDEV User
Posts: 7
Joined: Mar 13, 2022
I am a: Programmer
PlayStation Model: SCPH-5552
Discord: Kyoril#9629
Location: Germany

Post by Kyoril » May 23rd, 2023, 5:17 am

Wow, almost a year passed and my server went down! I just came here to tell you that I reuploaded everything (screenshots and version) and I will continue working on this project.

In fact, I had a longer break from the PSX development after my initial attempts, but I am back. In the past few days I set everything back up, and started improving my PSX dev environment drastically.

I also started refactoring the code a lot and will continue to do so. I also started thinking about how I can improve the game from here on so that it will make fun playing it, and I actually have some plans in my mind which I just don't want to share yet here, as I need to think about how to realize all the cool stuff I am thinking about (or if I can realize it at all! :D)

I also started replacing some stuff I used to get started more quickly. The recent replacement was LameGuy64's pcklib and mpack tool. While the tool is really great and does what it says it does, I wanted to optimize the file archive to my needs a bit.

For example, I saw no use of having a virtual file system (which is what pcklib offers). I don't need to reference my files in code via filename strings actually. Instead, I wrote my own pack tool for now, which at the moment doesn't do that much stuff differently, but I plan to add a few more features later on.

Instead of writing a sector with file information on the disc per PCK file, I just have a large, sector-aligned resource file with "unlimited" (CD ROM file size limit applies) resources inside instead of the 85 file limit. I no longer store actual file information in the initial sectors itself, as I treat the archive as an read only game archive. So my tool creates a header file with defines for my files and file names instead, which then looks like this:

Code: Select all

/**
  * Auto generated header file by PCKBUILD tool. Please do not change anything in here manually!
  * This file contains addresses relative to the generated archive file as the file does not support an index.
  */

/* DATA\FONT.TIM */
#define DATA_FONT_TIM 0x00000000
#define DATA_FONT_TIM_SIZE 0x00003800

/* DATA\Sound\SND01.VAG */
#define DATA_SOUND_SND01_VAG 0x00003800
#define DATA_SOUND_SND01_VAG_SIZE 0x00000800

/* DATA\Sound\SND02.VAG */
#define DATA_SOUND_SND02_VAG 0x00004000
#define DATA_SOUND_SND02_VAG_SIZE 0x00001800

...
Anyway, I feel like loading mutliple files one after another is still slow, so I will keep optimizing it. Especially at game start, loading all kind of sound effect files takes some time right now. I also read that the PS1 supports some compression algorithms and also saw some samples from sony, so I will look into this at the end as well.

That's it for today, hopefully I can post more stuff in this thread in the near future. :)

Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests