|
Snok – Can you handle the size? |
Introduction
A few days after we released the
beta/demoversion of Snok, I was asked by CFXweb to write a small, technical
article about it. In this article I will try to point out some interesting
technical aspects from the project. I do not say that any of these
algorithms is the way to do things, it's just our way of solving the
problems.
For those who haven't heard; Snok is a first
person multiplayer 3D snake game. I guess, or even know, we're not the
first human beings with the idea of creating such a game. But don't think we
ever stole this idea from someone; it's nearly six billion people on this
planet and similar ideas may appear at the same time at different places.
The demo/betaversion of the game may be downloaded
from...
|
|
First Person 3D Snake Game, for up to 6 people!
A beta/demoversion of the game Snok. It's the result of several years of hobbyprogramming and a schoolproject, ending up with a first person realtime multiplayer 3D-snake game.
|
|
|
Please consider this game as what it is: a schoolproject.
It's not a commercial production, developed by professional programmers
or artists.
PS: I just wrote a tutorial on how to create
your own levels for Snok. You can find in the "download" section
on the snok website.
Aquarium
Snok is based on a 3D engine called Aquarium that
I've developed over the last few years. It was originally programmed for the
purpose of creating realtime graphical demonstrations (or demos, as we like
to call them). These demos may be downloaded from
www.tls.no. They must all be run in dos/win95/win98 environment (not NT
or Win2k).
The engine is heavily based on importing models
and keyframing by using Lightwave file formats. It's very easy to develop
converters for these formats, as they are very well documented. Like every
other 3D engine in this world, Aquarium has loads of other more or less spectacular
features. Instead of listing up every tiny little feature, I want to present
the overall design idea of the entire engine. For people who have programmed
some 3D, but still haven't got started on the Engine of Their Life, this could
be very interesting. Again: I do not claim that this is the
way to design an engine. Still, there may be some "aaah..."s and
"of course..."s for many of you. This design is entirely developed
out of my own ideas, and has proven through four demos ( please check
out www.tls.no ) and the game of Snok to be
very scaleable and robust.
Aquarium: (html) (word)
PS: I will start to redesign some parts of my
engine soon, and the model described in that document will probably be changed
to some kind of tree-structure. The flat structure, where all objects (Fishes)
exist side-by-side appears not to be suitable in some situations.
Collision detection
The collision detection library was the first
major part to be developed for Snok. In a game where the main goal is not to
crash, such a library is quite vital. :) As many of the classes and
datastructures from Aquarium was to be used, some of the design were already done.
The following document describes the collision detection algorithm we designed
for the game of Snok. The description is totally independent of programming
language and application design. Please note that we actually developed this
algorithm entirely on our own without any
Collision detection (html)
(word)
Snake Generator Algorithm
The last part I'll talk about is the
algoritm for generating the Snok's geometry as it's running. Of course, this is
not an algorithm that may be reused for a lot of purposes. Also it is more
independent of programming language and application environment than the
previous. Anyway, if any of you guys are interested, here goes:
Snake
Geometry Generator (html) (word)
Torbjørn
Vik
Cyberfish/TLS
|