TUXDB - LINUX GAMING AGGREGATE
made by: NuSuey
NEWSFEED
GAMES
▪️CROWDFUNDING▪️COMMUNITY DEALS▪️STEAM DECK▪️CALENDAR
tuxdb.com logo
Support tuxDB on Patreon
Currently supported by 11 awesome people!

🌟 Special thanks to our amazing supporters:


✨ $10 Tier: [Geeks Love Detail]
🌈 $5 Tier: [Benedikt][David Martínez Martí]

Any feedback for tuxDB? Join us!

Steam ImageSteam ImageSteam ImageSteam ImageSteam ImageSteam Image
Zero-K
Zero-K Team Developer
Zero-K Team Publisher
2018-04-27 Release
Game News Posts: 72
🎹🖱️Keyboard + Mouse
Very Positive (3892 reviews)
Cold Take #27 - Widgets and Gadgets

Zero-K runs on the Spring engine (now Recoil), which is written in C++. This is a great programming language for speed, but a slab of solid C++ is too daunting for the average game developer to dive in and edit. This is especially true with the engine handling so many fundamental systems, such as multiplayer, pathfinding, and physics. Luckily, Lua was added to the engine in late 2006, and as a result, Zero-K itself is written almost entirely in Lua. Lua is a popular language for game scripting and modding. Spring games can include Lua code, which the engine then triggers on a wide range of available events. Once triggered, a Lua script can do things such as modify the game world, or draw things on the screen. For example, the flame-spewing Pyro triggers UnitDamaged to tell Lua to set units on fire. Being on fire is not an engine concept, rather, Lua implements it by drawing flames within a DrawWorld event and applying damage on GameFrame.
Scripting took a bit over a year to add to the engine, and it was a gamechanger. Prior to Lua, new mechanics came from the engine, so they could only be added at the speed of engine development. This was much slower, since the pool of C++ developers is smaller, and engine code is held to a higher standard since it is shared between games. Even worse, engine updates are released periodically, further lengthening the feedback and iteration cycle. The methodical release process of the engine is great for the stability of RTS fundamentals, but not so great for rapidly iterating on new mechanics. Some experimental mechanics were added prior to Lua, although most since fell by the wayside. The problem with engine features is that they are hard to modify or update, so most games evolved past the more obscure ones. Even if you can muster the C++ mana, other games might want the old version of the feature, leading to a proliferation of configuration options that multiply the difficulty of working on the feature. Tweaking the simplest thing can quickly turn into a discussion between multiple games, and everything has performance or maintenance trade offs. Do not take the above to mean that the engine is useless. It supports the complete RTS experience, without scripting, and has robust systems for Lua to interact with, such as the command handling system. Some of the more experimental features are even used by most games, such as bubble shields and area commands (although I heard that COB scripts could technically make area shields in Total Annihilation). There just happen to be many other vestigial mechanics, such as aircraft flares, repulsion shields, seismic detection, and an early form of line move, that are rarely used by Spring games.
Spring supports Lua in essentially two flavours: widgets and gadgets, known collectively as wupgets. Widgets run independently on each player's computer, with their own internal state, and are fair in the sense that they can only see and do the same things as the player. People can even play the same game with a completely different set of widgets installed. Gadgets are completely different, they run as part of the game itself, and implement game mechanics. Most of the flashy new stuff in Zero-K is run by gadgets, such as jumpjets, terraform, overdrive, cloakers, and unit AI, but many "mundane" parts of the game are also managed by a gadget in the background. There was an explosion of widget development in 2007 and 2008, with the creation of many widgets that underpin the basic UI features of most Spring games, including widgets such as custom formations (line move) and command insert (Space + Click). This was mostly being done by players freely sharing code and ideas, rapidly experimenting and discovering what worked. Anyone can install a widget to run on any game, which means you can tweak your widgets from match to match. The iteration speed and direct player involvement has never been greater, and as such, widgets quickly outstripped the engine UI, to the point that engine-side UI development stopped completely.
Widgets were hugely influential on Zero-K, since Complete Annihilation was concurrent with the widget explosion, so we saw firsthand how widgets were upending the design of existing games. For example, Fencer could fire while moving up until I wrote an early version of the autoskirm widget. Players were curating their own UIs, and they were getting more powerful, so the options were to either block it completely or embrace it. We chose the latter, and strove to make a game that survives the pressures of powerful UI, ending up at Fight your opponent, not the UI. Gadgets were also influential, but more on the development side. Complete Annhiliation development was fairly open; once you had commit rights, you could experiment and add almost anything. So people just did stuff. Jumpjets, area cloakers, terraform, overdrive, shield link, construction priority, laser bombers, morph - these were added by people who wanted to add them, without much room for other developers to tell them not to. We attracted people interested in pushing beyond TA, and it paid off.
The initial explosion of creativity lasted perhaps five years, at which point we started consolidating. Most notably, rather than just cram the game full of cool widgets, we started creating sensible defaults, with an eye towards giving new players a functional UI. Widgets moved from something players brought with them, to something the game provided. Gadgets were refined too, and a few, such as experience morph, were removed entirely. Removal was a last resort though, we wanted to retain the creativity. The UI was rewritten in a bespoke Lua-based UI framework called Chili, although some of the most important UI work was not with widgets at all, but with the creation of unit AI gadgets. Unit AIs tend to start as widgets, since it lets players tinker permissionlessly, without any concerns for stability or release cycles. Good widgets come from this system, however, there are two big issues. The first is fairness, since enhanced unit AI confers an advantage. This can be resolved by including all widgets in the game, although this relies on the author being willing to share and polish the widget. Sharing is easy enough, there has never been a problem, but polish is hard. The second issue is also fairness, but at the deeper level of latency, one fundamentally unsolvable by widgets. Widgets suffer from network latency, from ping. This is because players have latency, and widgets effectively run alongside the player. We usually deal with latency as an unavoidable fact of online gaming, and a few 100 milliseconds does not mean much in an RTS, as players can adapt to it. However, widgets are fragile code, that have trouble adapting to delayed commands, causing them to break or have highly varying effectiveness. Essentially, AI widgets are prone to amplifying the inherent unfairness of latency.
Widgets cannot solve latency, so we had to migrate unit AI to gadgets. Gadgets act directly on the state of the game, observing and responding with no delay. This is why there is no autoskirm widget; it is now baked into the game. Unfortunately gadgets are not easily configured, which is why Zero-K now has a large number of unit state toggles, but this is a small price to pay. The gadgets also have to be careful not to cheat, since technically they are omnipotent and omnipresent, but Spring provides ample tools to limit Lua to what a player can see. Gadgets are not just for adding mechanics and polishing widgets; they are also used to polish (replace) the underlying engine. For example, the basic move command, the thing that happens when you right click the world, is a custom command handled by a gadget. The engine offers a basic move command, but it causes units to jam up around waypoints, which is not good enough for the standard of control set by Zero-K. The engine implementation was even worse before Zero-K replaced it, but the engine has improved a bit in response. There are many other examples, such as the engine failing to split resources evenly between constructors. Ideally these things would be in the engine, but until they are, Lua can pick up the slack.
Replacing the engine with Lua is not without its challenges. C++ has much better performance, so we are careful to use as much of the power of the engine as possible. Luckily, large swathes of the engine are exposed to Lua so, for example, the custom move command uses Spring.SetMoveGoal rather than attempt to find paths for 1000s of units on its own. This is a fine division of labour, with the engine handling the resource intensive tasks, leaving lua to stitch together the results. The above barely scratches the surface of Lua. The entire main menu happens to be written in Lua, using the same framework as the ingame UI, but this was more a matter of Lua mana than a technical necessity. Units animate with Lua scripts, and entire opponent AIs were written in Lua. But perhaps the greatest ongoing impact of Lua harkens back to the creative explosion of 2007: Zero-K itself has many mods with many new features that are only made possible by using Lua to delve deep into the engine. So if you want to write some Lua, rather than read about it, consider giving modding a go. Index of Cold Takes


