Of Entity-Component-Systems

I made a semi-cache coherent container which provides an Entity-Component-System. These are the bones of modern game-engines. This post is largely a gooey weasel opinion piece. It started as an introduction that grew out of control. So, for now, it’s just a bit of rambling while I clean-up the documentation for my tool. Of Entity-Component-Systems Among other things, Jason Gregory’s book Game Engine Architecture discusses the concept of a data-driven architecture for game software.

Cmder in TortoiseHG

Have you used TortoiseHG? It is lovely! Have you used Cmder? It is lovely! If you … setup cmder to launch from the command line open TortoiseHG Workbench > File / Settings > TortoiseHG / Shell put cmder %(root)s into the Shell field … then you can have these two lovely tools holding hands and kicking-bugs!

Open macOS Terminal in Folder

In January of 2018, you can launch macOS’s terminal with the command /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal1 I have (to use) a macOS computer. I choose to use TortoiseHG because it is lovely. TortoiseHG has a “launch the terminal” context menu entry. Under macOS, you need to specify the terminal command that TortoiseHG should use. You need this, in your preference, to launch the terminal in the repo; /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal %(root)s https://stackoverflow.com/questions/4404242/programmatically-launch-terminal-app-with-a-specified-command-and-custom-colors [return]

Moving Platforms in Unity3D

This is a short example of moving platforms in Unity3D. Based on this tweet, I spent … 30 minutes? Maybe? putting it together. This writeup took longer. The approach uses two behaviour classes to achive the classical effect of moving platforms that follow some path. mark some empty GameObject as Waypoint instances give each Waypoint a next field attach a Mover instance to your platform(s) drag the platform towards the next Waypoint at a fixed rate when you’ve reached the Waypoint, continue with its next one My example;

Adventures in Demo Making

I should just “blog” informally more often - so here goes. I’ve cobbled together a toolchain/asset-conditioning-pipeline of sorts for demoscene type stuff. My system is written in Scala on Gradle and functions by emitting C/++ and CMake files for Visual Studio. All of this produces a C/++11⁄14 and GLFW/GLAD/OpenGL4.3⁄4.5 executable that displays someone else’s ShaderToy project. Nothing revolutionary, but I’m after pretty-code that I can keep using rather than actual hard “street cred” quality demo results.

(Scala) Delay Run

I wrote a threading primitive and I’m very pleased with it. I plan to wrap all of my “save file” things in this, from now on. Delay Run This class acts as a sort of “once inactive for X do Y” pattern. In my design, I’m wrapping my save actions in it and triggering schedule() after practically every edit. The class is passed a delay: Long value to specify how long to actually wait - I’m using 1.

Gradlification of FlexDock

Some clever clogs made a snazzy tool called SciLab as another not-MatLab.1 Flex Dock is the framework that (I think) they developed for docking frames. It’s not in Maven Central so I’ve forked it and deployed it to my own repository. convert the build The actual conversion was embarrassingly easy since the gradle importer stuff really works for this sort of thing. As a matter of personal preference, I re-arranged the build scripts to be a single file but otherwise left them as-is.
Pi3 nGinx Reverse Proxy

Pi3 nGinx Reverse Proxy

So … you’ve got a Pi3 running as a Docker host with some services that you want your buddies to have access to. You could try and get them to SSH into your home network; just like you could type all your programs with a touchscreen. I’m going to use nGinx to setup a reverse-proxy from my real-Pi3 to various Docker containers based on URL rewriting. I’m doing something else (of course) I’m setting up (what I call) name-based-virtual-hosting.
GoGS on a Pi3 (via Docker)

GoGS on a Pi3 (via Docker)

I’ve been assembling a “full stack”1 for development that runs on my Pi3. This is all happening inside of Docker containers which made cleanup redonkulously easy. Today I was looking at a source code management system; something of a “my own GitHub” which I can run on my own network. We have GitLab at work; so I wanted something different … also; the authors don’t suggest using a Pi3 for “real.
Pipe Sink

Pipe Sink

I had an idea/desire for a “simple” template class that’d work as my OpenGL thread. A contemporary design for multi-threaded 3D games10 seems to be pooling work and processing it in whatever threads are available. IME OpenGL/GLFW are not re-entrant; Apple2 and GLFW3 explicitly states that it won’t work - so it seems safe to assume that I shouldn’t call functions from different threads. So to make a super-fast 3D game (or whatever) I need to do less work on the thread which is running OpenGL while allowing other threads to send it whatever work they please.