Schlachtfeld

Der Stafflerblog von Warzone2100.de

06.12.2008

Special interview #2: New widget system (betawidget)

Filed under: Development,English von Kreuvf um 14:12:01

Some time ago I had a special interview on 2.1 with devurandom. 2.1 is almost final, so it is time for another special interview. This time I talked to EvilGuru and Elio about the new widget system.

Kreuvf: First of all: What is a widget and what does a widget system do?
EvilGuru: A widget is something which the player interacts with. This could be a button, slider, colour picker or text box. A widget system is responsible for displaying these widgets on screen and managing them.

Kreuvf: What are the major advantages of the new widget system, betawidget?
EvilGuru: Betawidget has many advantages over the current widget system, both for developers and users.

For users it will

  • allow for a more attractive and lucid interface;
  • be able to adapt itself to the user’s screen resolution, making Warzone easier to play at higher resolutions, including those that are widescreen;
  • be significantly more customisable than the current system.

However, the primary motivation behind the development of betawidget was to make it easier for us (the developers) to add/change/modify the user interface. This is especially difficult using the current widget system, with even something as simple as adding a button taking a large amount of code.

For developers and modders it will

  • be significantly easier to work with;
  • allow the user-interface (UI) to be, firstly, scriptable and secondly modifiable using scripts;
  • require less code than the current widget system in order to complete the same task, resulting in fewer bugs.

Kreuvf: Will the new widget system be limited to Warzone 2100 only or do you plan to provide it for other applications as well?
Elio: Betawidget is intended to have a Qt-backend allowing the use in Qt-applications, such as Warzone Studio. An all-in-one solution covering every aspect of modding:

  • scripting
  • editing the tech tree
  • map making
  • editing the interface

EvilGuru: In fact, most of the development happens in an external simulator. Other Warzone-related applications such as map editors and mod editors may make use of it for parts of their interfaces. Of course, these applications are still very much on the drawing board, but it is nice to keep all avenues open.

Since betawidget is — like Warzone — open source there is nothing to stop others from taking it and integrating it into their own applications. However, it is important to stress that, as flexible as betawidget may be, it has been designed as a replacement for Warzone’s current widget system and not as a general-purpose toolkit.

Kreuvf: How can the UI be changed with the new widget system?
Elio: The whole UI is created from Lua scripts. This enables modders to include a UI without touching the source. Its class-like architecture is easy to understand and the API supports animations, too. So the new UI will be more dynamic and user-friendly.
EvilGuru: It will be possible to modify the UI in one of two ways. Firstly by using a Lua script to change an existing interface on-the-fly. So a mod developer might use a script to change the image/logo shown on the main title menu. This might look something like this:
widgetGetById(„warzoneLogo“):setImage(„myOwnLogo.svg“).

Although a trivial example (a modder could just override the current logo by placing a file with the same name in their mod) it does illustrate what is possible.

Secondly, since a large amount of the UI is planned to be implemented in Lua — as opposed to compiled C code — it will be possible for modders to simply open up and modify the script files (in the same way they would for unit/structure stats). By placing the modified script file in their mod they have the capability to customise the UI at a more fundamental level. Thus changing the interface will be only slightly more difficult than changing stats.

It is not just the modding community who benefit from having large portions of the UI written in Lua — developers do as well. This is because it is significantly easier to write and debug high-level Lua code as opposed to low-level C code.

Kreuvf: What are the advantages of having scalable vector graphics (SVG) and are there any pictures of a possible new UI?
Elio: There are some pictures of the new UI.New GUI and Twin Gauss Fortress

As you can see the base colour of the new UI is more blue-grayish, this gives it a modest and elegant appearance and brings gameplay into focus. There are also further sketches of possible new UI elements.New GUI and Commander interface