[ 2025-06-01 00:30:15 CET ] [ Original post ]


Commander wanted! Construct giant robots, build an army of a thousand Fleas. Move mountains if needed. Bury the enemy at all cost!
  • Traditional real time strategy with physically simulated units and projectiles.
  • 100+ varied units with abilities including terrain manipulation, cloaking and jumpjets.
  • 70+ mission galaxy-spanning campaign to be enjoyed solo or co-op with friends.
  • Challenging, (non-cheating) skirmish AI and survival mode.
  • Multiplayer 1v1 - 16v16, FFA, coop. ladders, replays, spectators and tournaments.
  • PlanetWars - A multiplayer online campaign planned to start in May.
  • Really free, no paid advantages, no unfair multiplayer.

Fully Utilized Physics


Simulated unit and projectile physics is used to a level rarely found in a strategy game.
  • Use small nimble units to dodge slow moving projectiles.
  • Hide behind hills that block weapon fire, line of sight and radar.
  • Toss units across the map with gravity guns.
  • Transport a battleship to a hilltop - for greater views and gun range.

Manipulate the Terrain


The terrain itself is an ever-changing part of the battlefield.
  • Wreck the battlefield with craters that bog down enemy tanks.
  • Dig canals to bring your navy inland for a submarine-in-a-desert strike.
  • Build ramps, bridges, entire fortress if you wish.
  • Burn your portrait into continental crust using the planetary energy chisel.

