|
Author Topic:   New Development Updates
LDA Seumas
unregistered
posted August 31, 1999 04:33 AM           
I'm trying to figure out the best way to handle servers and master servers on the internet. I was considering writing a PERL CGI script that would run on a web server (like ours), which would accept once-a-minute "heartbeats" from game servers, add the server's info to a file listing all servers, and then send that file out (with old servers pruned off) to either game clients or web browsers that requested it, to display the list of servers available to connect to.

This seems like it would work, but I have concerns about the load it would put on the web server, to do that many PERL accesses on a regular basis. Does anyone with more PERL/CGI experience than me care to comment?

Then I realized what may be the solution to my main problem, that of hard coding a known to be reliable master server location into the final game executable. Instead of doing that, I can just hard code a URL on www.treadmarks.com or www.longbowdigitalarts.com which will contain a file with the current address of the correct Master Server and/or Chat Server, and the client will be able to send an HTTP request to download that file (which will never change location) to find today's master server location. Then the master server could move around, depending on who wanted to run it at the time.

Does anyone here have a Windows NT box connected to the net 24/7 that they'd like to run a Tread Marks Master Server and Chat Server on? Or do you know of someone who might? The network load would be miniscule, at least for now (<grin> ), and the CPU load should be next to nothing for a compiled C app as well. Please let me know ASAP, as I'd like a solution before the Second Test.

This option would give me the most freedom, since I could write my own master and chat server in C/C++, which I know much better than Perl, and it could keep all of its state in RAM rather than using disk all the time. It would also probably be easier for me to write my own simple chat protocol than to use IRC, as I already have a working non-blockin Reliable/Unreliable UDP networking layer, and chat from within the game's GUI doesn't have to be very advanced.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted August 31, 1999 11:33 AM           
I've figured out the ground work for dynamic updating of Entity Types now. What this means is that (in the final game) when a Server has new or modified .ENT files, which e.g. modify gravity, tank speeds, weapon strengths and ammo levels, or anything else along those lines, the parameters will be auto-downloaded to the client upon joining the server for that session only.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 01, 1999 12:09 PM           
There was a power outage this morning, which put a minor kink in things (I hate searching for flashlights in the dark), but I was able to get the multi-line Status Bar fully working, which displays things such as "Bonzo fragged Zott with a 105mm shell!", in addition to in-game chat messages, which are also implemented now. I also fixed the usual assortment of minor bugs, though the game is looking pretty stable now.

Right now the Heads Up Display is handled by main-loop code closer to the system specific end of the program, but I'm trying to move more of it into the Entity codebase, probably under the God entity or its TankGod subclass (as a start, the new chat/status display is run by the God class). This will make it even more likely that if I break the Entity code into a separate DLL and release the source code for it (much like Quake-II), it should be possible for people to make wholesale modifications to the gameplay and status displays, distributable as client and server DLLs. (TankFortress, anyone?)

The downside of any sort of add-on interface that isn't interpreted code is of course the virus/trojan possibilities, but I haven't heard of there being any major problems with that in regards to Quake-II. And I don't think I'll have time to craft an interpreted code Entity interface at this point.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 02, 1999 09:54 AM           
Since I've had a few people offer computers on the net for use as Tread Marks Master Servers and/or Game Servers (thanks, folks!), I'm dumping the idea of a Perl CGI script Master Server and writing my own as a Win32 console application. I've got most of the server handling code done now, and just need to add the chat and game client code, and then add code to the game itself for communicating with the Masters as game clients and game servers.

Tank Gibs are also ready to go in... They should look cool, having the same texture as the tank they were blasted off of.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 03, 1999 05:57 AM           
I just posted a somewhat technical description of how Tread Marks' Entity Architecture is structured over in the Programming forum. Click here to read it:
/forums/archive/ubb/Forum3/HTML/000018.html

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 04, 1999 06:12 AM           
The Master Server is working now, accepting heartbeats from Dedicated Servers and compiling a list of active servers. Chat still isn't in, but it's almost there.

