The Collider.JAM project structure was never designed up-front, but it was never just thrown together either. The structure was formed in evolutionary stages, where decisions for each step were carefully considered. It started as a simple script to help us bootstrap a game jam. Not only did it not have any structure to talk about, it didn’t even have a repository. It was a drop-in toolbox of…
Wayland has an unbelievable ability to break software in ways I never believed were possible. Ever since the major distros decided to push that excuse for a windowing system instead of the rusty but proven X11, I have experienced only misery and despair while working with my Linux fleet of machines. Countless bugs, glitches, locked features, and unexpected behavior followed. My daily driver…
We played Telemetry Troubles with JetPakBoy the other day. Telemetry Troubles gameplay It finally grew into something playable. From the unfinished sketch of Ludum Dare 59 and the barely functioning prototype of the turbulent Noise Jam 3, it reached a playable state. So I placed JetPakBoy in front of the screen, opened the game, and carefully observed the playtest, keeping a pen and notebook…
Another terrible night for our neighbourhood. The past two months were especially destructive, with multiple drone and missile strikes, resulting in damaged, burned, and collapsed apartment blocks. Last night, the city was hit by multiple ballistic salvos. 31 missiles in total, but only one was intercepted, which tells a lot about the supply of interceptors. Or rather the lack of it. Many of the…
Everyone involved in the LLM bubble is talking about AGI now. Like AGI is already here and we are on the verge of singularity. Well, one would say anything necessary to pump up the valuation before IPO. But the AGI claims are so delusional that I lost any hope for humanity, at least for the Twitter part of it. The Age of Reason is definitely over. Welcome to the Age of Reality-Warping Social Hype!
This time the strike was exclusively ballistic and extremely dense. In total, 38 ballistic missiles landed on the city in less than an hour. Salvos of incoming missiles were hitting every 2-3 minutes. At least this time the air defense was active. We had a lot of problems with anti-ballistic interceptors lately. And some of these times we didn’t have a single interceptor. The global supply…
Fireworks are the things of the past, long gone and forgotten. You really don’t need fireworks when drones and missiles explode over your head daily, so they were banned at the start of the war. But that can’t stop certain individuals from launching them anyway. I remember a couple of years ago we had an incident when someone wanted to have fun and launched fireworks nearby. Half the…
It felt ominous to start another game jam. After all, EVERY SINGLE TIME I joined a jam in the last two years, my city was under an aerial attack. This one was no exception. May 24th attack on Kyiv So in the four hours after midnight, we could hear hundreds of explosions, distant and close, from a wide range of munitions:
Last night concluded the biggest ruZZian attack so far. It lasted for more than a day, as hundreds of drones, wave after wave, entered Ukrainian airspace and rained down on our cities. The grand finale was multiple salvos of cruise, ballistic and aeroballistic missiles on Kyiv. The resulting explosions could be heard through the night, so we didn’t get much sleep. Particularly close missile…
This spring was relatively cold, just like this winter. But May, finally, brings warm weather, and that means the Arctic Survival Challenge is officially over. Even though it had been over for quite some time, I was waiting for the first really warm days to claim it. And, predictably, the hits on Ukrainian energy infrastructure resulted in retaliatory strikes on ruZZia’s oil facilities and…
9:30PM… Finally got the lights back. Electricity was out for 18 hours straight. We are down to having only 2-3 hours of electricity a day with no predictable schedule. So you don’t know when you’ll get it, and how long it’s going to last. Now it is the usual buzz around the apartment - charging everything we can - phones, laptops, power banks, power stations, rechargeable…
First, we heard a drone flying. Drones have passed right above our apartment block so many times that it was not something unusual. But this time the drone loitered especially low. The buzz got louder until it suddenly turned into a heavy explosion. The air was violently disturbed by the shockwave as I saw a sinister red glow right above my building. The sound of falling debris followed shortly…
The jam stream is over! I can’t say it was unexpected. Ruzzians have been waiting for cold weather since the winter of 2022, and we were lucky to have relatively mild winters for 3 years in a row. But any luck eventually runs out, and even with a globally warming climate, we got the winter to end all winters. With freezing temperatures we haven’t seen in decades. Something I vaguely…
“The war continues to have a strange, somnambulistic quality,” wrote Mollie Panter-Downes about London in late 1939. That was still a “phoney war,” and many still refused to believe that the old peacetime was over and the world was spiralling fast into the hottest war it had ever seen. But war never changes. It is exactly the same now. We also refused to believe that the…
Today, my keyboard started to receive signals from outer space. Well… At least it felt like it. Bring Me Bluetooth! It all started with another power outage, which happens frequently these days. Everything but the laptop went black - the lights, my second display, and a KVM switch. In a moment, the studio lights fell back to the batteries, illuminating the room in an eerie red-blue glow.…
Long-strike drones are more dangerous than they seem. We’ve been harassed by ruzzian Shaheds for more than 2 years, and by now these drones are so mundane that we almost pay no attention to them. Sometimes, these attacks occur daily, in multiple waves that start in the evening and continue throughout the night. And when you hear the buzzing of drones and shooting all the time, you almost…
I’m a genuine Igor with a diploma, therefore fully qualified to solve creative and technical issues for evil geniuses. If you are a billionaire or, maybe, an evil megacorp looking for exceptional tech talent, I’m sure we can find a mutually beneficial arrangement. If you are not any kind of a villain, I still can help. But the price tag will be reduced in that case. I’ve spent…
I’m a genuine Igor with a diploma, therefore fully qualified to solve creative and technical issues for evil geniuses. If you are a billionaire or, maybe, an evil megacorp looking for exceptional tech talent, I’m sure we can find a mutually beneficial arrangement. If you are not any sort of a villain, I also can help, but that’s gonna be cheaper. I’ve spent the last 25…
Explosion. Concussion. Rattling doors and windows. Car alarms triggered by powerful tremors. Such is another ballistic missile strike on Kyiv. The second one this week. The last one happened only 3 days prior and included a whole bunch of ballistic missiles, cruise missiles, and drones. Explosions illuminated the sky throughout the night and up to the next morning. Russians were hitting critical…
War makes me rethink planning. They say “no battle plan survives contact with the enemy.” But as I know now, no single plan survives the touch of war . As you know, I’m developing Collider.JAM Game Framework to bring back the joy of programming in the dependency-intoxicated JavaScript world and demonstrate that web-first game development is not only possible, but viable and might…
Today I saw a HN discussion on a WSL-like Windows subsystem for FreeBSD and was stunned by the amount of genuine enthusiasm regarding that monstrosity. Sadly, it is just yet another kludge in the ivory tower of software bloat . It is like all software is gravitating towards a single point of singularity, with all existing platforms collapsing into an incomprehensible black hole, sucking in our…
Last night was an emblematic one for Kyiv’s Fall. Heavy clouds dangled low, enveloping yellowing hills across the river. It was dizzling all day and into the night. Suddenly, a bright flash illuminated the October sky over the city, and interceptor missiles lacerated the heavy clouds. The glistering balls of rocket fire were diving into the low-hanging cloud ceiling, briefly highlighting the…
In 80 years of its existence, the software industry has become huge. It’s mass casts a gravity field on all spheres of human existence, and tremendous tide forces shred everything into a unified technological soup. Everything revolves around standardized platforms and frameworks now, and all-present forces of technological gravity mix features and ideas between them to the point it is hard…
Last night turned out to be one of the loudest of this summer. Late evening, hundreds of drones started their attack on Kyiv in multiple waves. I could hear the annoying buzzing of drone engines accompanied by bursts of anti-aircraft fire and occasional explosions after lucky hits. Then, the decibel level suddenly peaked. One moment, it was a dark, moonless night, then a bright light from the…
When JetPakBoy got his break from school this summer (and a deserved one - he has passed two grades in one year), we decided to select a summer programming language to play with. I was oscillating between good, established options and one of my language experiments. An established option gives a stable platform and a lot of materials to work with. Platforms like Scratch, Python, Lua, and…
Last night was terrible. Three hundred drones were attacking Kyiv through the night. Then, at 4 AM, when the drone attack was mostly repelled, air raid alert lifted, and most people returned to their homes from bomb shelters, ruZZians launched ground-based Kalibr-K cruise missiles from Kursk region. Flying really low over swamps and rivers, the missiles converged on Kyiv from multiple directions…
Yesterday, a ruzzian Shahed drone damaged a nearby apartment building. We had damage nearby before - from falling intercepted cruise missiles and drones. Just a few months before, the falling debris damaged an apartment building across the highway. But this time it was much closer than before. The falling debris damaged an apartment building on my block, just a few hundred meters away. A strange…
Early 90s saw an unprecedented push towards object-oriented systems. General concensus was that everything must be object-oriented, and by object oriented, everyone meant C++. There was no other major contender. Smalltalk, which popularized the OO approach in the first place, had never seen general adoption and was confined to niche, self-contained, all-in-one systems. Early Smalltalk…
This time, it started much earlier than usual. Late afternoon, a chorus of air raid sirens was howling above the city. A harbinger of upcoming drones and missiles. A daily reminder that the war is going on, and you will never catch a break. The first waves of buzzing drones started to sneak into the city, followed by hundreds of others — 500+ drones in total, not counting a dozen various missiles.
The night started with a usual air raid alert, nothing out of the ordinary. Enemy drones were approaching the city. But after the initial strike package, more and more drones were coming in. An annoying buzz of two-cycle engines could be heard throughout the night. The sky was sliced with tracing bullets, and firework-like puffs of delay-fuzed shells accompanied by occasional anti-aircraft…
Down2Jam is a new entry in the game jams family and I was thrilled to participate in the very first event. I’m always in search of interesting events besides major game jams to experience new formats and look at things from a different angle. The theme was Train . After a two-hour-long midnight brainstorm we with the team decided to create a little game about a steam train with a tricky…
Deadline. No delivery. Another failed jam . It was not going well from the beginning. I decided to participate on the same day the jam started. So I hadn’t been able to gather a team and ended up participating solo. Sometimes it works, but it didn’t this time. Moreover, I started the jam while doing major refactoring in the Collider.JAM event management subsystem. That meant I had to…
It was a typical night in Ukraine. Long-range drones were launched in waves after midnight. After 4 AM we could hear shooting and explosions somewhere in our neighborhood - these were anti-aircraft fireteams trying to shoot down drones coming into the city from our direction. Nothing special. At 6 AM, all drones in Kyiv’s vicinity were eliminated and the air raid alert was over. Just a few…
Any game is driven by events. And the most foundational ones are related to controls. Player input is super-important since it steers the simulation. That is why the effort put into the input subsystem design pays off handsomely. The Origin Collider.JAM started with a very basic input system. All input events are captured by functions in /trap . So /trap/keyUp(e) captures all key up events,…
Air raids are different. Ballistic missile attacks are sudden, swift, and brutal. No compromise, no remorse. Ballistic missiles are fast. Usually, you have only a minute or two between the alert and the incoming. You don’t have time to look for a shelter. If caught outside, just hide inside the nearest building. You are in luck if there is a subsurface facility nearby - an underground…
The inevitable thing in a war is that my son is terrified of thunder now. It sounds somewhat similar to missile strikes, and each time we have a thunderstorm, he runs into a corridor away from windows to seek shelter. But I don’t think it is brontophobia - the fear of thunder. Rather, it is a case of missilophobia. Today, our side of the city didn’t get much rain. It happens sometimes…
Today marks the bloodiest missile strike on Kyiv so far this year. You never know when the next attack is coming. It was a typical Monday morning. The city was buzzing with activity. There was a limited drone attack during the night, but it was long over. Suddenly, all hell breaks loose. 40+ missiles from all directions converged on Kyiv almost simultaneously. The combined attack included various…
Boom! The explosion was so loud that I heard window frames pressed in with a cracking sound. I jumped out of bed, my heart pounding fast and my mouth swearing. A thick wall facing my office offers some protection, so I moved away from the windows closer to that wall, expecting more explosions to follow. But it was all for now. It is 5 am and Ukrainian air defense just intercepted a 9M727…
You can use Collider.JAM by simply installing collider.jam npm package globally with npm install -g collider.jam . This command installs the latest stable Collider.JAM release and gives you the jam tool to initialize and launch Collider.JAM mixes. This is the simplest way to use Collider.JAM and it often covers all your development needs. But in my case, I need something more intricate. Since…
It’s started again. Early in the morning power went out. We got another blackout — the likes we’d never seen since February 2023. Recent Russian missile strikes on hydroelectric dams and thermal power plants left 8GWt whole in the Ukrainian power grid and it was just a matter of time before the system became unbalanced. Kyiv was luckier than others for a few weeks, but it looks like…
Today explosions started before I heard the air raid alert. Powerful shockwaves shook my apartment causing doors and windows to vibrate and bend with cracking sound. It looks like Kyiv was attacked with hypersonic 3M22 Zircon missiles from the occupied Crimea. They fly so fast that there is very little time to react. We moved to the corridor as fast as possible since there was no time to get to…
I’m happy to announce Collider.JAM Development Release 10 . It is a massive release baked for almost 4 months. The changelog alone is bigger than any of the previous ones. A lot of effort this time went to simplify project bootstrap. You can now use jam init ls to list all available samples: mkdir next.mix cd next.mix jam init ls The last command will scan installed modules and list all…
We are a few steps from Alpha Release 1 . Development Release 10 is going to be shipped soon. Then, DR 11 and 12 will follow, and we might finally be ready to ship the first Alpha. Spring is traditionally a jam season. And since it is Collider.JAM, all major releases are usually shipped around these jams :) Themes and limitations are always different, so each jam provides a unique testing…
Eyes watching a mouse cursor have being a good GUI demo app since the early versions of X-Window. It shows how to work with color, draw simple shapes and handle mouse coordinates. Let’s see how easy it is to build a similar app with Collider.JAM and JavaScript. And let’s also extend the original concept by adding the ability to create additional eyes on the mouse click. There was no…
Backgrounds are essential for any game. Usually, backgrounds are not a part of the action, nevertheless, they are a crucial element of a game style and aesthetics. Backgrounds also play an important role in the game loop, since usually they are the first thing we draw each frame. So the background is supposed to clean up the previous frame. Before DR4 In early versions of Collider.JAM we used to…
Yesterday, I’ve signed off and published Collider.JAM Development Release 9 . The package is available on npm : npm install -g collider.jam It’s the 8th Collider.JAM release this year. The changelog is not as big, as in the previous release, but still, there are significant changes. We finally have CONTRIBUTING.md with tips on how one can help the project. It’s attributed…
Global scope is considered evil. It especially resonates in the JavaScript world with a notorious window object. The most common advice out there is to avoid globals as much as possible. However, a game state is essentially a one big global scope . It defines where the enemies are, how many hit points they have, and how much health and ammo you’ve got. And each part of that system…
It is easy to run a Collider.JAM project. Just execute somewhere inside a project folder: jam And then open http://localhost:9999 . Even better, you can ask Collider.JAM to open the project link automatically: jam play However, during development we often use a different form: jam -d The -d flag turns on the debug mode . There are a number of debug and development features enabled by this: debug…
The development tools today are big. And that directly reflects on the complexity of projects they produce. The level of noise modern tools generate is just unbelievable. When you click on “Create a New Project” in a typical modern IDE, you receive a folder full of mystery and surprises. A hello-world type of project might consist of hundreds of files. Do these files essential? Do they…
The best way to close Hacktoberfest 2020 is to share a story. And what can be better, than a fascinating story of pixels, polygons, and open source? In this video , Blender Guru talks with Ton Roosendaal about the origins and the future of Blender. Blender originated in 3D animation studio NeoGeo on the Amiga platform in the late 80s. You can still download and try the original software called…