TypeScript

๐ƒ๐š๐ฒ ๐จ๐ง๐ž: ๐Ÿ๐จ๐ฎ๐ซ ๐ฐ๐ž๐š๐ฉ๐จ๐ง๐ฌ. ๐ƒ๐š๐ฒ ๐Ÿ๐ข๐ฏ๐ž: ๐ฌ๐ž๐ฏ๐ž๐ง๐ญ๐ž๐ž๐ง.

Written by  on September 19, 2026

I’ve continued the work on my browser-based game ๐€๐ฅ๐ฅ๐ข๐ฎ๐ฆ ๐€๐ฌ๐ฌ๐š๐ฎ๐ฅ๐ญ. Over the past 5 days and additional 99 commits I’ve turned the minimal prototype into a fully usable game.
๐ญ๐ฅ;๐๐ซ: you can play it without any installation for free on GitHub Pages: https://marcelpetrick.github.io/AlliumAssault/

It is still a turn-based 3D artillery game with ๐ ๐š๐ซ๐ฅ๐ข๐œ ๐›๐ฎ๐๐๐ข๐ž๐ฌ ๐Ÿง„ in the spirit of Worms 2. I had lots of fun with friends thanks to the guys from @Team17.
Adding the new weapons was more than just creating a new sprite for the button – playtesting turned out to be crucial. A ๐˜ฃ๐˜ข๐˜ฏ๐˜ข๐˜ฏ๐˜ข ๐˜ฃ๐˜ฐ๐˜ฎ๐˜ฃ acts a bit differently from a ๐˜ฃ๐˜ข๐˜ด๐˜ฆ๐˜ฃ๐˜ข๐˜ญ๐˜ญ ๐˜ฃ๐˜ข๐˜ต. And as you know, ๐˜ด๐˜ฉ๐˜ฆ๐˜ฆ๐˜ฑ and ๐˜ด๐˜ถ๐˜ฑ๐˜ฆ๐˜ณ ๐˜ด๐˜ฉ๐˜ฆ๐˜ฆ๐˜ฑ share only part of the name, but not their behaviour.
Since doing repeated tests would be boring, I added 17 E2E tests with ๐๐ฅ๐š๐ฒ๐ฐ๐ซ๐ข๐ ๐ก๐ญ to get this done.

Also, I’ve done one profiling run and then decided to remove multisampling, which saved around 40% of the cost per frame with almost no quality loss. And, of course, the major improvement – each push now runs ๐‚๐ˆ ๐ฏ๐ข๐š ๐†๐ข๐ญ๐‡๐ฎ๐› ๐€๐œ๐ญ๐ข๐จ๐ง๐ฌ, which automatically deploys to GitHub Pages. And this allows you to run it without any changes from any browser (also tested on a smartphone, but it still lacks “no keyboard” controls).

I have some more ideas in mind. Also, I hesitated until now to add a rope as a weapon, because its functionality is an easy way to introduce a load of bugs.

And if someone is interested: the repository now contains almost ๐Ÿ๐Ÿ๐ค ๐‹๐จ๐‚ ๐จ๐Ÿ ๐“๐ฒ๐ฉ๐ž๐’๐œ๐ซ๐ข๐ฉ๐ญ in 118 commits, 115 tests, a C4 documentation, CI for quality assurance and releases, …

So, spend the Sunday wisely: go to https://marcelpetrick.github.io/AlliumAssault/ and give it a try ๐Ÿ‘

#worms2 #wormsarmageddon #team17 #typescript #sdlc #AlliumAssault

 

 

Early preview: ๐€๐ฅ๐ฅ๐ข๐ฎ๐ฆ ๐€๐ฌ๐ฌ๐š๐ฎ๐ฅ๐ญ ๐Ÿง„

Written by  on September 16, 2026

Not much time to write posts these days. But, of course, the grind never stops.

My most recent creation is Allium Assault, a ๐–๐จ๐ซ๐ฆ๐ฌ clone. With that said, I guess I don’t have to explain the game principle in detail. Two or more teams of garlic buddies fight each other with bazookas, grenades, … on a generated landscape. A ๐Ÿ๐ฎ๐ฅ๐ฅ๐ฒ ๐๐ž๐ฌ๐ญ๐ซ๐ฎ๐œ๐ญ๐ข๐›๐ฅ๐ž ๐ฅ๐š๐ง๐๐ฌ๐œ๐š๐ฉ๐ž plus gravity, wind, and turn-based gameplay.

I plan to add way more features as soon as possible. The first show-and-test with the stakeholders has already elicited some giggles from them.

Tech stack: ๐๐š๐›๐ฒ๐ฅ๐จ๐ง.๐ฃ๐ฌ renders the gameโ€”never used it before, but this was the first time I was able to create a satisfying 3D landscape in the browser. TypeScript, Vite, … Vitest and Playwright for test support. Sound effects are currently generated by the Web Audio API, since I did not want to spend much time looking for samples.

Hosted as always on ๐†๐ข๐ญ๐‡๐ฎ๐›: if you want to fork or play it: https://github.com/marcelpetrick/AlliumAssault

 

Videos automatisch รผbersetzen: ๐†๐ž๐ซ๐ฆ๐š๐ง๐ƒ๐ฎ๐›๐ˆ

Written by  on September 1, 2026

Eine clevere technische Lรถsung zu bauen ist meistens gar nicht das eigentliche Problem. Viel interessanter ist doch: Wie baut man etwas, das Leute wirklich benutzen wollen?

Ich wollte den Kindern ein richtig gutes Video รผber die rรถmische Armee zeigen. Nicht irgendein trockenes Erklรคrvideo, sondern eins, wo man denkt: Okay, das ist cool, da lernt man was. Problem war nur: die guten Videos waren auf Englisch.

Klar kann man sagen: Ist doch super, dann lernen die Kinder gleich noch Englisch. Stimmt. Aber wenn man zu viele Sachen gleichzeitig machen mรถchte, wird halt alles ein bisschen schlechter. Manchmal sollen sie einfach ein cooles Video schauen und dabei was lernen.

Also dachte ich: ๐˜ˆ๐˜ค๐˜ฉ, ๐˜ฅ๐˜ข๐˜ด ๐˜ฌ๐˜ข๐˜ฏ๐˜ฏ ๐˜ฅ๐˜ฐ๐˜ค๐˜ฉ ๐˜ฏ๐˜ช๐˜ค๐˜ฉ๐˜ต ๐˜ด๐˜ฐ ๐˜ด๐˜ค๐˜ฉ๐˜ธ๐˜ฆ๐˜ณ ๐˜ด๐˜ฆ๐˜ช๐˜ฏ. Video transkribieren, รผbersetzen, neue Tonspur drรผber und fertig.

Lass uns das mal schnell bauen.

Aus zwei Stunden wurden dann halt ๐ณ๐ฐ๐ž๐ข ๐“๐š๐ ๐ž.

Die erste Version war ein Command Line Tool. Hat funktioniert. Aber wenn ich das so verรถffentliche, benutzt das halt kaum jemand. Man sieht keinen Fortschritt, Fehler sind unรผbersichtlich, mehrere Videos parallel zu verarbeiten ist mรผhsam und wenn irgendwo etwas schieflรคuft, will man nicht jedes Mal den kompletten Workflow neu starten.

Also habe ich gedacht: ๐ƒ๐š๐ง๐ง ๐ก๐š๐ฅ๐ญ ๐ซ๐ข๐œ๐ก๐ญ๐ข๐ .

Schรถnes UI und Benutzerfรผhrung, mehrere Sprachen, parallele Verarbeitung, Fortschritt, Statistiken, Fehler direkt sichtbar, einzelne Schritte neu starten, Transkriptionen bearbeiten und gezielt neu generieren.

Und genau da merkt man halt den Unterschied zwischen einer technischen Lรถsung und einem Produkt.

Zeigst du jemandem ein Terminal und sagst: Damit kann ich Videos automatisch รผbersetzen, kommt meistens ein โ€žAh, coolโ€œ.

Zeigst du dieselbe Funktionalitรคt in einer Oberflรคche, wo sofort klar ist, was passiert und wo man einfach eingreifen kann, kommt plรถtzlich: โ€žKann ich das ausprobieren?โ€œ

Genau das wird meiner Meinung nach bei Software oft unterschรคtzt. Es reicht nicht, dass etwas clever ist und funktioniert. Es muss auch komfortabel sein. Leicht verstรคndlich. Leicht benutzbar. Und wenn etwas schieflรคuft, muss man trotzdem weiterkommen.

Das gilt รผbrigens auch fรผrs Setup. Wer ๐†๐ž๐ซ๐ฆ๐š๐ง๐ƒ๐ฎ๐›๐ˆ ausprobieren mรถchte, klont einfach das GitHub Repo (https://github.com/marcelpetrick/GermanDubI), kopiert drei Befehle aus der Anleitung ins Terminal und das Ding lรคuft.

Die technischen Details spare ich mir hier. Python, TypeScript, Uvicorn, Parallelverarbeitung, 95% Testcoverage, Pipelines und der ganze Kram. Darรผber kรถnnte ich noch stundenlang reden, weil mir das halt SpaรŸ macht, aber am Ende interessiert das sowieso kaum jemanden.

Fรผr mich ist der interessantere Teil: ๐€๐ฎ๐ฌ ๐ž๐ข๐ง๐ž๐ซ ๐ค๐ฅ๐ž๐ข๐ง๐ž๐ง ๐ˆ๐๐ž๐ž ๐ž๐ข๐ง๐ž ๐‹รถ๐ฌ๐ฎ๐ง๐  ๐ณ๐ฎ ๐›๐š๐ฎ๐ž๐ง, ๐๐ข๐ž ๐ง๐ข๐œ๐ก๐ญ ๐ง๐ฎ๐ซ ๐ญ๐ž๐œ๐ก๐ง๐ข๐ฌ๐œ๐ก ๐Ÿ๐ฎ๐ง๐ค๐ญ๐ข๐จ๐ง๐ข๐ž๐ซ๐ญ, ๐ฌ๐จ๐ง๐๐ž๐ซ๐ง ๐ฌ๐ข๐œ๐ก ๐š๐ฎ๐œ๐ก ๐ฐ๐ข๐ž ๐ž๐ข๐ง ๐๐ซ๐จ๐๐ฎ๐ค๐ญ ๐š๐ง๐Ÿรผ๐ก๐ฅ๐ญ.