I've been trying the networking over the 'net a bit more and have been running into a few snags with my prediction logic, which I'll be trying to work out today. Ack. Hopefully net play will be smooth for the Second Test, but if not there will still be time to make it better.

Philippe's got a couple of nice team logos painted up, which I think we'll use as flags hanging from the backs of the bouncy antennas.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 04, 1999 07:51 PM           
We just had our first, honest to goodness test of internet play, from our lousy modem connections in Northern Ontario down to a dedicated Tread Marks server in New York. Considering it's Saturday afternoon, the net play went pretty well! I was able to fix the prediction logic bug (my client side short-circuiting of player controls was being short-circuited itself), and add prediction of turret rotation.

Over all I'm happy with the performance on the net, especially since this was the first real test outside of a LAN. I planned my networking design from the start to be robust enough for the internet, but I was still a little worried about how it would fare for real. And everyone will be able to be their own judge of that in a few days, hopefully.

With the client side prediction of tank movement, you don't normally feel "lag", as such, but more "discontinuities". When simply driving around, your controls respond instantly (most of the time), but when weapons start firing, and things start colliding, the prediction can't keep up and some times entities (including you) will appear to jump quickly from one place to another, as the server updates the client as to the true state of the world. The clients have zero authority over game state, and act as dumb yet predictive terminals for the server. This means that cheating is near impossible, and other players' lag will never make your play better or worse (except that if they're lagged, they might have more difficulty killing you, but that can't be helped <grin> ).

I just need to finish up the Chat portion of the Master Server, add the master browsing and chat interface to the game itself, tweak a couple more things, and get this Second Test rolling out the door. Hopefully that'll be early this week.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 06, 1999 02:19 AM           
I didn't get the Master Server done today, but I did fix a lot of little issues surrounding starting new network or single player games while a game is already in progress. I also added a non-Entity-based status display system to keep the player up to date on the progress of a level load or network connection, as in that transition period, entity based text displays can't be used. I'm drawing flat shaded letters saved out as LightWave objects, but the colors are banded from the center outwards depending on the X coordinate of the point (white in the center, dark gray at the edges), and I super-sample the text 4x to anti-alias it, so it looks rather slick (not that it really matters, but I like it when everything has a polished look to it).

