Back to to the topic of #PS2 games, I've been playing Dark Cloud lately.
The game has some pretty cool and fun ideas, like the weapon building and the city building. I also think that the concept of "back dungeons" is kind of nice (even though the execution is a bit lacking).
I remembered that the random dungeons were a bit repetitive but I completely forgot how grindy the game feels.
Every god damn dungeon:
- Here's a new character!
- You'll have to use it in the dungeon boss
- It comes with the base stats, so you need to drink water ever five minutes
- You only have the weak base weapon that keeps breaking
- The shops don't sell weapons for that character yet
So you really have no choice but to grind that character and keep leaving the dungeon to buy water and repair items.
And, as if that wasn't enough, there are basically 3 types of special levels:
- You can only use the new character
- You get thirsty faster
- You lose experience when you fight
WHY???
This time I wrote an InterIm backend for AthenaEnv.
I also had to work a bit on InterIm's performance to get it to work, as I can't really use Doubles and my text layout algorithm was a bit inneficient. The frame rate still gets a bit choppy when there's a ton of text on screen, but it kind of works.
To test the whole thing, I ported my Quiz game example. This part was quite easy - just had to replace the HTTP calls with hard coded questions/answers and reimplement the RNG (I'm still not sure why scala.util.Random doesn't work... I suspect it's something related to Long math).
However, after testing this for so long on PCSX2, I was quite shocked on how bad things looked on real hardware.
I know I'm using a crappy €20 HDMI converter instead of a propper upscaler, but god damn, the text is pretty much unreadable.
Something to keep in mind in the future, I guess.
Lately I've been playing around with getting #Scala to run on my #PS2 (using Scala.js and AthenaEnv, no Scala Native... yet).
I finally got the Minart snake example to run on real hardware with minor modifications to the code (uncap the FPS and read the input from the gamepad).
It does run quite poorly, and it seems to crash if I get an apple, but it's a start, and good enough for a video.
I do have some ideas on how to improve the performance, but it will require a non-trivial amount of work, so I need to build up the courage first.