1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
Xtux update log. David Lawrence
JUL 27:
Cleaned or rewrote lots of code. Things are done much more sanely now
than before. This is because for most of XTux's development, I have
been really tired and decided to add a new feature before I went to
bed. This led to really quick and very dirty hacks. Hopefully other
people can now work on my messy code! This is necessary because I can't
program AI to save my life. Help!
I've implemented sound using ESD, I use GNOME now, so it works for me!
If you have any objection to using it, please write the non ESD
sound code!
SOUND IS NOT ENABLED BY DEFAULT! Change it in header.h
Yeah I know about caching sounds etc, but we haven't recorded very
many at the moment and will probably have to do sound through OSS along
with ESD in the future.
There are lots of user tweakable settings you can change in header.h,
I may make it so it is changed at runtime, but at the moment you have
to recompile.
I've tried to separate code much more, eg you won't find any references
to an xpm anywhere but image.c, to draw an entity you don't have to
keep track of what to draw or the details of the image, it's all hidden
and done for you.
Entity classes have been introduced to simplify working out what to do,
most of the time you can drop in a new entity and it will work as
planned (but with default properties (health, speed etc)).
Added lots of new monsters and images. The new fireball looks quite a
bit better than the old one, I've turned to the dark side and have
started using the Daemon now because the fireballs kick ass.
Since the only fun thing to do in XTux at the moment is to kill bunnies,
I've made the bunny killing even more fun! You can also have the
heads or blood spats or gibbed parts stick around if you want, do this
by editing header.h
JUN 4:
Got most of the tech tileset implemented. Built a slashdot map to test
it out. Simplified the image loading/retrieving by getting rid of magic
numbers etc. Added a splash screen so that people don't get bored
waiting for the bloat^H^H^H^H^H images to load.
Took Beck out of the game, added frogs (just to piss the real life Beck
off) and a spoon, for another stupid movie reference ;)
Recorded lots of sound FX (most aren't included with the distribution)
Will actually make a decent job of playing them soon, when I figure out
exactly how I'm doing the sound.
At the moment, I think I'll do both ESD and PLIB, and let people choose
at build time. ESD has advantages such as being able to play other
things at the same time etc, while PLIB doesn't need other lib's in
order to get going.
APRIL 30:
Added messages. Yes, I went overboard with them in home.map!
Eventually I'll allow more general special objects such as teleporters,
triggers etc. The position is kept in the .map file, while the specific
data is kept in the .dat file. I'm thinking of using 1 digit hex for
'special objects' but I wonder if 16 per map is enough.
The way this is done is kindof a kludge, but I didn't want to do
anything brilliant or I'd ruin the overall consistant kludgy feel ;)
Changed how images are loaded in image.c, now you don't have to concern
yourself with the location in the array of a particular tile. All
that needs to be done is add the tile descriptor in "tile.h", and then
add a line in image.c such as:
FLOOR_PIX( T_FOO ) = load_image("foo.xpm", NULL);
I actually did it in a way which ment you didn't have to enter as much
information as the method above, but it involved preprocessor over-
abuse, and I believe it made it somewhat hard keep track of things.
Fixed up check_entity_collisions, so there are no duplicate cases.
Added a new "feature", try uncommenting FOCUSFOLLOWSNUKE in the file
'header.h' and recompiling. I may put that in as a player preference
(ie you don't need to recompile to switch it on/off), but it's far too
experimental at the moment ;)
New poster up in Tux's room. Don't worry, it's clean! If you have
any cool posters send them in. Try to make sure it looks decent at
around (ie less than) 64x64 pixels.
I've started version numbers, we're currently on Linuxsa V0.4, once
we reach Linuxsa V1.0 I'll post to slashdot, freshmeat etc and go
to actual V0.1
I would like some more maps, and at least a very basic example of a
'tech' style map before that, though I may jump to V1.0 on a whim
however ;)
I am learning C++ and GTK. My next project will definately make use of
OO and Toolkits.
Of course, before any of that I've got to finish xtux...
My summer job finishes next week, so I'll have plenty of time on my
hands for programming.
APRIL 28: (not uploaded)
Added a menu that lets you select player/map without having to restart.
This is good because the maps take less than a second to load while the
pixmaps take ~10 seconds or so. The fact that the xpm format is
ascii doesn't make for quick loading.
I want up-arrow to cycle back through the maps, but unfortunately I
don't know how to do that without saving all the maps into a list
(which isn't so bad, but I'm lazy!).
Fixed up some messy code, there is still a huge amount left though!
APRIL 24: (Updated web page)
Changed the controls somewhat, Space shoots SELECTED weapon, and
control/alt selects which weapon. You must have enough amunition to
fire weapons with ammo, at the moment (prob for ever) fireball/cd is
unlimited.
New images for weapon selection. 1 pinched from Aftersteps icons, the
other (nuke radiation sign) is programmer art so it may be changed.
New monster, a cute little bunny. I am quite happy with the AI for him,
he acts quite bunny-like!
Nuke's don't clip on bunnies, cause they are too low to the ground.
I Moved almost half of win.c to images.c, so now the actual drawing
routines and image handling are separate.
Bug fixes, PLEASE REPORT BUGS! I'm sure you can find them!
Things to do:
Document things, such as howto add a new monster, or tile. I haven't
done much with the map guide on the web page, but I'd rather code than
write HTML. Volunteers?
Fix up death animations so they are done properly, ie not using the
health kludge that they are now.
Collision detection. This is done very badly, eg you can't get within
speed distance from an obsticle. The only reason it looks ok now is
because I gave the entities a much smaller width & height than they
actually should have.
AI. The bunny is good, but everything else sucks.
Sound. I think I'll use wav files, because .au's sound like crap. Too
bad wav's aren't as easy to play.
Make a proper menu, with options etc. I don't like menu's, but some do.
I've got to learn a toolkit sometime, but I'm not sure of which as yet.
Perhaps I'll make a drop-down menu ala xbill rather than a quake style
one as present.
Optimise the draw_map function. You only need to update the parts of
the map that are new on the screen (eg scroll_w, scroll_h) but at the
moment it updates it all. This is by far the most intensive part of
the code, so it needs to be FAST!
Other optimisations, such as not redrawing the whole status bar when
switching weapons. This isn't that critical, as it doesn't happen often
and isn't really that big.
|