Panspermia

Saved games stay in this browser only.

About the game

Our world is dying. A storm that began generations ago is getting worse, and the only hope is to spread seeds among the stars. In Panspermia you are the garden: a lawn seen at an angle, a Germinator in the middle that makes little units called Kernels, and the Kernels do all the work.

Your job is to cover the lawn with Star Plants, the first plants you can build. Each Star Plant absorbs the energy of the ground around it, and the more of the lawn they cover, the more Kernels you can have. Plant them by choosing the Build icon and clicking on the lawn: a Kernel runs there and plants the seed. A new plant grows slowly and semi-transparent, and another Kernel can fertilise it to speed it up. If you cover 90% of the lawn and keep it for thirty seconds, the seed is fired into space and you move on to the next world.

Each of the five worlds has its own danger. On the first, lightning and rain strike the lawn; on the second, the harsh sun damages your plants by day; on the third meteorites leave craters where nothing can grow and more of the lawn is lost as time passes; on the fourth enemies throw your Kernels at your own buildings and you build cannons to fire Kernels back at them; and on the fifth an enemy keeps moving your Star Plants around. You also build Dewdroppers, which collect drops of dew that you use to heal damaged buildings.

Playing it here

The first time you click Play the page downloads the Python runtime and the pygame library (about 23 MB) and then the game itself, which is about 3 MB, mostly music. 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. The game has no save. The original has sound effects that cannot be distributed here, so only the music is played.

Controls

Input Action
Click on a unit select it
Click and drag, or hold Shift and click select several units
Click on the lawn send the selected units there, or place a building
Click on the icons in the upper right give orders (build, heal, attack, pause)
Arrows at the bottom left and right, or Left / Right keys turn the lawn
Any key move pop-ups along
Esc pause (then Esc again goes back to the title screen, any other key resumes)
On the title screen, 1 to 5 start at that level (6 for the ending)

Tips

Spread your Kernels apart. Lightning and meteorites kill what is near where they strike, so do not keep your units in a clump.

Plant Dewdroppers early. You need a supply of dew drops to heal buildings, and it takes time to build one up.

Fertilise in groups. Structures grow faster when a Kernel fertilises the ground nearby, and a tight group of plants can be fertilised all at once.

Frequently asked questions

Does it save my progress? No. A run starts from the first world.

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, and the music files are large. Your browser keeps them, so the next visit starts much faster.

Is it free? Yes. The code and the graphics were placed in the public domain, the music is under a Creative Commons licence and the title font is under the SIL Open Font License.

Credits and licence

Panspermia was made by Christopher Night (Cosmologicon, team Universe Factory 8) for PyWeek 8 in 2009, and the final version is dated May 2009. The README of the original entry says that all the code and graphics are his own work, placed in the public domain. The music, "Arcadia" and "Ominous Intro" by Kevin MacLeod (incompetech.com), is distributed under a Creative Commons Attribution licence; here the two MP3 files were converted to Ogg Vorbis, which is the only change. The title lettering uses Bangers, Copyright 2010 The Bangers Project Authors, under the SIL Open Font License 1.1, which replaces the freeware font of the original. The original sound effects, resampled from files on freesound.org without their licences being recorded, are not part of this version. The version served here is ported from Python 2 to Python 3, its loops are asynchronous (the browser needs it) and Esc no longer quits from the title screen; 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.