Uslingborg Defense

Saved games stay in this browser only.

About the game

The castle of the evil Uslingborg stands on an island in a pond, and an angry mob is marching along the roads to get it. You stop them with inventions: a spire, a flying monkey, a shark in the water, a corpse in the graveyard, a glyph drawn on the ground. Each invention comes with a kind of attack: a laser, a freezing block of ice, flames that make the villagers run in circles, or a ticking atomic bomb that can blow up the ones around it.

It is a tower defense game with an unusual control scheme. On the invention table you assign a mouse button or a key to each invention. Back on the map you hold that button or key to see where it can be placed and release it to build there. Every invention costs money, and you earn it from the villagers you stop. The table also decides prices: inventions in the upper left are the cheapest, and you can pay to rearrange the table so the ones you use most cost less.

There are five levels, each with a longer road and new inventions. The author says the game is not well balanced and that you can win without using most of the toys, so it is meant to be played with a smile.

Playing it here

The first time you click Play the page downloads the Python runtime and the pygame library (about 23 MB), which takes a few seconds; after that a "click to start" message appears, and one more click starts the game with sound. The download is kept by your browser, so every other pygame game on the site opens faster. Nothing is loaded from other sites. When a level starts the game draws its terrain from scratch, which takes a moment. The game has no save.

Controls

Input Action
Tab, or click the small window in the corner switch between the map and the invention table
On the table: click a box with a mouse button, or point at it and press a key assign that button or key to the invention
On the table: drag the blue boxes at the right and bottom rearrange the table (costs money)
On the map: press the assigned button or key show where the invention can go; release to build
F1 to F5 go to a level
F10 restart the current level

Tips

Assign your favourites first. Open the table at the start of every level and bind the inventions you want to mouse buttons so you can build fast.

Match the invention to the place. Sharks can only go in the water and corpses only in the graveyard. Spires have a long range, monkeys charge twice as fast but reach less.

Mix the attacks. Freeze charges very quickly, flames cost one more hit but scatter the mob, and atomic targets give no money but can clear a crowd.

Frequently asked questions

Does it save my progress? No. Each visit starts at level 1, and F1 to F5 jump to any level.

Does it work on a phone? It needs a mouse and a keyboard, so it is meant for a computer.

Why does the first start take a while? The page loads Python and the game libraries. Your browser keeps them, so the next visit starts much faster.

Is it free? Yes. The code, graphics and sounds are CC0/WTFPL, and the fonts are free fonts under the SIL Open Font License and the Apache License.

Credits and licence

Uslingborg Defense was made in one week by Christopher Night (Universe Factory) for PyWeek 14 in 2012. Its code, graphics and sound effects are released as CC0/WTFPL, according to the README of the original entry. The music tracks are the author's own (made with Autotracker-BU), also CC0/WTFPL. The original also had a song by Paul and Storm, "Lame Monster Party", under CC BY-NC-SA; it is left out of this version, and the last level plays one of the other tracks. The fonts come from Google Fonts: Gorditas, Bangers, Creepster, Henny Penny, Jolly Lodger, Piedra, Nosifer and UnifrakturCook under the SIL Open Font License 1.1, and Fontdiner Swanky, Irish Grover and Mountains of Christmas under the Apache License 2.0. The version served here is ported from Python 2 to Python 3 and from numpy to plain pygame, its main loop is asynchronous (the browser needs it) and Esc no longer quits; the original voice recordings are not part of the downloadable game, so there is no speech. The changes and the original zip are linked from the Licenses page. The game runs on pygame-ce (LGPL-2.1) and CPython, whose licences and source are also linked from the Licenses page.