Sin: Progress Report

Go to the Linux-sectionGo to the Mac-section


29-April-2000: Amiga-version progress update by Peter Annuss

 

As expected, the experiences we gathered with Heretic II gave quite a boost to the porting of SiN. Since both games are based on the Quake2-engine, there are a lot of similarities in the source-code and we were able to reuse large parts of our codebase

Click for a full-sized picture

1. SERVER

The server controls all game aspects and consists of the generic server code (responsible for network communication, world physics, visibility calculations etc.) and the game.dll, which contains the game logic, enemy AI, ... and represents the actual SiN game.

As the server code does not contain operating system dependencies and only few SiN specific changes, it compiled nearly out of the box.

The game.dll required some changes for compilation with GCC, but in general it is very clean and portable. Creating add-ons with this codebase should be quite simple.

All in all, porting the server took only a few days. There are some minor bugs left, but with a local client (see below) they will be fixed soon. Saving/loading isn't working yet but we don't expect it to be critical.

Click for a full-sized picture

2. CLIENT

Basically everything you hear and see while playing SiN is done by the client. It is responsible for communication with the server, controls the graphic and sound rendering and processes user inputs.

 

Graphic rendering

This comes in two forms: Software and OpenGL rendering.

The software renderer uses the CPU to draw everything you can see on the screen. For the Amiga version, we decided to use Steffen Haeuser's chunkyppc.library to manage the different screen modes/graphic cards. The porting of the software renderer is nearly finished. There is a screenshot showing it running in window mode on the workbench screen.

Click for a full-sized picture

OpenGL is a generic API for 3D graphic rendering. Today it is commonly used as a cross-platform interface to 3D hardware accelerators. The Amiga GL renderer will be based on our (recently released) MiniGL implementation. It is a subset of OpenGL and utilizes Warp3D as the Amiga's 3D hardware API.

Thanks to the generic OpenGL API and our finished MiniGL library the porting of the SiN GL renderer was only a question of a few days. All fullscreen images you can see on this page were taken from the Amiga GL renderer.

 

Sound

The sound system is not ported yet, but most of it looks similar to that of the original Quake2 engine, so the porting will be finished soon. SiN uses a unique music system, which in turn is based on the above mentioned sound system and will therefore not require additional code.

Click for a full-sized picture

Input

As is the case for our other Amiga ports, the SiN port will support all kinds of input devices like keyboard, mouse, joystick and joypads (including PSX joypads supported through psxport.device). There are a few bugs left in the input code (for example mouse moves lead to constant rotations) but they will be ironed out shortly.

 

Animation playback

The intro and endgame animations are stored as movie files on the CD. We will include the necessary decoder into the SiN executable to allow efficient playback. All ingame cutscenes use the 3D renderer and work correctly already.

Click for a full-sized picture

Network protocol

Our Amiga port uses the TCP/IP protocol for network communication and is compatible with all common TCP/IP stacks. It can be connected to servers running on PC's or act as a dedicated server itself. Of course, normal single player gaming does not require a TCP/IP stack.

 

* all screenshots are from Amiga!


To top of pageBack