||| ||| / | \ |
HAMSOFT |
||| ||| / | \ |
Ok so no flashy screenies this time but the pview terrain is now generated entirely fractally, and you can walk around the whole planet.
Working firstly on different ways of selecting areas of terrain and then later tarting it up for worlds with vegetation and atmospheres.
Have fun you crazy mofos.
Ok my inbox has been flatlined with the amount of requests for a shot with a better texture. Technically actually that's a lie. Well here's one anyways, apologies for anyone still using dialup.
I'm working on getting these textures generated at the moment. ETA in the next couple of weeks.
I've put up the new hamsoft website that i've been working on. It should be a bit easier to use and a bit more browser compliant (although it looks better in firefox than ie. Also in the tradition of most things i do it's not completely finished yet, although you should get some idea of the final product.
Anyway it's easily skinnable so if you don't like it or think you could do a better job let me know...
The main addition to the site is an rss feed to the titles of our development posts on the official Hamsoft LJ which should help keep you up to date with the latest developments.
Over the next few weeks inbetween working on Hamwars i'll integrate the hamwars website and start work on a user registration system.
Anyway it's back to work on the universe generator for me, hope you are all well and as excited as us about hamwars as we are (well maybe not as excited as Mark).
No pretty screenshots i'm afraid, but some good news.
This weekend we managed to get the server/client working cross network and the performance was not all that bad either, further to that i've meddled a little on the server side and it now accepts http requests! This means that players will be able to request game infomation from the server through their browser (more info on the uses of this at a later date).
I've also setup the basic architecture for in game messaging and player structures.
So things seem to be picking up after an extended christmas lull...
]... oh almost forgot, i'm working on a new hamsoft/hamwars website that actually doesn't suck...more soon
02/10/2006 12:09 AM
Look at the cockpit to see the specular lighting. Bumpmapping is also happening in this picture if you look at the back of the model.
Frankly I was expecting it to look a little better than this. I'll keep tweaking it although I will be working on the planetary view for the next week or so...
Hi, I'm EA, the foolish mortal agreeing to do most of the art and music direction on the Hamwars project.
I thought I'd update this journal today, as the last couple of weeks have been pretty landmark in the development of this game. I need to pay tribute to the two coders; Zombiepron and especially Slaytanist for his graphics engines. It has dawned on us only recently that this game will not only *be* good, but *look* good. Very good. Not like Doom 3 good or UT2004 good, but technically better than Quake 2, better than Civ 3 good. Best full freeware game out there good. And for a three-man team in their spare time, it's going to be pretty impressive.
Slaytanist is sorting our bump and gloss mapping as I type. The voxel engine he made will blow Civ 3 out of the water.
Yet the game itself is still so open-ended that the player will be given complete freedom. Not only in the way it's played (Zompiepron's web interface will allow much of the game to be played remotely), but what you do while you're playing. Can you name me another game in which it is possible, yet not obligatory, to genetically engineer, train and weaponise the wildlife on your planets?

Giant Spider model (Feb 2006, 213 vertices, 256 colours)
This is the game we all wanted to play as kids. So we're not going to be skimping on the small things.
You have been reading a propaganda message on behalf of Hamsoft, by EA (the untouchable).