Additionally it looks sharp and nice on every screen resolution, because the UI adapts to it. So you can expect a wonderful, sexy UI no matter if it’s 640×480 (4:3) or 1280×720 (16:9). We can’t do this with the old raster graphics, which is why we need to get scalable vector graphics (SVG). In order to get those we need to ‚convert‘ the existing raster graphics into scalable vector graphics by hand and I have done most of this work already.New GUI and Unit design and comparison of two units
EvilGuru: Currently support for SVGs is done by way of the Cairo vector graphics library, which is also used by Firefox 3. Thanks, primarily to Elio, many of the games icons have been converted to SVGs. SVG is a vector graphics format which has good support by both Cairo and other 3rd party applications. (Inkscape and Adobe Illustrator are probably the most famous.) This will again aid customisability — as anyone can open up the icons and modify them in a way just not possible with bitmaps. This could allow for modders to create high-quality icon packs without having to start from scratch or pixel-edit pre-existing icons.

German translation available.

Comment on this (requires board account)

08.10.2007

Special interview #1: Warzone 2100 2.1

Filed under: Development,English von Kreuvf um 16:10:09

As announced in the board I had an interview with DevUrandom about the upcoming version 2.1 of Warzone 2100. First some facts about DevUrandom, then the interview:
Currently he is studying mathematics and computer science in Germany. In his freetime he does sports and is interested in the middle ages.

His first contact with WZ was on the 8th of July, 2005, which also was the day he touched the source-code for the first time. Back then the name was Warzone ReDev and the source-code was hosted at BerliOS. Version 0.1 had been announced on LinuxGames.com and Linux-Gamers.net two weeks prior to DevUrandom immerging into the world of Warzone. He was immediately fascinated by it (it was the only realtime strategy game for Linux he knew of at that time) and the way to design own vehicles by assembling parts reminded him of his all-time-favorite turn-based strategy game Sid Meier’s Alpha Centauri.
Some days later his commitment to Warzone started with a huge wishlist and a few weeks afterwards he was involved with the project.

Since then he worked on many parts of Warzone. Currently he is responsible for creating releases (compiling installers, source-code tarballs, announcing on various game sites and notifying Linux distributions).

Some people confuse him with a project leader, which he is not. The core team works fully democratic and those who are considered „experts“ in the area in question are usually getting paid the most attention, with a slight focus on the „older“ members. However, the final decision goes to the person actually doing the work.

Kreuvf: Good day, DevUrandom, nice to have you here today. As you already know I am about to ask you certain questions regarding the upcoming version 2.1 of Warzone 2100.
DevUrandom: Sure, go on.

Kreuvf: The version is scheduled for x-mas 2007 and it was announced as a network-release. Could you explain what that means in detail?
DevUrandom: We want to get 2.1 out roughly at the end of the year. We don’t guarantee that it will be ready to lie under your christmas tree (or however you celebrate christmas, if at all), but that is the target we aim at. The main „feature“ is to get the networking stable on and between all systems, hence the name.

Therefore we will replace the underlying network code with something that is not so prone to differences which may arrise from using different operating systems and 32bit/64bit systems. That system (the author calls it „netprimitives“) is to large parts written by Freddie Witherden (EvilGuru) and currently being merged into Warzone.

Kreuvf: So you will actually be able to have a match vs. someone who uses Linux, someone who uses Mac OS X and someone who uses Windows without any problems?
DevUrandom: That is the goal, yes. As we follow a development model which makes the game more and more stable as the patch version increases, it may not be optimal at 2.1.0, but we always do our best to deliver the best possible gaming experience.

Sidenote on Warzone versioning: 2.1.0 -> major version = 2, minor version = 1, patch version = 0. Major version increases happen only very very seldomly when something really groundbreaking is changed. Minor version may also be called feature version: We include new features into those. Patch version, aka bugfix versions are only intended to fix bugs.

