Page 1 of 1

Does Retro Game Dev (PS1) differ that much from modern game development and engines?

Posted: April 30th, 2021, 4:20 pm
by ThomasEngine
Lately, I've been learning C and looking into creating games in an environment that's very barebones. I've felt as if the PS1 would be a great environment for this, so I can focus on learning the PSY-Q SDK and understanding how the process of building games works on a very small scale. I'd sit down and attempt to remake simple classics such as Tetris, Galaga, etc. to get a strong feel for the development process, learn what goes into an engine, etc.

My main concern is this: How applicable will any of this knowledge be to the modern game engines that we use today (Unity, Unreal, etc.) ? Should I just attempt to do this in Unity or Unreal instead of trying to utilize something retro?

Re: Does Retro Game Dev (PS1) differ that much from modern game development and engines?

Posted: May 11th, 2021, 4:25 am
by kernex
In fact it is quite similar. I have no experience with Unity, but from what I saw on the internet, the development concept does not differ much.

Actually, the development process is much easier with Unity, for example. Today's game engine have a very high tool integration. High-level languages...

On PSX the development is low level. In fact, PSYQ is not a game engine, but a set of libraries that abstracts the hardware and allows you to make drawings on the screen.

On PSX to rotate an object you can do the follow:

MATRIX mtx;
SVECTOR ro = {0,0,2048};//180 degrees on Z axis;
GsDOBJ2 object;
...

GsGetLw(obj.coord2,&mtx);//calculate the world matrix for the object.
RotMatrix(&ro, &mtx);//set the rotation for the matrix.
object.coord2->coord = mtx;//update the object's matrix.
object.coord2->flg = 0;//indicates that object's matrix has been updated.
GsGetLs(obj.coord2,&mtx);//calculates the screen matrix for the object.
GsSetLsMatrix(&mtx);//set the new screen matrix for the GTE.


On Unity to rotate an object you can do the follow:

GameObject object;
...
object.transform.Rotate(0.0f, 0.0f, 180.0f, Space.Self);//Internally, Unity calculates the world and the screen matrices and apply to the object.

I hope I answered your question.