Eddy Petrișor: glest: a free 3D real time strategy game
After almost a year of working on and off on the package, glest is now in the new queue.
Glest is really a free 3D real time strategy game with amazing graphics and really interesting game play.
So maybe you're wondering why did it took me so long to package it. Well, glest is mainly developed on a Windows platform and GNU/Linux is the platform it was later ported to. So this came with some problems:
During debconf I asked Tolimar to make an upload, and it turns out that for some reason I still don't know, the build resulted in a statically linked binary. I was amazed since I didn't recall doing any changes that might have triggered this. At some point I suspected that the build system is broken on other arches than i386 (my main machine is amd64) and halted. This until a few days ago Joey Hess added a comment in the ITP bug pointing out that the game is ok. After a couple of emails I realized that the static issue was just some strange temporary issue on my machine and now the package is in NEW.
So, that's my excuse. I hope that upstream glest issue get fixed. If not, I'll probably package glevolution, too.
Glest is really a free 3D real time strategy game with amazing graphics and really interesting game play.
So maybe you're wondering why did it took me so long to package it. Well, glest is mainly developed on a Windows platform and GNU/Linux is the platform it was later ported to. So this came with some problems:
- the game uses jam as a build system; don't get me started on the intelligence of this build system; I had to go through real pain to make it build
- the game is entirely written with "little endian" assumtion in mind
- apparently the editor is not functional on Linux yet, but there is a patch (I will enable this later, after some testing)
- the build system was not bootstrapped before building the tarball
- the linux build creates some symlinks and I had to do some really nasty tricks so that there are no unrepresentable changes in the source
- the upstream is currently not that active, but it used to be a lot less last year; it seesm that there is a motivation/time issue with the leader of the project
- upstream moved the project to sourceforge and they keep the code now in subversion, but I wasn't aware about this until recently
- there are a few people talking about forks and a real fork which proclaims itself ast the real project continuation; I suspect that all this mess appeared due to inactivity of upstream last year
- the game used a non-free font
During debconf I asked Tolimar to make an upload, and it turns out that for some reason I still don't know, the build resulted in a statically linked binary. I was amazed since I didn't recall doing any changes that might have triggered this. At some point I suspected that the build system is broken on other arches than i386 (my main machine is amd64) and halted. This until a few days ago Joey Hess added a comment in the ITP bug pointing out that the game is ok. After a couple of emails I realized that the static issue was just some strange temporary issue on my machine and now the package is in NEW.
So, that's my excuse. I hope that upstream glest issue get fixed. If not, I'll probably package glevolution, too.
That’s telling you that USB might not work as expected.
I've always been proud of the "vidio" game, which is the first game shown
above. It'd give Pong a run for its money in simplicity, and has gameplay I
still enjoy (for up to 5 minutes at a time). You're the green dot, which is
flying from left to right. Each time it reaches the right side of the
screen, it wraps back to the left -- but leaves a blue wall behind. Crash
into the wall and you lose a life. Sometimes other dots appear that you can
pick up to get new lives.
This sounds easy, but it's not, mostly because the Atari joystick (or my
code for reading it) is not very precise, so it's hard to line up to
exactly the right place on the screen to go through a small hole in the
wall.
In contrast to that piece on innovation, the "jump" game is a pretty
generic platformer, jump over the water and shoot the enemy that's crawling
along the ceiling. It's also a bit buggy.
I took a look at the code, but the bug on line 200 isn't very obvious,
whatever it is. This is how everyone's old code looks to them after 20
years ... right?
My version of Tetris for the Atari. It looks a lot better on a real TV
tube. Two fun things in writing this were that I couldn't figure out how
to program it to rotate the blocks on the fly -- so I just wrote out data
with every possible rotation for every block. Also, Atari BASIC lacks
arrays, so it uses strings for storing the game state.
This graph shows the percentage of the total download that used HTTP
from a mirror. The optimal line shows the minimum possible (i.e. all
peers are connected), which corresponds to only one copy (the first)
of every package being downloaded using HTTP.
This verifies my previous thinking, which is that fracturing the
download population into multiple small swarms results in lots of
inefficiencies, and lots of HTTP downloading. All efforts will need
to be taken to keep the downloading populations together. (This is
especially difficult for unstable, when a new swarm could be created
twice a day due to archive updates.) Swarms of 1,000 peers or more
seem to be sufficient to minimize the HTTP downloading.
This graph shows the amount of unnecessary HTTP downloading that
occurred, which is just the difference of each line from the optimal
one in the previous plot. This shows the danger of selective
downloading, as all of this unnecessary HTTP downloading occurs
because the swarm is too big to find peers that have the desired
package (they do exist). Fortunately, this unnecessary downloading
seems to approach a maximum as the swarm size increases.
For the large swarm sizes needed to make the downloading efficient,
and assuming a reasonable number of connections of 100 (bittorrent
defaults to maintaining at least 40, and large swarms usually means
a large number of connections), we can expect to be using HTTP for
about 4% of the download. This number is surprisingly low due to the
popularity distribution of packages (only rare ones are hard to
find, but they aren't downloaded very often). I think 4% is
manageable in our situation, given that there is a backup method to
find the rare packages, though it does show the need to have that
backup method available. This is probably more of a problem for
regular bittorrent clients, in which there is no backup method.