Kreuvf: Besides the changes on the net-code, what other changes are scheduled for 2.1? And how will those changes affect the minimum requirements for Warzone 2100?
DevUrandom: What is already done:

  • AIVolution by Troman: An enhanced AI with learning capabilites.
  • Multiturrets by Watermelon: Droids (which is how Warzone calls the units) can have multiple turrets instead of just one. Think of it like a tank: It has a cannon for long distance shooting on armored vehicles and an MG for close range defense against soft targets.
  • Improved AI target selection (afaik Troman+Watermelon): Droids should select the targets they attack more intelligently.
  • Collision-based hit-system by Watermelon: If a target is hit by a projectile or not is no longer predicted by a dice system. Instead the projectiles really damage only the target which they hit. If the unit that was fired at moves away while the projectile is in flight, it won’t be damaged anymore as it is not hit.
  • The scripting language was enhanced by Troman. It now supports strings, functions with local variables and and and…
  • A system which provides the ability to assign armor to each side of a droid (as opposed to the droid as a whole) was written by Watermelon. This means that you could have tanks which are weakly armored on the top and behind, but very strong on the front. This should support mods with higher focus on tactics. (It is not yet used in Warzone itself.)

Besides the netcode, I am currently working/testing different things with graphics, of which one is a rewritten terrain renderer and another is TrueType fonts. The renderer is a lot in flux currently and techniques of rendering are tried and thrown away a lot, so it may not be ready for the freeze (testing period before the release) and thus not 2.1, even though I try my best.
As the TrueType fonts may be very useful for translations (you can theoretically support every language), I am focussing on that now. (And it is a little bit easier to implement as well, since there are not 1001 ways of doing it.) (Editor’s note: interview was held on 23rd Sep. 2007 and TrueType has by date of publication been implemented by Giel using QuesoGLC) Which brings me to another major change not mentioned yet: NLS (Native Language Support)

If you have tried the current snapshots (or been watching the mailinglist or svn/trunk), you may already have noticed the option „NLS“ in the component selection. It means that now it is [should be] possible to translate Warzone to virtually every language and have users select which language they want while Warzone runs. Before every piece of text in the menus was hardcoded in the executable and things like unit descriptions, mission briefings came in lots of textfiles. Now the strings are all in one location and can be translated more easily. You don’t have to reinstall Warzone to change the language.

Requirements: The new hitsystem may be slightly more demanding on the CPU, but I doubt you will notice that. The rendering techniques for the terrain renderer are too much changing at the moment as that I could give any estimate on that.

Generally we try to support as many people as possible and reasonable. So there won’t be a return of the software renderer and if you have something on par with a Radeon or GeForce card you should be on the safe side. If the renderer makes it in time, Vertex Arrays (VA) will definitely be required, but even TNT grade cards support that as far as I know.

Kreuvf: Wow, that’s overwhelming. That enhanced AI by Troman: In what way will it be „enhanced“? Will it make better tactic-decisions and how does the learning take place?
DevUrandom: You better ask Troman himself about this. I can tell you that it was rewritten from ground up and that it can remember where you attack it usually and with which weapons, so that it can build better defenses against you the next time.

Kreuvf: So the learning does not imply inter-game-learning, it’s more like match-restricted learning – the AI learns for one match and doesn’t save anything?
DevUrandom: No, I think it saves per-map data so it can gain advantage from earlier games and improve its tactics over multiple sessions. What I definitely know is that messing with it is a tough task, even for more experienced players.

Kreuvf: Sounds like a tougher AI – something people have looked for since Warzone’s initial release in 1999.

I want to come to my last topic for today: Balancing. As you most probably know I am a balance-fanatic and all those changes seem, to me, to affect the overall-balancing alot. The question now is: How noticeable regarding the balancing are those changes, e.g. are some weapons that were weak before strong now?
DevUrandom: Especially the hitsystem affects balancing a lot. Long range attacks or shooting on fast moving targets can be quite inaccurate now. The latter applies e.g. to VTOLs, which became quite hard to hit. This was compensated by bigger hitboxes (you may know that from games like Counter-Strike), to make the effect less visible. Long range artillery may also have some problems now. We will try to compensate for that till the release and tune balancing during the 2.1 release cycle and for 2.2 (which is targeted summer next year). But long range shots and shots on fast targets will definitely be harder than before. This should bring in more tactics and help smaller but faster units, like Cyborgs.

Note: I am not too much involved with balancing or playing and neither do I play since the beginning, so take my answer with caution.

Kreuvf: Okay, DevUrandom. Thank you very much for this interview and for exhaustingly answering all the questions.
DevUrandom: You are welcome.

Comment on this article (requires board-account)

27.11.2006