Also just now, I drug back to life the real time mesh perturbation code I had hacked up ages ago and planned to use for the "Wonky Gun" or "Ion Gun", which will make your controls go all funny, and instead (or additionally, we'll see) used it to add really obvious damage to the tank models. Now when you get set on fire, your tank looks very twisted and beaten up. It helps make it a little more obvious that you're about to lose your top.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 08, 1999 12:33 AM           
Finally got the Tread Marks web site polished enough to make it live! See:
http://www.treadmarks.com/

Also got a few minor networking features added, but not a lot else. Need more sleep, dang it... I've got a better idea how I want to lay out the game menus to handle master servers, local LAN game listings, and multi-user chat, though.

We're up to a total of 7 songs for the game now, and we may be releasing an MP3 of one or part of one of them around the time of the Second Test as a taste of what's to come. I think the music goes quite well with the game, compared to most, and since it will be installed to the hard drive, you won't need the CD around to hear it.

Jim spoke with DiscMakers, and we may go with "Digi-Pack" packaging for the game, rather than a full retail box. A Digi-Pack is sort of a cardboard jewel case with a black or clear plastic CD holder. I think they're pretty spiffy, feel nicer than jewel cases, and will be easier to handle in general.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 08, 1999 12:20 PM           
See this topic for a partial overview of Tread Marks' low-level networking layer:
/forums/archive/ubb/Forum3/HTML/000022.html

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 11, 1999 12:59 AM           
The finishing touches on the Second Test are taking a wee bit longer than expected... Hopefully I can get things finished up over the weekend.

For now there are a couple of new Screen Shots up at www.TreadMarks.com. And no, that level won't be in the Second Test.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

LDA Seumas
unregistered
posted September 13, 1999 09:09 AM           
The devil's in the details. The last bits are progressing, slowly... I've made the finder arrow more of an over the shoulder deal, so it's easier to see through your own smoke and fire. Also, in Battle Match you now spawn only when you press fire (or after 30 seconds), and you can invisibly drive around (without affecting anything) while dead, in a sort of spectator mode.

There's still an odd bug with the network prediction logic "jittering" some times, and I'm not sure what's causing it. I thought it might have been a fast float to long hack, but it's not being used there.

Partly to make up for the delay with the Second Test (though we were planning on doing this anyway), we've released a 2:30 long MP3 sample of one of the Tread Marks music pieces over on www.treadmarks.com. Enjoy.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

DC CruciFX
unregistered
posted September 14, 1999 02:23 AM           
Ohhhh cool board.

No wonder you dont visit the DC anymore.

Sniff.

IP:

LDA Seumas
unregistered
posted September 15, 1999 05:14 PM           
Have to budget my time somehow...

Speaking of that, Soul Calibur is Evil when it comes to getting work done, though it's great for cool graphical inspiration... We've finally found the perfect solution to the problem of tank identification and team identification. We're hanging _two_ waving banners off of the whip antenna, one vertical one for the Team designation, of which there will be a limited, mostly color coded set, plus a square insignia flag which will be a personal and/or clan identification flag having no bearing on your "team". The two flags look great together (not the least of which because Philippe is designing some _fantastic_ images for them), and really gives a Samurai styling to the tanks.

I'm using a real-time Perlin Noise based mesh deformation routine to make the flags wave in the breeze, which is also used to make the tanks look all twisted and bent out of shape when damaged, and which we plan to use for the "wonky gun" effect which will temporarily screw up your controls. This is the same basic noise function I wrote originally for Texturizer, so you can see the cross-over benefits to working on multiple, not exactly related projects at the same time.

The Master/Chat server should be just about finished now, and hopefully I'll get a copy of it sent off to a few friends for initial testing later tonight. The next step will be to add the server browsing and chatting interface to the client, and to add level time and frag limits and auto-restarts to the dedicated server.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

DarkFrog
Member
posted September 15, 1999 08:31 PM            
Sounds neat!
any chance that you could make a tank that has the over-board sort of samurai look?
(kinda like a scorpian fish, a whole set of flags, maby up to 12???)
might be kinda neat if your code would allow that many antennas in a fan of positions

IP:

LDA Seumas
unregistered
posted September 17, 1999 03:11 AM           
Heh, that would be cool, and a fairly easy modification... But I'm not sure about making one tank quite that different from the rest in basic form. We'll have some tanks that will look rather special, but primarily through shape and skin effects.

Today we got a LOT done, though not all of it directly relating to the Second Test. I've started on the modifications to the GUI for the server list and chat interface, and should be able to finish it up tomorrow. The main delay for the Second Test has been because there are a few features I really want to have in before it gets released, but I've been a bit side-tracked onto other things generally needed to complete the game, so the key points for the Second Test haven't come together as quickly as I had promised or hoped. We're pretty close now though...

One of the really cool things we've been doing which isn't directly related to the Test is a new set of deathmatch maps. I realized recently (a little late, but better than never) that Texturizer is in fact a wonderful tool for creating both abstract and natural looking height maps, though of course most of our 30 race courses are already sculpted. To take advantage of this, we've decided to add in at least 10 more deathmatch-only maps created with Texturizer, which so far is making some really nice landscapes that we hadn't seen anything like before. The coolest part is that we've decided to do some of the more abstract landscapes in a Tron/Holodeck-like digital universe style, which is looking amazingly cool. The sky is an array of shiny amber grid lines, and the terrain is bright blue and white lightning grids on black. Instead of dust/crud, the tanks kick up brilliant white/blue sparks, and instead of black tread marks and scorch marks, the landscape turns glowing orange where it gets shot. I really like the variety of graphical styles we've got for the maps, from realistic terrains, to the moon, to an ice world, to alien worlds, to this new cyberspace realm. Screw cohesive themes, variety is the spice of life.

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP:

DarkFrog-School
unregistered
posted September 17, 1999 04:59 PM           
Sounds cool!
Speaking of using texturizer, I made a logo for a game that I've kinda ditched because I failed in teaching a few people programming so I could have some help (the game is Pyre, and all I have so far is interface art from texturizer, and a 15 layer logo that is farily neat, too bad I had to get friendly with the "new" feature on random numbers to get an interesting shape )
anyway, I would love to give people my source code for stuff like Grav, which has bodie-mass gravity physics, as well as a cheated version of the speed/direction particle physics in particle fire (I took claculations on the position of the cursor relative to the points, then threw their x/y velocities through an incredible boost in the direction of the cursor, then made them unit vectors, and multiplied them by their speed value, it looks kinda like PFire's physics, except that immediate turn arounds are possible, and orbits around the cursor take a long time to "stabalize", meanwhile they make flower orbits until it becomes circles, definitely a different flavor of physics)
anyway, I need a place to post this stuff, and anyone who could post a setup program + a host of 35k programs and texture files would be doing a highschool senior a great favor, thanks

Oh yeah, and is there any way to get the 3d rotation of F(x)=SinX/X as a weapon for TreadMarks? (Imagine, a spike would shoot up from a crater, and bob back up and down until it settled, meanwhile emminating circular waves, all with math that is advertised on nearly every graphing program I've seen!) wouldn't that make a neat powerweapon? I mean, to be able to temporarily "liquify" the terrain?
Anyway, I love what this site has allowed me to learn as far as things like that fire blending, and being able to make art for my programs withought having to "contract" other students into helping me ("How about $15 for some scannable sketchs of an asphalt creature with blood canals surrounded in fire that has glowing eyes and radiating energy?No!? Oh well..." that's the logo btw.)
So I thank you Seumas for helping me so far with your help on how you do things, and with the programs you write.
Thanks

IP:

DarkFrog-School
unregistered
posted September 17, 1999 05:03 PM           
Oh yeah, and on the samurai tank, the actual shape could be very similar, just as long as the flags could be shot through, and besides, it would be great for groups in team games that need a leader (although more organized clans would probably just know eachother by small details and play style), and since there's the little guidance arrow, "staying hidden" wouldn't be such a big deal. Anyway, I like the game so far, I just can't wait for a replacement motherboard so I can play it

IP:

DarkFrog-School
unregistered
posted September 17, 1999 05:43 PM           
I almost forgot, on the idea of texturizer making levels, would you want me to use Tzr along w/ bryce4 (so I can see what it looks like) to make elevation data for you guys?
(although I'll need an idea of what res, min-max values, and how harsh the edges of the terrain should be ("Can anyone here say cliffs?")
Anyway, it looks great so far, hope you get the money and audience you deserve!

IP:

LDA Seumas
unregistered
posted September 18, 1999 07:45 AM           
For a place to upload files, you should be able to get a free web site from a place like GeoCities or Xoom. You can put small files up on sites like that along with web pages.

As for animating terrain deformations, that's something I haven't looked into that closely yet. The main problem I forsee is that really cool deformations (such as high frequency waves) would require redoing the variance computations every frame to get an optimal tessellation, or else the animation might look odd if it happened over an area of terrain that used a lot of triangles vs. an area that used only a few. It's also not exactly realistic to see the ground undulating (except maybe during an earth quake ), and there are lots of other games that already do rubbery ground motion. I will keep it in mind though, and it may be easy to try when I get around to adding shadows...

With Texturizer maps, if anything we've got too many right now. Once the full game is released you'll be able to create all the extra maps you like though.

And thanks for the kind words! I'm glad you're finding all this stuff useful. I'm just trying to share a little of what I've learned so far.

Since this topic is getting a bit full again, I'm continueing the development updates here:
/forums/archive/ubb/Forum2/HTML/000011.html

------------------
-- Seumas McNally, Lead Programmer, Longbow Digital Arts

IP: