Skip to main content

ExoClone

Introducing ExoClone

A Godot 4 Tribute to the ZX Spectrum Classic Exolon
If you have a soft spot for the golden age of 8-bit gaming, you might remember Exolon – the unforgiving, screen-by-screen tactical shooter released for the ZX Spectrum back in 1987. It was a masterclass in classic sci-fi atmosphere and brutal gameplay mechanics.
As a passionate project and an experiment in game development, I wanted to bring that exact feeling into the modern era. Meet ExoClone, a tactical 2D side-view shooter built entirely from scratch using the Godot 4 engine. You can watch the gameplay trailer on YouTube to see it in action.

Preserving the 8-Bit Vibe

To feel the game in its retro roots, I enforced some hardware constraints on myself during development:
  • Resolution: The game renders at a crisp, authentic 256x192 pixels.
  • Color Palette: Every visual element adheres to the original Sinclair ZX Spectrum color palette.
I handled all the coding and pixel art myself, trying to balance modern graphics capabilities with the spirit of the original sprites.

The Levels

Currently, ExoClone features three distinct experiences for players:

Trappist-1f

The Classic Remake: A 1:1 reconstruction of the first level from the original Exolon.

Kepler-16b

A Brand New World: A completely original level designed by me, featuring new tactical challenges while respecting the traditional core mechanics.

The Demo Chambers

A few experimental sandbox rooms where you can test out mechanics, weapons, and physics.

Sound and Music

While I handled the code and visuals, a retro game is nothing without its soundscape. I was fortunate to source incredible audio assets to bring the world to life:

A GDScript Experiment
(And It’s Open Source!)

Let’s talk about the underlying tech. I built ExoClone primarily as a personal playground to learn and experiment with GDScript in Godot 4. Because of this, please do not look at this codebase as an example of clean architecture or efficient programming! It is absolutely full of strange design decisions, quirky workarounds, and experimental logic that I patched together while figuring out the engine.

That being said, ExoClone is an entirely open-source project. If you are a fellow developer curious to see how a screen-by-screen retro shooter functions in Godot 4 – or if you just want to laugh at my weird code – you are more than welcome to dig through it. If you want to modify the game, tweak the gravity, or add your own custom levels, please don't hesitate to make a fork! Check out the Source Code on GitLab.

Play It Now

The game is fully compiled and ready to play directly in your browser. Grab your rifle, manage your grenade supply, and see if you can survive the alien defense complexes. Play ExoClone Online.

Feedback and forks are always welcome. See you on the high-score screen!

Comments

Popular posts from this blog

HowTo: Hot migration of OS Linux (Debian 12) from one encrypted disk to another

This is a step-by-step HowTo article on performing a hot migration of a Linux operating system to another encrypted disk. It provides almost no explanations, focusing solely on the commands required to complete the task. Use it at your own risk. You could lose your data during the process, so ensure you have a backup of all critical data before proceeding. Part of the output has been removed to make this article shorter. Environment checking $ sudo apt list --installed lvm2 cryptsetup fdisk efibootmgr Listing... Done cryptsetup /stable,now 2:2.6.1-4~deb12u2 amd64 [installed] efibootmgr /stable,now 17-2 amd64 [installed,automatic] fdisk /stable,now 2.38.1-5+deb12u3 amd64 [installed] lvm2 /stable,now 2.03.16-2 amd64 [installed] $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 931.5G 0 disk nvme1n1 259:4 0 238.5G 0 disk ├─nvme1n1p1 259:5 0 512M 0 part /boot/e...

Optimizing Database Query Performance: Solving Text Search Challenges with Table Partitioning

In the development of the " antikollektor " project, which aims to provide a user-friendly interface for checking judicial databases, I encountered a major challenge related to how fast the database could respond to queries. Specifically, queries involving text searches across a large number of rows were taking an unacceptably long time to execute. In this article, I will share the steps taken to optimize database performance by implementing a table partitioning strategy, addressing the issues encountered and achieving significant improvements in query speed. The Issue: Slow Text Search Queries Users typically search for court cases by defendant name within a specified date range. The average request was taking approximately 5 seconds to execute. casesdbv2=# explain analyze select * from cases where date >= '2023-01-01' and date <= '2023-06-30' and defendant ilike '%ivanov%sergey%' order by date desc offset 30 limit 10; ...

How to create a Simple Captcha Resolver

"All aircraft designers once learned to make paper airplanes." Someone Smart This article shows my journey of developing a simple captcha resolver. By repeating the steps described, you will be able to get acquainted with the technologies and create your own recognizer for experimentation and study. Some specific development points have been omitted to simplify the material in the article. It should be noted that I am not an ML specialist and very superficially familiar with machine learning technologies. I developed this captcha recognizer out of curiosity, driven by an interest in understanding how the learning process works. So I would be very grateful for advice and comments from those who understand this. There are numerous parameters mentioned in the article that I don’t explain in detail. The goal of this approach is to make the article shorter and simpler while encouraging readers to experiment with the parameters themselves. I have used the simplest algorithms po...