Trial and Epic Fail

Ventures of an indie game developer

Trabant 1.1 launch

Trabant v1.1 is out there. The web page got a major overhaul. The simulator got optimized. The IDE got .exe export. The API got a simplified ASCII art generator. I also added 20 new sample prototypes included in the zip. That's pretty much it, apart from optimizations, bug fixes and some minor features. Is it any good? I think so. On the other hand I thought so already at v1.0, and still got absolutely not feedback on that. People's apprehension to trying new things is always annoying to the innovator I guess.

In the future I'm going to build a few games quickly and try to get some attention on that. Or not. We'll see.

Bigdog


I suppose I shouldn't have given Bigdog that last beer.

In Trabant I must introduce servos, that's one thing I hadn't thought about.

Readying for Trabant 1.1 launch

Win+Mac+iOS binaries compiled. Contains a small known bug. Probably won't build new version for Linux. Thinking about new web layout. Possibly going to start out at the top of the page with something like this:
Might also buy a domain for it.

A vision for the future of programming languages

New languages and technologies are constantly overflowing us programmers. Most of them adding a little to what came before, there are no quantum leaps being made afaik. From event-driven P from Microsoft, to ownership-performant Rust, to scalable and syntax-minimalistic Elixir, to almost-adopted like Go and platform-centric like Swift for Crapple.

The quantum leap needs to take us from bottom-up, details-first programming to top-down overview-first programming. We should develop programs the same way we paint, sculpt, write books, build houses: top down. We start with a fluffy idea and fill in the details. When building the house we don't start with the carpet fibers for a good reason, but we still do when building programs.

Think composable libraries and IDE-plugins combined to allow control with fuzzy commands. Think voice-controlled. Then everyone can become a programmer. An unclear example might clarify:
[New.]
[Use nature module.]
Show a polar bear.
Visible from the side.
The other side.
At 50 meters distance.
It is pacing slowly.
It is gloomy and snowing.
The fur should be brighter.
It is a mother. Add a cub walking behind it.
Back up.
The mother is lifting her head and looking into the camera for a second.
Back up. Stop.
This is the start of the sequence.
Play.
Stop.
This is the end of the sequence.
Play.
[Save.]
Humans may be too dumb to produce this type of quality as it stands, but this is the direction we must go to in the future to really scale up. Not towards Rust. Bah! Rust is just another carpet. I want to build a house!

Mixed release

It is with mixed feelings I announce Trabant 1.1. It's the best thing I've ever done from a software perspective, but privately the divorce materialized. After 16 years together, it will take some getting used to being single again. I'm sure it will work out fine, it always does for me. And the kids don't seem to mind, that's the important part.

In Trabant I optimized quite a bit and doubled the number of included prototypes. Some of the new ones are Agar.io, Angry Birds, Candy Crush.py and Crossy Road. I also simplified some of the old prototypes - the whole idea with the included prototypes is that they should be half-done with extremely low-hanging fruit.

One of the best parts about Trabant 1.1 is the new export functions. You can either export to Gist (sigh) or export to .exe (yey!). The Windows executable export is a powerful feature. It means you can send your prototype to anyone, for instance a non-programmer colleague (think the game design guy down the hall who doesn't know how to open a *nix linefeed text file). And for the lame n00b who just want to make and distribute a simple game.

I was inspired by the guy who did 50 games in a year, and this Trabant feature might allow me to make more advanced games in even less time. If I take the time to automate screenshots, upload of executable, sharing of code... Ohwellthatwonthappen.

Just got the iOS v1.1 release rejected from Apple since my video showed how to use it - which is on a PC. Nobody writes code on a touch device. But on App Store you need to show only screen shots of the app. I'm starting to loathe Apple. Titan crashes, lock-in worse than ever, Apple Watch a flop... In a few years it will be IBM. In the mean while MS is doing better, the new Surface Studio seems awesome.

Anyway, I remove the PC video and reposted. When it is approved I'll update the web page, buy a domain and try to convince some of the big players to start using it. Doing so might hold some therapeutic value, which comes in handy at this time.

Xtris and GTA

There's more action than one might think in the 110 lines of GTA prototyping I've made.


At the same time I uploaded the classic multiplayer xtris src+binaries for Windows to github. We colleagues play a match each Friday. I've won one out of two Fridays so far. Version 1.17 from 2004 had some "stalling" or "lagging" bug where the client would wait with redrawing until the server sent some data. I fixed it, so this Friday my poor colleagues will have no refuge when faced with utter humiliation. Ahhh...

Anomalies trips you up

C++ is still the language of choice when building fast things. (Linus being the duly noted exception of course.) Also note that building fast things is not the same as building fast. Rust is never going to catch on for a bunch of reasons: volatility, syntax, performance. Go is better Java for back-end. Etc. But the things you still have to build in C++ make your brain hurt. For instance, I felt the need to write an optimized function for turning doubles into strings! 2016! The good ol' sprintf was an order of magnitude slower and gcvt isn't standardized enough (mostly thanks to Microsoft's _gcvt_s shit). And boost is bloat and I don't use.

The drawback of writing these things in C++ is that it number of lines of code you need to churn out is very high (43 in my case), not to mention the overhead. The .h file takes up another line, and you keep the code in an .inl to create fast code. The problem with that is that when you change a central .inl you need to compile every damn .cpp file in your project. And then of course you make a bug which you aren't able to detect with your home-brew unit tests (home-brew to avoid depending on third parties which sucks in C++, and unable to detect since you don't foresee the hard bugs).

My bug was that 27.05020 would become "27.052". I.e. all decimal zeros not next to the dot disappeared. Rust's syntax doesn't prevent you from these silly bugs, but to Rust's credit I have to say that you never would write this type of code. That is also true for all sensible languages. Fucken C++...

I just experienced another even more trippy anomaly. I noticed a bulge on the bottom of my lower-left arm. Very small, say 1 centimeter long, 0.4 centimeters wide and the shape of a parenthesis pushing the skin out. Hard and very... worm-like. At first I thought it was a piece of my subcutaneous fat that had hardened for some reason. I have no parasites that I know of, and never had (there are practically none in this country). Very strange. After a couple of seconds it loosened up and disappeared. Either this is me starting to lose my grip or I've somehow contracted something in need of a host. I've never been scared of going insane, but would still prefer to keep this type of thing a singular oddity rather than a reoccurring anomaly.

With a least one anomaly gone, Trabant is slightly better than before. We're soon ready for a v1.1.

About the author

Mitt foto
Gothenburg, Sweden