Singleplayer Campaign and Challenging AI


Enjoy many hours of single player and coop fun with our campaign, wide selection of non-cheating AIs and a survival mode against an alien horde.
  • Explore the galaxy and discover technologies in our singleplayer campaign.
  • Face a challenging AI that is neither brain-dead nor a clairvoyant cheater.
  • Have some coop fun with friends, surviving waves of chicken-monsters.
  • Cloaking? Resurrection? Tough choices customizing your commander.

Casual and Competitive Multiplayer


Zero-K was built for multiplayer from the start, this is where you can end up being hooked for a decade.
  • Enjoying epic scale combat? Join our 16v16 team battles!
  • Looking for a common goal? Fight AIs or waves of chicken-monsters.
  • Prefer dancing on a razor's edge? Play 1v1 in ladder and tournaments.
  • Comebacks, betrayals, emotions always running high in FFA.
  • Want to fight for a bigger cause? Join PlanetWars, a competitive online campaign with web-game strategic elements, diplomacy and backstabbing (currently on hiatus pending an overhaul).

Power to the People


We are RTS players at heart, we work for nobody. We gave ourselves the tools we always wanted to have in a game.
  • Do what you want. No limits to camera, queue or level of control.
  • Paint a shape, any shape, and units will move to assume your formation.
  • Construction priorities let your builders work more efficiently.
  • Don't want to be tied down managing every unit movement? Order units to smartly kite, strafe or zig zag bullets.

Plenty of Stuff to Explore (and Explode)


Zero-K is a long term project and it shows, millions hours of proper multiplayer testing and dozens of people contributing ever expanding content.
  • Learn to use all of our 100+ units and play on hundreds of maps.
  • Invent the next mad team-tactics to shock enemies and make allies laugh.
  • Combine cloaking, teleports, shields, jumpjets, EMP, napalm, gravity guns, black hole launchers, mind control and self-replication.
  • Tiny flea swarm that clings to walls?
  • Jumping "cans" with steam-spike?
  • Buoys that hide under water to ambush ships?
  • Mechs that spew fire and enjoy being tossed from air transports?
  • Carrier with cute helicopters?
  • Jumping Jugglenaut with dual wielding gravity guns?
  • Meet them in Zero-K!

MINIMAL SETUP
  • OS: Ubuntu 13.04 or equivalent
  • Processor: 2.0 GHz dual core CPU with SSE (Intel Core 2 Duo or equivalent)Memory: 4 GB RAM
  • Memory: 4 GB RAM
  • Graphics: 512 MB graphics card with OpenGL 3 support (GeForce 8800 or equivalent)
  • Storage: 6 GB available spaceAdditional Notes: 64bit only. Big Picture mode is not supported
