(2023-05-21) Pix64 in the browser: it was boring but necessary
--------------------------------------------------------------
Yes, https://bropix.luxferre.top/ now has a port of Pix64 to HTML5/JS. Well,
algorithm-wise, it's more of a port of AwPix than the original idea, and 
sometimes it even handles collisions MORE correctly than the original 
ZappedCow's Pix64 v1.2 in .NET. I won't get into the details of what changes 
I had to make to get it to work correctly with the keyboard, mouse and touch 
input, or how I made the cart information available in the URL themselves, 
because you can look all this up in the source code itself, I didn't 
minify/obfuscate anything. I also won't stress on the changes needed to 
create a working KaiOS port out of this (and I guess you know that its 
creation is inevitable at this point). What I do want to stress on though is 
the kind of impact that popularizing such platforms can have.

You see, game programming is generally a complicated thing, and always has
been. Especially if you want to write a good game, not some mediocre trash 
pumped out by schoolbois every day using ready-made frameworks. Writing a 
good game involves knowledge of mathematics, logic, programming itself and 
graphic design (unless the game is purely text-based, but even then you need 
to think of the UX). And even before all that, you need a well thought-out 
idea of what's gonna happen in your game from start to finish on every 
possible path the player can take. An yes, nothing of this can be skipped, 
no shortcuts can be taken. Kinda. Because there are some tools that make 
basic logic and art design a bit easier, and there even are some tools that 
claim to ease the programming part of this by implementing "visual 
programming" paradigm. Well, guess what, most of them fail, because 
representing the concepts at the same level, just in a different form, 
doesn't decrease the complexity. You might as well just put C or Python 
statements into rectangular blocks and connect them with a bunch of arrows. 
No effect on the result.

Pix64, on the other hand, does "visual programming" right. Unlike the
object-oriented approach imposed by most modern programming languages and 
game engines, Pix64 imposes the object-first approach. You don't have a way 
and don't ever need to describe an object and then determine how it would 
display, you just draw this object and then determine how it would behave by 
assigning a particular color and shape to it, and everything else is handled 
by the engine itself. Yes, this kinda limits the variety of interactions you 
can have in your game, but, at this cost, the complexity is drastically 
reduced down to the point that you no longer need to know a single 
programming language and, what's even more important, you only need to think 
of the interaction logic purely visually. This fact makes game creation 
accessible to much broader spectrum of people and makes Pix64 much 
higher-ranked among other "visual programming" tools in terms of the ready 
implementation of any task being much closer to the initial description of 
the task. You draw the game and only alter some details to make it work. 
Heck, a properly drawn Breakout playfield turns into a playable 
Breakout-like game here! This alone was enough for me to see that the 
potential of this thing is enormous and to start all my porting efforts. 

If I were in charge of the further Pix64 specification development, how would
I improve it? Well, first and foremost, I'd lift the 64x64 limit on the 
playfield and would allow 128x128, 192x192, 256x256 and so on. This would 
allow to put much more logic into the carts. Second, I'd use the two 
remaining colors - blue (#0000ff) and magenta (#ff00ff) - for some new 
mechanics. For instance, blue would denote a sprite generator that would 
emit a new arrow ("out of the blue", heh) from its side when being hit by a 
sprite from the opposite side, and the arrow would be of the same color that 
hit it, and magenta might be a "sprite portal" - when any non-wall sprite 
touches it, it disappears and appears from the other side of any _other_ 
randomly chosen portal, or the same one if it's the only one. These two 
color additions would allow to implement shooter mechanics and more complex 
puzzles, as well as introduce more randomness to the games.

However, even in the current state, Pix64 is just fine and definitely has its
own niche and appeal. It's much more honest than any other "fantasy console" 
out there, and much more high-level too. I hope my ports will help to spread 
this wonderful idea to an even wider audience.

--- Luxferre ---