Coming next - message system and glossmapping!
Work is picking up pace again on Hamwars. We now have timelapse buttons to show the dynamic orbits.. hold them on to watch the planets zip about :)
Lots of work is planned for the coming days.. largely tarting up the GUI but a great deal of structural work too.
Here's another one for all you phanz..
Okay guys... new screenshots at Hamwars.
Yey! hamsoft now ranks 14 on a search for 'hamsoft' on alltheweb.com which is more than can be said for google (boohiss).
alltheweb is my new best friend
Long time no comment...etc.etc
Okay so hamwarz is still alive! yeyboo....
We are on the verge of completing the underlying universe model although when i say on the verge i am actually lying but, you know, it's pretty close.
I dare say within a week or so we may have some screenshots to show of our trips through the hamwars universe!
assythment has kindly offered to help with the gfx and musak which can only be a godsend considering the combined ineptitdue of myself and
slaytanist .
once we have the universe model up and running it's time to get down to the game mechanics! and once we have some kind of basic game ready we will be releasing it for testing. WOWZ!!!!!1
anyway i;ll stick and updated site up soon and stuff when i get time...
09/20/2005 02:03 PM
Teh latest version
Hamwars will eat your soul with toast.
I thought we needed a forum yo
I doubt it's exactly secure mate but it would be nice to have somewhere to organise our thoughts, we have like 80 pages of craptalk between us and there must be a fucking design in there!
Sign ye up and I'll fuckin admin ya!
Oh aye.. my idea for the title screen:
Or something :)
Bad news with the Hamsoft samplie - leHam was using software he though was pretty distinctive (and, errrm, hot) so he's gonna have another bash with PD stuffs. TBH it doesn't even need to sound half as good as it did but he's a fucking perfectionist so it may take a while :(
=======================================>EDiT<==========================================
Got a fullbright-when-selected toggle button - it would be cool to have this actually greying out when it's selected. I'm thinking in a bit of having a list of buttons like sprite data and either writing to the back buffer or the actual background we're blitting depending on whether it's a toggle button or not. Pretty confident about this.
I do need to overhaul the way I'm handling buttons though, I reckon we'll have problems with this system when we have a huge number of nested menus. Seeing now why all the old games had icons a fixed size and position (oh yeah, and they could just right-shift the mouse x and get the button number, I get it)..
Orbiting: dude I'm guessing the axis of rotation remeins fixed while a planet is orbiting, rather than rotating with it. Because of gyroscopes or something. Do you know if it does?
Did a bit of werk on the HAMWARZ client today. The display is now confined to a box (400*400 I think) although it's certainly changable, with some shitty pixor in the remaining screen as a placeholder. There's a quit button and the name of the planet your mouse is over is displayed. Also the shitty pixor contains a rather badly spraycanned 'starfield' if you can call it that..
I hope I'm handling the buttons sensibly; I realise we will need a fuckload of different popups and other crap so we probably need it a little more versatile. Popups I will do soon but I'm knee deep in this shit and have a fuckload to do!
Files in teh usual place.
Update; now it's loading stuff thru a char buffer to sort of vaguely simulate a client-server exchange. You can move around the system with the arrow keys and 1/0 on the keypad for up/down; the top keypad keys 4-9 are for rotation. Right now the rotation on the planets is proper screwed, if anyone can tell me how to properly convert unit vectors to euler angles (without gimbal locking altho this is hardly the biggest worry right now) I'd be fucking chuffed!
Fialz in the usual place or will be when I upload them.
Right.. after I fix this frigging rotation issue I can see a few directions to go in:
Tart up Solarpanel (selection/hovering messages, "Talking to server" message, skybox, confine it to a 'window', controls at the side and crap) <-- we need a gui sketched out for this and pretty much everything else!!
Hamwarz Message Protocol(R)
Recycle a bunch of crap and start on the Starmap
Player data structures
Unit structures, and incorporate these into the maps
Further screens for the units
Fractal generation of planet maps
Server-side simulation
Any/all/none of the above? Most of these should take a day or two each max but at current rate will be more like a fortnight :) The bottom one will likely take months; probably best to get something mediocre running pretty soon then dip into it when we feel like it.
I need a fucking drink :S
EDiT> HURRAY! The Y/Z rotation appears done (like, the poles look like they're where they're supposed to be) I'll tell you the truth mate I HAVE NO FUCKING CLUE how I'm gonna get them to spin right.
EDiT> X-rot is working. Rolling (7 and 9 on the keypad) seems to have the opposite effect on the angles you would think, which is weird, and 'fixing' it fucks the rest up. How queer. Maybe the matrix ops are wrong?
A fair bit has changed with the ballmapper, phong is now looking a lot prettier and I've set up a nightmap for Earth.
Also changed the pallette shading so it doesn't look so 1995 ( :( ), a problem with this though is now the moon doesn't look bumpmapped anymore! And since I liked the effect I might go and code some bumpmapping :) This will add a couple of ops to the innerloop as well as creating a smallish texture (720*360*2 bytes) and a smallish table, should this chew up bandwidth or clientside render speed we could certainly make it togglable.
Oh aye I've jacked up the envmap to utterly obese proportions, it will take a minute or two to calc (generation is still unoptimised and it's a 128meg table :O ) so go make a brew or something :D. I've set it so you can change the lot at compilation just by changing PHONGRSBITS and PHONGRTBITS to something a little lower, if you wish. The changes I've made to the phongmapper don't stop there.. you can change it back to an 8meg table and it still looks infinitely better (the way the lightangles were calced was a little fucked before and it was jerking about like an electrician with Parkinson's)
//Wondering if we could generate this envmap while the client is DLing stuff?
Source, exe and textures are in the same place.
UPDATE: exe with 8meg table and two with 32megs for comparison in the zip too.
UPDATE: Precalc MUCH faster now; I've not even optimised it, just built sin tables.
UPDATE: Added clipping which sort of sets me up to represent this shit in real space and not just screen coords. Grr :)
Also I've had an idea for selecting planets (rather than the map painted on them) - create a list of bounding boxes sorted by distance from camera. It will then check the boxes in order and edge-detect if you're in the box (for planets a check by radius would be enough) and give a hovering planet name if you're over it, and set a global pointer to the object. When you click it it will set the planet as selected, zoom you in, let you select shit on the planet and all that good crap. What do you reckon?
Getting crap off the planet once it's selected will be another one of those spherical cord transforms I'm starting to really love.
Yes that was sarcasm.
What the fuck am I talking about we can use the mapper tables which will be better anyway cus we can brush over any, ahem discrepancies between the mapper output and what should actually be there.
Since all the distances are crazy in a spacegame I don't think we'll need a z-buffer except a sort of localised one per spaceship but if you think it would be useful it's your call. If we're even representing spaceships as models in the planetary grid (they're gonna be fucking tiny! Except for like orbital superbarges and Death Arks and whatever crazy shit we want) Maybe just a red circle for enemy units, yellow for neutral/non-combat and blue or somshit for friendly. These circles could also represent large ports and cities on the map. Whatever.
Not so worried about potential Java speed issues now; so long as we only draw the screen when we have to I'm sure we could get away with 5-10fps, less even. It's gonna be pretty static as games go, wherever we go with it really.
Mem is starting to frighten me a little :) How much can you realistically use in a browser applet?!? Of course if we don't go that way it's not an issue.
Holy fuck I'm gonna go draw some Death Arks :D
hamwars is following it's usual stop start momentum, however it current appears to be in the start phase.
slaytanist has actually got a working ballmapper o' doom up and running however we are running into major problems, mainly due to our own ineptitude.
Some major things that are changing:
Anyway that's all i have to say for now, other than the screenshot on the main site is no longer a proper screenshot of the planet view. Java3D sucks, however i have seen
slaytanists ballmapper (that sounds so wrong) and it rocks... so there
Omfgazm!!
Dude I don't believe I actually did something resembling useful.
What do you think of speed and shit? I mean will it be acceptable runing in Jarvar etc? The innerloop needs a fuckload of work but I don't want to go overboard cus I know it has to be portable, erm yeah that's it. Speed aside I really need to put in some clipping so I can see it moving about.
I speak Klingon in all formal dialects and 37 coloquial forms.
//main.cpp
#include
assign vZ goto mov
mov:
scan relative 1
cmath v0 = ((SGN(#enemy_x - #x_pos) + 1 + (SGN(#enemy_y - #y_pos) + 1) * 3 + (#cur_head - 1) * 9) + ((#cur_ammo < 5) * -36)) * (#scan < 5) * -1 + ((#scan = 5) * -72)
cmath v1 = ((#scan = 1) OR (#scan = 3)) * -1 + ((((#enemy_y - #y_pos) ^ 2) < 4) * -3) + ((((#enemy_x - #x_pos) ^ 2) < 4) * -6)
goto m ~v1 ~v0
m 0 0:
move forward
~vZ
m 0 1:
goto dukeit
m 0 2:
move forward
~vZ
m 0 3:
turn left
~vZ
m 0 4:
self destruct
m 0 5:
turn right
~vZ
m 0 6:
turn left
~vZ
m 0 7:
turn left
goto eek
m 0 8:
turn right
~vZ
m 0 9:
turn left
~vZ
m 0 10:
move forward
turn left
~vZ
m 0 11:
move forward
~vZ
m 0 12:
turn left
goto eek
m 0 13:
self destruct
m 0 14:
goto dukeit
m 0 15:
turn right
~vZ
m 0 16:
move forward
turn right
~vZ
m 0 17:
move forward
~vZ
m 0 18:
turn right
~vZ
m 0 19:
turn left
goto eek
m 0 20:
turn left
~vZ
m 0 21:
move forward
turn right
~vZ
m 0 22:
self destruct
m 0 23:
move forward
turn right
~vZ
m 0 24:
move forward
~vZ
m 0 25:
goto dukeit
m 0 26:
move forward
~vZ
m 0 27:
move forward
~vZ
m 0 28:
move forward
turn right
~vZ
m 0 29:
turn right
~vZ
m 0 30:
goto dukeit
m 0 31:
self destruct
m 0 32:
turn left
goto eek
m 0 33:
move forward
~vZ
m 0 34:
move forward
turn right
~vZ
m 0 35:
turn left
~vZ
m 0 36:
turn right
~vZ
m 0 37:
turn left
goto eek
m 0 38:
turn left
~vZ
m 0 39:
move forward
~vZ
m 0 40:
self destruct
m 0 41:
move forward
~vZ
m 0 42:
move forward
~vZ
m 0 43:
turn right
goto eek
m 0 44:
move forward
~vZ
m 0 45:
move forward
~vZ
m 0 46:
move forward
turn left
~vZ
m 0 47:
turn right
~vZ
m 0 48:
turn right
goto eek
m 0 49:
self destruct
m 0 50:
turn left
goto eek
m 0 51:
move forward
~vZ
m 0 52:
move forward
turn left
~vZ
m 0 53:
turn right
~vZ
m 0 54:
move forward
~vZ
m 0 55:
turn right
goto eek
m 0 56:
move forward
~vZ
m 0 57:
move forward
turn left
~vZ
m 0 58:
self destruct
m 0 59:
move forward
turn left
~vZ
m 0 60:
turn left
~vZ
m 0 61:
turn left
goto eek
m 0 62:
turn right
~vZ
m 0 63:
turn left
~vZ
m 0 64:
move forward
turn left
~vZ
m 0 65:
move forward
~vZ
m 0 66:
turn left
goto eek
m 0 67:
self destruct
m 0 68:
turn right
goto eek
m 0 69:
turn right
~vZ
m 0 70:
move forward
turn left
~vZ
m 0 71:
move forward
m 0 72:
goto flagrout
~vZ
m 1 0:
turn left
~vZ
m 1 1:
turn right
goto eek
m 1 2:
turn right
~vZ
m 1 3:
turn left
~vZ
m 1 4:
self destruct
m 1 5:
turn right
~vZ
m 1 6:
turn left
~vZ
m 1 7:
turn left
goto eek
m 1 8:
turn right
~vZ
m 1 9:
turn left
~vZ
m 1 10:
move backward
turn left
~vZ
m 1 11:
turn left
~vZ
m 1 12:
turn left
goto eek
m 1 13:
self destruct
m 1 14:
turn right
goto eek
m 1 15:
turn right
~vZ
m 1 16:
move backward
turn right
~vZ
m 1 17:
turn right
~vZ
m 1 18:
turn right
~vZ
m 1 19:
turn left
goto eek
m 1 20:
turn left
~vZ
m 1 21:
move backward
turn right
~vZ
m 1 22:
self destruct
m 1 23:
move backward
turn right
~vZ
m 1 24:
turn right
~vZ
m 1 25:
turn right
goto eek
m 1 26:
turn left
~vZ
m 1 27:
turn right
~vZ
m 1 28:
move backward
turn right
~vZ
m 1 29:
turn right
~vZ
m 1 30:
turn right
goto eek
m 1 31:
self destruct
m 1 32:
turn left
goto eek
m 1 33:
turn left
~vZ
m 1 34:
move backward
turn right
~vZ
m 1 35:
turn left
~vZ
m 1 36:
turn right
~vZ
m 1 37:
turn left
goto eek
m 1 38:
turn left
~vZ
m 1 39:
turn left
~vZ
m 1 40:
self destruct
m 1 41:
turn left
~vZ
m 1 42:
turn right
~vZ
m 1 43:
turn right
goto eek
m 1 44:
turn left
~vZ
m 1 45:
turn right
~vZ
m 1 46:
move backward
turn left
~vZ
m 1 47:
turn right
~vZ
m 1 48:
turn right
goto eek
m 1 49:
self destruct
m 1 50:
turn left
goto eek
m 1 51:
turn left
~vZ
m 1 52:
move backward
turn left
~vZ
m 1 53:
turn right
~vZ
m 1 54:
turn left
~vZ
m 1 55:
turn right
goto eek
m 1 56:
turn right
~vZ
m 1 57:
move forward
turn left
~vZ
m 1 58:
self destruct
m 1 59:
move backward
turn left
~vZ
m 1 60:
turn left
~vZ
m 1 61:
turn left
goto eek
m 1 62:
turn right
~vZ
m 1 63:
turn left
~vZ
m 1 64:
move backward
turn left
~vZ
m 1 65:
turn left
~vZ
m 1 66:
turn left
goto eek
m 1 67:
self destruct
m 1 68:
turn right
goto eek
m 1 69:
turn right
~vZ
m 1 70:
move backward
turn right
~vZ
m 1 71:
turn right
~vZ
m 1 72:
goto flagrout
flagrout:
if value #cur_life > 0 then move forward
if value #cloakstatus = 1 then cloak off
scan relative 1
if value #scan <> 5 then ~vZ
scan relative 5
if value #scan = 0 then goto flag_1
scan relative 3
if value #scan = 0 then goto flag_2
scan relative 7
if value #scan = 0 then goto flag_3
if value #curlife = 0 then discharge energy
~vZ
flag_1:
move backward
if value #curlife = 0 then discharge energy
move forward
move forward
~vZ
flag_2:
turn right
move forward
move forward
if value #curlife = 0 then discharge energy
move backward
move backward
turn left
move forward
~vZ
flag_3:
turn left
move forward
move forward
if value #curlife = 0 then discharge energy
move backward
move backward
turn right
move forward
~vZ
m 3 0:
turn left
~vZ
m 3 1:
goto dukeit
m 3 2:
turn right
~vZ
m 3 3:
turn left
~vZ
m 3 4:
self destruct
m 3 5:
turn right
~vZ
m 3 6:
turn left
~vZ
m 3 7:
turn left
goto eek
m 3 8:
turn right
~vZ
m 3 9:
turn left
~vZ
m 3 10:
move forward
turn left
~vZ
m 3 11:
goto bomberer
m 3 12:
turn left
goto eek
m 3 13:
self destruct
m 3 14:
goto dukeit
m 3 15:
turn right
~vZ
m 3 16:
move forward
turn right
~vZ
m 3 17:
goto bomberer
m 3 18:
turn right
~vZ
m 3 19:
turn left
goto eek
m 3 20:
turn left
~vZ
m 3 21:
move forward
turn right
~vZ
m 3 22:
self destruct
m 3 23:
move forward
turn right
~vZ
m 3 24:
turn right
~vZ
m 3 25:
goto dukeit
m 3 26:
turn left
~vZ
m 3 27:
goto bomberer
m 3 28:
move forward
turn right
~vZ
m 3 29:
turn right
~vZ
m 3 30:
goto dukeit
~vZ
m 3 31:
self destruct
m 3 32:
turn left
goto eek
~vZ
m 3 33:
goto bomberer
m 3 34:
move forward
turn right
~vZ
m 3 35:
turn left
~vZ
m 3 36:
turn right
~vZ
m 3 37:
turn left
goto eek
~vZ
m 3 38:
turn left
~vZ
m 3 39:
move forward
~vZ
m 3 40:
self destruct
m 3 41:
move forward
~vZ
m 3 42:
move forward
~vZ
m 3 43:
turn right
goto eek
m 3 44:
move forward
~vZ
m 3 45:
move forward
~vZ
m 3 46:
move forward
turn left
~vZ
m 3 47:
turn right
~vZ
m 3 48:
turn right
goto eek
m 3 49:
self destruct
m 3 50:
turn left
goto eek
m 3 51:
move forward
~vZ
m 3 52:
move forward
turn left
~vZ
m 3 53:
turn right
~vZ
m 3 54:
move forward
~vZ
m 3 55:
turn right
goto eek
m 3 56:
move forward
~vZ
m 3 57:
move forward
turn left
~vZ
m 3 58:
self destruct
m 3 59:
move forward
turn left
~vZ
m 3 60:
turn left
~vZ
m 3 61:
turn left
goto eek
m 3 62:
turn right
~vZ
m 3 63:
turn left
~vZ
m 3 64:
move forward
turn left
~vZ
m 3 65:
move forward
~vZ
m 3 66:
turn left
goto eek
m 3 67:
self destruct
m 3 68:
turn right
goto eek
m 3 69:
turn right
~vZ
m 3 70:
move forward
turn left
~vZ
m 3 71:
move forward
~vZ
m 3 72:
goto flagrout
m 4 0:
move backward
turn left
~vZ
m 4 1:
turn right
goto eek
m 4 2:
move backward
turn right
~vZ
m 4 3:
turn left
~vZ
m 4 4:
self destruct
m 4 5:
turn right
~vZ
m 4 6:
turn left
~vZ
m 4 7:
turn left
goto eek
m 4 8:
turn right
~vZ
m 4 9:
turn left
~vZ
m 4 10:
move backward
turn left
~vZ
m 4 11:
move backward
turn left
~vZ
m 4 12:
turn left
goto eek
m 4 13:
self destruct
m 4 14:
turn right
goto eek
m 4 15:
turn right
~vZ
m 4 16:
move backward
turn right
~vZ
m 4 17:
turn right
move backward
~vZ
m 4 18:
turn right
~vZ
m 4 19:
turn left
goto eek
m 4 20:
turn left
~vZ
m 4 21:
move backward
turn right
~vZ
m 4 22:
self destruct
m 4 23:
move backward
turn right
~vZ
m 4 24:
move backward
turn right
~vZ
m 4 25:
turn right
goto eek
m 4 26:
move backward
turn left
~vZ
m 4 27:
move backward
turn right
~vZ
m 4 28:
move backward
turn right
~vZ
m 4 29:
turn right
~vZ
m 4 30:
turn right
goto eek
m 4 31:
self destruct
m 4 32:
turn left
goto eek
m 4 33:
move backward
turn left
~vZ
m 4 34:
move backward
turn right
~vZ
m 4 35:
turn left
~vZ
m 4 36:
turn right
~vZ
m 4 37:
turn left
goto eek
m 4 38:
turn left
~vZ
m 4 39:
turn left
~vZ
m 4 40:
self destruct
m 4 41:
turn left
~vZ
m 4 42:
turn right
~vZ
m 4 43:
turn right
goto eek
m 4 44:
turn left
~vZ
m 4 45:
turn right
~vZ
m 4 46:
move backward
turn left
~vZ
m 4 47:
turn right
~vZ
m 4 48:
turn right
goto eek
m 4 49:
self destruct
m 4 50:
turn left
goto eek
m 4 51:
turn left
~vZ
m 4 52:
move backward
turn left
~vZ
m 4 53:
turn right
~vZ
m 4 54:
turn left
~vZ
m 4 55:
turn right
goto eek
m 4 56:
turn right
~vZ
m 4 57:
move forward
turn left
~vZ
m 4 58:
self destruct
m 4 59:
move backward
turn left
~vZ
m 4 60:
turn left
~vZ
m 4 61:
turn left
goto eek
m 4 62:
turn right
~vZ
m 4 63:
turn left
~vZ
m 4 64:
move backward
turn left
~vZ
m 4 65:
turn left
~vZ
m 4 66:
turn left
goto eek
m 4 67:
self destruct
m 4 68:
turn right
goto eek
m 4 69:
turn right
~vZ
m 4 70:
move backward
turn right
~vZ
m 4 71:
turn right
~vZ
m 4 72:
goto flagrout
m 6 0:
goto bomberer
m 6 1:
goto dukeit
m 6 2:
goto bomberer
m 6 3:
turn left
~vZ
m 6 4:
self destruct
m 6 5:
turn right
~vZ
m 6 6:
turn left
~vZ
m 6 7:
turn left
goto eek
~vZ
m 6 8:
turn right
~vZ
m 6 9:
turn left
~vZ
m 6 10:
move forward
turn left
~vZ
m 6 11:
turn left
~vZ
m 6 12:
turn left
goto eek
m 6 13:
self destruct
m 6 14:
goto dukeit
~vZ
m 6 15:
turn right
~vZ
m 6 16:
move forward
turn right
~vZ
m 6 17:
turn right
~vZ
m 6 18:
turn right
~vZ
m 6 19:
turn left
goto eek
m 6 20:
turn left
~vZ
m 6 21:
move forward
turn right
~vZ
m 6 22:
self destruct
m 6 23:
move forward
turn right
~vZ
m 6 24:
goto bomberer
m 6 25:
goto dukeit
m 6 26:
goto bomberer
m 6 27:
turn right
~vZ
m 6 28:
move forward
turn right
~vZ
m 6 29:
turn right
~vZ
m 6 30:
goto dukeit
m 6 31:
self destruct
m 6 32:
turn left
goto eek
m 6 33:
turn left
~vZ
m 6 34:
move forward
turn left
~vZ
m 6 35:
turn left
~vZ
m 6 36:
turn right
~vZ
m 6 37:
turn left
goto eek
m 6 38:
turn left
~vZ
m 6 39:
move forward
~vZ
m 6 40:
self destruct
m 6 41:
move forward
~vZ
m 6 42:
move forward
~vZ
m 6 43:
turn right
goto eek
m 6 44:
move forward
~vZ
m 6 45:
move forward
~vZ
m 6 46:
move forward
turn left
~vZ
m 6 47:
turn right
~vZ
m 6 48:
turn right
goto eek
m 6 49:
self destruct
m 6 50:
turn left
goto eek
m 6 51:
move forward
~vZ
m 6 52:
move forward
turn left
~vZ
m 6 53:
turn right
~vZ
m 6 54:
move forward
~vZ
m 6 55:
turn right
goto eek
m 6 56:
move forward
~vZ
m 6 57:
move forward
turn left
~vZ
m 6 58:
self destruct
m 6 59:
move forward
turn left
~vZ
m 6 60:
turn left
~vZ
m 6 61:
turn left
goto eek
m 6 62:
turn right
~vZ
m 6 63:
turn left
~vZ
m 6 64:
move forward
turn left
~vZ
m 6 65:
move forward
~vZ
m 6 66:
turn left
goto eek
~vZ
m 6 67:
self destruct
m 6 68:
turn right
goto eek
m 6 69:
turn right
~vZ
m 6 70:
move forward
turn left
~vZ
m 6 71:
move forward
~vZ
m 6 72:
goto flagrout
m 7 0:
move backward
turn left
~vZ
m 7 1:
turn right
goto eek
m 7 2:
move backward
turn right
~vZ
m 7 3:
turn left
~vZ
m 7 4:
self destruct
m 7 5:
turn right
~vZ
m 7 6:
turn left
~vZ
m 7 7:
turn left
goto eek
m 7 8:
turn right
~vZ
m 7 9:
turn left
~vZ
m 7 10:
move backward
turn left
~vZ
m 7 11:
move backward
turn left
~vZ
m 7 12:
self destruct
~vZ
m 7 13:
self destruct
m 7 14:
turn right
;goto eek
m 7 15:
turn right
~vZ
m 7 16:
move backward
turn right
~vZ
m 7 17:
move backward
turn right
~vZ
m 7 18:
turn right
~vZ
m 7 19:
turn left
goto eek
m 7 20:
turn left
~vZ
m 7 21:
move backward
turn right
~vZ
m 7 22:
self destruct
m 7 23:
move backward
turn right
~vZ
m 7 24:
move backward
turn right
~vZ
m 7 25:
turn right
goto eek
~vZ
m 7 26:
move backward
turn left
~vZ
m 7 27:
move backward
turn right
~vZ
m 7 28:
move backward
turn right
~vZ
m 7 29:
move backward
turn right
~vZ
m 7 30:
turn right
goto eek
m 7 31:
self destruct
m 7 32:
turn left
goto eek
m 7 33:
turn left
~vZ
m 7 34:
move backward
turn left
~vZ
m 7 35:
turn left
~vZ
m 7 36:
turn right
~vZ
m 7 37:
turn left
goto eek
m 7 38:
turn left
~vZ
m 7 39:
turn left
~vZ
m 7 40:
self destruct
m 7 41:
turn left
~vZ
m 7 42:
turn right
~vZ
m 7 43:
turn right
goto eek
m 7 44:
turn left
~vZ
m 7 45:
turn right
~vZ
m 7 46:
move backward
turn left
~vZ
m 7 47:
turn right
~vZ
m 7 48:
turn right
goto eek
m 7 49:
self destruct
m 7 50:
turn left
goto eek
m 7 51:
turn left
~vZ
m 7 52:
move backward
turn left
~vZ
m 7 53:
turn right
~vZ
m 7 54:
turn left
~vZ
m 7 55:
turn right
goto eek
m 7 56:
turn right
~vZ
m 7 57:
move backward
turn left
~vZ
m 7 58:
self destruct
m 7 59:
move backward
turn left
~vZ
m 7 60:
turn left
~vZ
m 7 61:
turn left
goto eek
m 7 62:
turn right
~vZ
m 7 63:
turn left
~vZ
m 7 64:
move backward
turn left
~vZ
m 7 65:
turn left
~vZ
m 7 66:
turn left
goto eek
m 7 67:
self destruct
m 7 68:
turn right
goto eek
m 7 69:
turn right
~vZ
m 7 70:
move backward
turn right
~vZ
m 7 71:
turn right
~vZ
m 7 72:
goto flagrout
toast:
if value #cloakstatus = 1 then cloak off
cmath vT = ((#cur_life > 6) AND (#enemy_d < 8)) OR ((#cur_fuel < #burn) AND (#cur_ammo < 10))
if value ~vT <> 0 then self destruct
discharge energy
scan perimeter
if scan found enemy then goto toast
if scan found flag then goto toastgrab
~vZ
toastgrab:
assign vT 0
grabtoast:
scan relative 1
if scan found flag then move forward
if scan found flag then ~vZ
scan relative 2
if scan found flag then move forward
if scan found flag then turn right
if scan found flag then move forward
if scan found flag then ~vZ
turn right
cmath vT = ~vT + 1
if value ~vT < 4 then goto grabtoast
~vZ
m 9 0:
goto toast
m 9 1:
goto toast
m 9 2:
goto toast
m 9 3:
goto toast
m 9 4:
goto toast
m 9 5:
goto toast
m 9 6:
goto toast
m 9 7:
goto toast
m 9 8:
goto toast
m 9 9:
goto toast
m 9 10:
goto toast
m 9 11:
goto toast
m 9 12:
goto toast
m 9 13:
goto toast
m 9 14:
goto toast
m 9 15:
goto toast
m 9 16:
goto toast
m 9 17:
goto toast
m 9 18:
goto toast
m 9 19:
goto toast
m 9 20:
goto toast
m 9 21:
goto toast
m 9 22:
goto toast
m 9 23:
goto toast
m 9 24:
goto toast
m 9 25:
goto toast
m 9 26:
goto toast
m 9 27:
goto toast
m 9 28:
goto toast
m 9 29:
goto toast
m 9 30:
goto toast
m 9 31:
goto toast
m 9 32:
goto toast
m 9 33:
goto toast
m 9 34:
goto toast
m 9 35:
goto toast
m 9 36:
goto toast
m 9 37:
goto toast
m 9 38:
goto toast
m 9 39:
goto toast
m 9 40:
goto toast
m 9 41:
goto toast
m 9 42:
goto toast
m 9 43:
goto toast
m 9 44:
goto toast
m 9 45:
goto toast
m 9 46:
goto toast
m 9 47:
goto toast
m 9 48:
goto toast
m 9 49:
goto toast
m 9 50:
goto toast
m 9 51:
goto toast
m 9 52:
goto toast
m 9 53:
goto toast
m 9 54:
goto toast
m 9 55:
goto toast
m 9 56:
goto toast
m 9 57:
goto toast
m 9 58:
goto toast
m 9 59:
goto toast
m 9 60:
goto toast
m 9 61:
goto toast
m 9 62:
goto toast
m 9 63:
goto toast
m 9 64:
goto toast
m 9 65:
goto toast
m 9 66:
goto toast
m 9 67:
goto toast
m 9 68:
goto toast
m 9 69:
goto toast
m 9 70:
goto toast
m 9 71:
goto toast
m 9 72:
goto toast
m 10 0:
goto toast
m 10 1:
goto toast
m 10 2:
goto toast
m 10 3:
goto toast
m 10 4:
goto toast
m 10 5:
goto toast
m 10 6:
goto toast
m 10 7:
goto toast
m 10 8:
goto toast
m 10 9:
goto toast
m 10 10:
goto toast
m 10 11:
goto toast
m 10 12:
goto toast
m 10 13:
goto toast
m 10 14:
goto toast
m 10 15:
goto toast
m 10 16:
goto toast
m 10 17:
goto toast
m 10 18:
goto toast
m 10 19:
goto toast
m 10 20:
goto toast
m 10 21:
goto toast
m 10 22:
goto toast
m 10 23:
goto toast
m 10 24:
goto toast
m 10 25:
goto toast
m 10 26:
goto toast
m 10 27:
goto toast
m 10 28:
goto toast
m 10 29:
goto toast
m 10 30:
goto toast
m 10 31:
goto toast
m 10 32:
goto toast
m 10 33:
goto toast
m 10 34:
goto toast
m 10 35:
goto toast
m 10 36:
goto toast
m 10 37:
goto toast
m 10 38:
goto toast
m 10 39:
goto toast
m 10 40:
goto toast
m 10 41:
goto toast
m 10 42:
goto toast
m 10 43:
goto toast
m 10 44:
goto toast
m 10 45:
goto toast
m 10 46:
goto toast
m 10 47:
goto toast
m 10 48:
goto toast
m 10 49:
goto toast
m 10 50:
goto toast
m 10 51:
goto toast
m 10 52:
goto toast
m 10 53:
goto toast
m 10 54:
goto toast
m 10 55:
goto toast
m 10 56:
goto toast
m 10 57:
goto toast
m 10 58:
goto toast
m 10 59:
goto toast
m 10 60:
goto toast
m 10 61:
goto toast
m 10 62:
goto toast
m 10 63:
goto toast
m 10 64:
goto toast
m 10 65:
goto toast
m 10 66:
goto toast
m 10 67:
goto toast
m 10 68:
goto toast
m 10 69:
goto toast
m 10 70:
goto toast
m 10 71:
goto toast
m 10 72:
goto toast
; TEH END
; HOORAY!
0 0 0 1 0 0 1 0 0 19
0 1 1 0 0 1 0 1 0 20
rofl
Hamsoft Trivia #30739: Mark is a teribel codar!
I will post some REAL CODE soon, just fannying around with Directdraw which has no relevance to Hamwars at all but there's no point sending it ya if it doesn't work!
Hamsoft Internal Communique
For eyes of Hamsoft High Council members ONLY
CAUTION: Contains subliminal texts. Anyone not of the above descrition who reads this will kill in their sleep and probably start listening to Genesis
Sorry dude, tried to Gmail this to ya but it was being gay, and I didn't want to resend so I didn't end up filling yr inbox with this shit!!
(Yes I know I could have just checked but it was being clunky and hey, you made a community for this, might as well go here)
This is of course RE: hamwars v1.doc, which was a VARY good doc I must say!
Dude that totally rules! Thanks for sending that man, sorry I've only just been able to get it because Gmail was being ginger.
If you want my opinions on your musings in the doc here's my initial ideas.
Intarface:
Argh. I really really so don't know. I guess the important thing is to see what information possibly ever needs to be exchanged. Could the whole client end be one java app which changes it's behaviour based on the messages from the server? I guess then we could keep it menu based until we've got the backend working if we wanted to, and work from there!
Movement between systems etc:
Yeah, I think the sector idea is a very good one. Maybe when you dispatch a fleet you give them a target, and if you want to you specify a route you can, otherwise it generates the quickest, and then the route info is saved as a string in the fleet structure. With space being 3d maybe we could do one of those free-rotating 'stalk' diagrams like in Elite? I don't think it would take too much bandwidth because you'd only see what your scanners could pick up (you request the info, the server does a search for all your fleets and then searches round them). You could set agression for your ships, or even maybe 'missions' with limited options, and if they pass a ship in the overnight simulation 'turn' which is in range they engage and destroy! This is for FLT travel and interplanetary travel but maybe you could later develop hyperdrives which asks the question should we alow combat in hyperspace?? WTF does hyperspace even look like? Maybe a transform function of real 3d space onto a 2d grid, hahah, I'll get my maths notes out, there must be something cool we can do so hyperspace looks 'weird' yet everything is close together if you don't just want hyperspace to be a 'jump'.
Server:
ARGH. I don't know. I have a P200 box here which isn't being used, maybe we could use that and hopefully when it becomes an issue we'll have sponsorship, hahah.
I had a really fucked up thought, maybe we could use a C/C++ backend? I really don't have a fucking clue how to get it talking to a Java server, I'll have a look. It's a totally messed up idea but I can actually write C, and we'd be able to do more with it w. speed issues. Plus I could get my rocks off with some ASM optimisations, lol. Your call as always man, and probably even if we entertain this idea it'd be something for a backend upgrade.
Feral Colonies:
I totally see what you mean, we'd need millions more techs and unit types, and it would be boring for most people (tho the truly hardcore would want to build everything from scratch.) Maybe we could leave room for it and add it in as an option later, I can see possible benefits for the player (if you did it from scratch your empire might turn out more harmonious and efficient for instance, or maybe we give them some bonus techs and units for being hardcore). Or we could not, haha.
Maybe for the future we could have 3 (or more) startup modes:
Colonic: You start off as a colony of 'settler's, one hyperspace or FLT ship but you have to research to get more.
Turbo Thrash: You start off as rebels, someone else's rebel colony no less (we keep a list and hand them out 'blind' on request) For people who want a quick and bloody war, probably, or good gamers who want to give evryone else a disadvantage.
Feral World Expansion: You start off as a tribe of feral hamsters on a sandbox world, and develop a civilisation from scratch, whizing thru different eras and developing space travel after a month or two RL time. By this time you've already got alliances and trade set up, and maybe a Space Exploration initiative with your neighbouring states to speed up research and shit. It sounds gay but this mode would lead to interesting nations (did you ever play Megolomania? Roman soldiers in biplanes, boiling oil and nuclear missiles etc.. like a 'what if' scenario if things had developed at different rates than they did.)
Next: A load of "FUCK yeah"s for some really cool writings, hahah. Good work man :D
Alliances/Police:
Dude that's a damn cool idea, personally I think there's room for it even if it would be hard to implement. Would it also have a list of 'banned' activities, like genocide and biological warfare? Then you'd have to hide your concentration camps, or could report other people's (everyone could have a 'reputation' with the Feds, if you report someone and they find nothing your reputation goes down a bit, if you report them and they find something their reputation goes down a lot, if rep gets too low they impose sanctions or invade, if rep gets high they ask you to help or something gay etc)
Each habitation unit has plug in units etc: Fuck yeah!
Localised or Planetary resources: Maybe they could be done fractally by the backend, and saved with the habitation unit once it's built?
Will it revert to low-level unit: I was thinking it could have a % health and % population. A low % health would have poor production and unhappy people, a low % population would have poor production and would be 'abandoned' etc. When the % pop grows near 100% you want to upgrade or it gets overpopulated, unhappy and inefficient and may rebel (should we have an 'auto-upgrade' flag if you're confident you have enough construction crews? Things like that could be shifted automatically by your merchant fleet - we'd need an algorithm to work out shipping anyway)
Organic Units: Yeah! Dude how about eugenics? I know it's a horrible fucking concept but then they could build concentration camps etc (or maybe the concentration camps could just be for dissidents, hahah) It also opens the path for gene-specific bioweapons, which would be a cool feature if a bit powerful.
Weapons: Yeah man, I agree it would be hard. I was thinking a weird roster system for the military would be cool; you define a squad w. weapons and the backend simulates it for effectiveness. Like, you define building blocks (and you're only alowed a few so it doesn't get messy) then your barracks recruits the men and your factories build the weapons.
Also what about logistics? I know it sounds really gay but it could be done largely automatically, and I like the thought of a bloody frontline with columns of trucks and helicopters carting in food and ammo and carting back hundreds of slain and wounded because I'm strange like that. What do you reckon? It would set it up nicely for trench warfare and attacks on supply lines I guess, and add some nice elements to warfare (and a new AI option), plus a nice dilemma for players who could either storm in or hold back til their logistics are sorted out. Might be a little tricky to get to grips with though, so:
I was thinking for the sandbox that we could put in a hardcoded tribe to subjugate right away, and walk the player through the first turn (as soon as they set up a colony or feral tribe). Like a choreographed first encounter to get them sorted, with maybe a choice at the end to get them into it (not a 'yes/no' type thing, a bit freer, like 'do I sack the place or subjugate them'). Obviously it would look a little different for everyone, but we could ensure it happens pretty much the same. Obviously there would probably be more little conflicts like this to keep it interesting for the first few days, but if we could make sure the first one is the same we could make a nice tutorialy thingy. Also it would work with the feral guys to if we ever do that, just with different starting unit types.
Argh, I've digressed from the point I wanted to make. Right; with the building block system which is sort of ripped off Supremacy but more refined you wouldn't have billions of different weapons floating about anyway, it'd be a lot neater, so you could afford to add some modified ones to your production roster. So if you wanted to develop a new sniper rifle you could put £10,000 into research and get an extra 1% accuracy. Then, if you wanted a better model you'd put in £100,000, and get another 1% accuracy. With a logarithmic scale we could get people to spend billions just to have the best in the galaxy, far beyond the point where it becomes useful at all to make them better :) Benefits of course is that everyone would buy their rifles. What would happen when you buy gear? I reckon it needs to be localised; that way when you take a town you can loot it!
Hmm, I guess it gets a bit tricky in other ways though, like you said. Maybe have a global list of weapons, with type, stats, ammo type and producer?
Of course selling production and export rights, reverse engineering and espionage should be possible. Maybe with research facilities you can either designate wht their doing manually or add them to a pool where research would be delegated. This could be applied to factories too!
I've talked far more bollocks for much longer than I intended there man, sorry!
Argh, this shit I'm doing with Josh's dad (the lift thing) has to be my priority at the moment, but it's cool because I'm learning a fuckload. Hopefully I might know enough to get into this soon, if you still want my help! Like I said regardless of how much of this shit you want to use I'd be more than happy to help if you can find a use for me. Also I'll get working on some C/pseudocode for some of the backend shit if you want just to illustrate some of my stupid ideas.
Cheers man, fucking nice one with the docs!
- Mark
Okay i've stuck the screenshot on the website, i am planning on sticking a few more on later.
I've also put a couple of links to infomation regarding star and planetary types. makes for interesting reading.
Currently working on a system generation program which will encompass this infomation. Within a couple of weeks i hope to have a working server app running on a machine which will allow users to explore the 3d universe it is dynamically creating.
I guess you'll have to wait and see :)
greetings troops. Yes it's finally here the very first screenshot from Hamwars:

A distant planet similar to mars in type.
It's fully rotatable at the moment but not much else!!!
Expect more soon, on the official hamwars website
here
good news peeps
google now lists the hamwars site when searched for: H A M W A R Z