New design for old stuff (1)

Filed under: Development,English von Kreuvf um 22:16:52

Today I thought about how warzone looks like for someone who never played it before. With the ‚look‘ I mean the design and presentation of data in-game.

Animation of a full 1.10 building listSo I think you all know the construction menu. On the right is a full animation of all eight tabs you can/must click through to find a specific building. For those who played warzone a hundred times already there’s nothing new to this and you know that the fortresses can be found on the last tab or last two tabs. But how does this look like for a newbie? For someone who never played warzone before? For someone who is used to comfortably arranged and sorted construction menus? In one word: confusing.

As I think that it’s one of the aims of the future development of warzone to make the game more newbie-friendly one of the main problems is the construction menu. And I have an idea for a solution to this problem.

The game internally distinguishes between different structure types and the idea is to make this distinction visible in-game.

Explanation

On the top you don’t have the tabs anymore, at least not as the first ‚level‘. Instead there are buttons indicating the structure-category. Clicking one of these buttons may lead to a second level of buttons. Perhaps the category-tree then looks like this:

  • Base Structures
    • Energy Management
      • Power Generator
      • Power Generator Module
      • Oil Derrick
    • General Base Structures
      • Command Center
      • Commando Relais
      • Research Center
      • Research Center Module
    • Production and Repair
      • Factory
      • VTOL Factory
      • Factory Module
      • Cyborg Factory
      • Repair Facility
      • VTOL Rearming Pad
  • Defense Structures
    • Intelligence
      • Hardened Sensor Tower
      • CB Tower
      • VTOL Strike Tower
      • VTOL CB Tower
      • Wide Spectrum Tower
      • Satellite Uplink Center
    • Artillery
      • Bombard Pit
      • Pepperpot Pit
      • Incenediary Mortar Pit
      • EMP Mortar Pit
      • Ground Shaker Emplacement
      • Hellstorm Emplacement
      • Incenediary Howitzer Emplacement
      • Angel Missile Emplacement
      • Archangel Missile Emplacement
    • Bunkers and Emplacements
      • Rotary MG Bunker
      • Lancer Bunker
      • Tank Killer Emplacement
      • Inferno Emplacement
      • Plasmite Flamer Emplacement
      • HPV Cannon Emplacement
      • Twin Assault Cannon Emplacement
      • Railgun Emplacement
      • Gauss Cannon Emplacement
      • Flashlight Emplacement
      • Pulse Laser Emplacement
      • Heavy Laser Emplacement
      • Plasma Cannon Emplacement
    • AA Structures
      • Cyclone AA Site
      • Whirlwind AA Site
      • Vindicator SAM Site
      • Stormbringer AA Laser Site
      • Assault Gun Hardpoint
      • Twin Assault Gun Hardpoint
      • Cyclone Hardpoint
      • Whirlwind Hardpoint
      • Avenger Hardpoint
      • Vindicator Hardpoint
      • Heavy Rocket Bastion
    • Hardpoints and Towers
      • Assault Gun Hardpoint
      • Twin Assault Gun Hardpoint
      • Tank Killer Hardpoint
      • Scourge Missile Hardpoint
      • Assault Cannon Hardpoint
      • HPV Cannon Hardpoint
      • Heavy Cannon Hardpoint
      • Railgun Hardpoint
      • Gauss Cannon Hardpoint
      • Flashlight Hardpoint
      • EMP Cannon Hardpoint
      • Mini-pod Rocket Guard Tower
      • Scourge Missile Tower
      • Needle Gun Tower
    • Special Defense Structures
      • Nexus-Link Tower
      • Laser Satellite Command Post
      • Cannon Fortress
      • Mass Driver Fortress
      • Missile Fortress
      • Heavy Rocket Bastion

The ‚demolish structure‘ (which is an own structure internally) is shown on every page. ‚Wall‘ and ‚Tank Trap‘ are shown on every page of the Defense Structures. As you may notice some structures are in more than one category.

My hope is that these categories will make it into the game at some point in the future. To preserve the feeling of the original warzone this should be an on- and off-turnable feature.

Comment on this (board-account neccessary)