Development

BZWorkbench r20544 Win32 build

For those of you on Windows who want to try out the latest revision of BZWorkbench (the map editor that has been created over the course of two Google Summer of Codes), then I have a binary package up. There’s no installer – it’s just a zip file containing the files. This is built from the stock SVN revision 20544 code. You will also need the Visual C++ 2008 SP1 runtime, which I have linked below as well.

Download BZWorkbench r20544 Win32

Download Visual C++ 2008 SP1 ATL runtime

There’s probably still lots of issues with it, so please report them to the official BZFlag bug tracker. Also note that as of this revision, building BZWB on Linux and OSX doesn’t seem to work.

New Feature Coverage: The text object

I was a bit bored today, so I started playing around with the new “text” object in BZFlag 2.99.x. (For those of you who don’t know, 2.99.x is the development version that will become 3.0.0 when released.) Because of the new font engine in the game (FTGL) we can pull in any TTF font and use it in the game. The text object uses this same font engine. It can pull a font file from a web address, as well. You can then position the text anywhere in the map. I’ve already seen an example from the Planet Mofo crew that was a scoreboard of the top players on the server. My example won’t be that cool.

I wrote a basic plugin called NewestPlayer. When a player joins, a variable named $newestPlayer gets set to their callsign. A text object in the world can then make use of that variable. When a player joins, the variable changes, and the text object will update in real-time.

Here is what it ends up looking like. Hard to see in the thumbnail, so click on it for full size.

Sample of the NewestPlayer plugin in action.

Sample of the NewestPlayer plugin in action.

I have the plugin and world file posted as well, so click on over to the full article. Read More »

Experiments with C#

I’ve been playing around with the C# language for a while. It’s a really fun language, and it makes it easy to do a lot of powerful things (threading, database access, sockets, etc). Today I just got a working example that reads messages from a MySQL database and then processes it and sends it to the proper recipient on the Freenode IRC server. I was using the MySQL connector for .NET to talk to the database, and a lame little IRCClient class that I have started writing.

This is all working towards a daemon to use for my BZFlag hosting service. The goals of the daemon are to:

  • Determine what work to process by reading data from MySQL;
  • Send email and IRC notifications of different events, such as a server going down, reports from a server, and so on;
  • Start/stop/restart server instances via SSH;
  • Upload and update server configurations and maps via SSH;
  • Process log files coming back from game servers.

I would also have a web interface, likely written in PHP, that would add work to the database, as well as provide an interface to server configuration and log data.

Pre-Alpha BZFlag 2.99.19.20090403

Here’s another pre-alpha Windows build of BZFlag’s development code for Windows. This is based off SVN revision 19585. So, download the Windows Installer and give it a shot. Please report any bugs you see (check the bug tracker and our BUGS file from SVN to make sure it hasn’t already been reported). Version 2.99.x is not compatible with 2.0.x, so you won’t typically see any players online, nor will you see 300 servers. So, get a few friends to come and play with you. Or hop onto our IRC channel and ask some people to join.

Note: The protocol of the game does change quite rapidly during development, so if you download this installer and don’t see any servers, it is probably outdated. But I would imagine this should work for at least a couple weeks.

Google Summer of Code 2009

Been a couple of weeks since I last posted. But anyway, BZFlag is officially part of the Google Summer of Code 2009! Yay!

Any college students that want to help out BZFlag should jump onto the #bzflag IRC channel on Freenode and get to know us. There are quite a few ideas already posted, but feel free to suggest your own. This year we want to focus on getting BZFlag ready for a release, so the high priority projects will be along that line.

Congratulations as well to all the other organizations that were accepted to GSoC!

For more information, check out the main GSoC website.

Pre-Alpha Build: bzflag-2.99.15.20090122

I threw together a Windows installer of the BZFlag development code. Version 2.99.15 from today can be downloaded from the post on the official forum. I’m not entirely sure if it will work, because it was built with the Express version of Visual C++ 2008. I haven’t tested it on a machine without that installed. I’d love to hear some feedback either here or on the forum post about it.

I’m pretty sure that not all of the BZFS plugins will work, as the installer script doesn’t yet copy over all of the templates for the HTTP plugins. Eventually those will be added in, as well as the Visual C++ 2008 SP1 redistributable package. We’re still a ways from an official 3.0 release, as there are a few critical bugs that need to get fixed.

Relief shading and fancy lighting

This Lua stuff is really interesting. For this post, I’ll be showing some more screenshots from trepan’s test server. These are from last Sunday. They show relief shading and I think they also have multitexturing. Bit of an FPS killer though. When I’m on the ground, I’m getting only 45FPS. Might not seem that low, but I’m also able to get over 500FPS without that stuff. I was running in Ubuntu 8.10 on an nVidia 9800GTX+ at 1920x1200x32bit with everything turned on except anti-aliasing.

Small sample of what’s to come

There have been some recent additions to the development code of BZFlag that will interest map authors. trepan has been adding support for Lua scripts in BZFlag. Initially he added support for writing server plugins in the Lua scripting language. This is going to make it easier for plugins authors to write plugins if they are not familiar with C++. There are a few other languages have been tied into the BZFS API over time, including Python and JavaScript. What is different about the Lua stuff trepan added is that it’s even possible to integrate plugins directly into a map file.

He also recently commit some changes that enable client-side Lua scripts. These come in two forms: LuaUser and LuaWorld. LuaUser allows an individual user to customize the look of their UI (and probably more).

LuaWorld will be sent along with the map data when you join a server. It will enable map authors to add graphical details or UI changes that were not possible before without modifying the client itself. Here are some screenshots of a modified version of HiX that trepan made. It includes a Lua script that alters how the client renders the map. In this case, it adds ground-level fog to the map, but lots of other things are possible. Lua code could even be used to draw map objects.