RECOMMENDED SETUP
  • OS: Ubuntu 17.10 or equivalent
  • Processor: 3.0 GHz quad core CPU (Intel Core i5 or equivalent)Memory: 8 GB RAM
  • Memory: 8 GB RAM
  • Graphics: 2048 MB graphics card with OpenGL 3 support (high GT 500 series or equivalent)Network: Broadband Internet connection
  • Storage: 8 GB available spaceAdditional Notes: 64bit only. Big Picture mode is not supported

GAMEBILLET

[ 6262 ]

12.59$ (16%)
25.19$ (16%)
13.30$ (11%)
7.44$ (17%)
15.11$ (24%)
20.72$ (17%)
20.72$ (17%)
6.61$ (17%)
53.35$ (11%)
16.96$ (15%)
8.39$ (16%)
4.95$ (17%)
12.42$ (17%)
16.57$ (17%)
17.59$ (12%)
24.87$ (17%)
16.57$ (17%)
20.72$ (17%)
13.04$ (13%)
4.95$ (17%)
41.47$ (17%)
13.30$ (11%)
10.91$ (16%)
20.72$ (17%)
16.97$ (15%)
17.79$ (11%)
16.57$ (17%)
1.44$ (76%)
5.03$ (16%)
8.89$ (11%)
GAMERSGATE

[ 1972 ]

4.5$ (62%)
1.5$ (75%)
30.0$ (50%)
2.5$ (50%)
2.55$ (91%)
3.4$ (83%)
0.43$ (91%)
0.6$ (91%)
0.64$ (87%)
5.74$ (62%)
4.5$ (85%)
3.0$ (50%)
2.55$ (83%)
0.43$ (91%)
1.11$ (91%)
12.75$ (74%)
0.68$ (91%)
0.64$ (87%)
0.6$ (88%)
1.53$ (83%)
0.51$ (91%)
5.0$ (50%)
0.85$ (91%)
1.53$ (87%)
0.75$ (81%)
1.32$ (91%)
1.28$ (87%)
3.0$ (85%)
1.02$ (91%)
0.85$ (79%)
MacGamestore

[ 1848 ]

21.99$ (27%)
1.49$ (85%)
0.99$ (75%)
1.99$ (60%)
2.49$ (75%)
38.99$ (13%)
6.37$ (79%)
17.49$ (20%)
2.98$ (80%)
0.99$ (75%)
1.10$ (84%)
1.98$ (80%)
1.19$ (76%)
2.29$ (85%)
1.19$ (88%)
2.48$ (75%)
8.99$ (70%)
1.19$ (76%)
1.19$ (88%)
1.99$ (85%)
13.99$ (22%)
1.42$ (93%)
2.48$ (83%)
1.19$ (80%)
15.99$ (20%)
1.49$ (75%)
27.49$ (8%)
1.99$ (80%)
7.99$ (80%)
1.10$ (89%)

FANATICAL BUNDLES

Time left:

356322 days, 23 hours, 16 minutes


Time left:

0 days, 6 hours, 16 minutes


Time left:

8 days, 6 hours, 16 minutes


Time left:

23 days, 6 hours, 16 minutes


Time left:

1 days, 6 hours, 16 minutes


Time left:

24 days, 6 hours, 16 minutes


Time left:

23 days, 6 hours, 16 minutes


Time left:

24 days, 6 hours, 16 minutes


Time left:

8 days, 6 hours, 16 minutes


Time left:

2 days, 6 hours, 16 minutes


Time left:

30 days, 6 hours, 16 minutes


Time left:

21 days, 6 hours, 16 minutes


Time left:

23 days, 6 hours, 16 minutes


Time left:

16 days, 6 hours, 16 minutes


Time left:

22 days, 6 hours, 16 minutes


Time left:

1 days, 22 hours, 15 minutes


Time left:

356322 days, 23 hours, 16 minutes


Time left:

30 days, 6 hours, 16 minutes


HUMBLE BUNDLES

Time left:

2 days, 0 hours, 16 minutes


Time left:

16 days, 0 hours, 16 minutes


Time left:

28 days, 0 hours, 16 minutes

by buying games/dlcs from affiliate links you are supporting tuxDB
🔴 LIVE