2020 Achievments, Full Speed Ahead!
By Scott Lee
Dec. 5, 2020
Plans have changed since originally setting an agenda following the 2019 postmortem. The main difference for the remainder of 2020 is returning to work on Kalling Kingdom. Some of the player feedback has been negative, and that certainly isn't something I can accept, but more than that: plans were already in place to continue work on Kalling Kingdom.
As has been described before, Kalling Kingdom is a new universe. Its inspirations from games like Zelda, Rollercoaster Tycoon, Civilization, and the Democracy series are not what defines it, nor is pop culture from any particular brand or series popular. This is a new endeavor into fantasy, one that has not been explored in the city simulation genre before. After reading some of the stories of past devs, I am kind of convinced that it cannot really work.
At least, there is the question of whether it can work commercially
. But I believe very strongly that others will see what I see once the title has been polished the way it deserves. This is a game worth playing, a universe worth exploring, or at a minimum: an escape worth a few minutes in someone's day.
In addition, I wrote a while back about the new direction for Elega Corporation
. Since that time, some first steps have been taken to approach what was described as a new exploration into the lower level concepts of the machine, including some study of Assembly code, writing some first applications in Rust
like the very beginnings of a 2D renderer, and diving into computer science fundamentals. It is still too early to describe how things are changing in such a deep way for my own skills as a developer as well as how that affects the pursuits of Elega Corporation... but it is significant!
Considering the lower level fundamentals of all applications allows one to think about how they approach their development differently. It leads to different tool choices, and that makes a giant impact immedaitely. For example, when you're willing to abandon Python and its standard runtime (which is terribly slow compared to even C#), you can immediately improve the performance of what you're doing by several multiples, without changing much of anything about its design. As an example, running a website that receives even a moderate amount of traffic with its backend being run by compiled Rust code instead of Python is easily 30x-80x faster in most instances.
Other lessons come from memory management and the real design, of course, and those are improvements that are learned more gradually. For instance, in Python or NodeJS: it is easy to spend time augmenting lists of items in memory without much thought to how much memory those things consume but perhaps even more importantly: the layout
of the memory allocation. This is similar in principle to thinking about the difference between a linked list
and an array
. Linked lists are basically lists that exist across a number of different sectors, or sort of clusters, of memory slots - this means the CPU has to traverse a wider distance or a greater number of slots before proceeding to return the next item in the linked list, assuming it has to go to a different block of memory. This leads to slowdown in performance. Some higher level languages attempt to solve this problem for you by copying entire collections into new blocks of memory when the current block size becomes exceeded... but that copying operation has a cost as well.
So, there becomes an immense benefit in having a deep understanding in the memory layout of an application, right down to the consecutive memory blocks that it allocates and consumes. Following a principle of data-oriented design allows speeds where operations complete in an order of nanoseconds
, not seconds or milliseconds, because the fundamentals of the machine were conisdered.
A community has developed around this philosophy of consideration toward programs running on real machines, with real limitations of physics and hardware, in the Handmade Network
. Handmade, as a community, even has its own manifesto
, which describes the ongoing decline in software quality & performance, down to the speed at which web pages load, the time it takes operating systems to boot up on modern machines (which are incompehensibly fast but few realize that fact), and why programs freeze when just trying to things like save files.
Handmade Network itself is an offshoot of what was originally an educational project by Casey Muratori called Handmade Hero
, a series of videos where an entire game is programmed from scratch. And it is indeed from scratch
because it begins right down to the level of: how do you draw pixels to the screen? In what way do you have to talk to the operating system in order to run a game? It's written in C++. Muratori has worked on real industry projects and game development tools, including The Witness
, and RAD Game Tools
Toward the end of this year, I bought a ticket in support of the Handmade Seattle
low-level programming conference event, which was of course virtualized this year due to COVID19. Naturally, when you are juggling the projects and learning curve that I am, there isn't much time to catch up on all the content from that conference... but maybe you will have better luck than I on consuming it all in less than... the next time it happens in 2021 maybe.
What Low Level Technology Means for Elega
Okay, Scott, you've gone down the rabbit hole of lower level programming. So what? What does this mean to anything that you may have come here to see from me originally, like game design, or new Pluralsight courses?
A game engine will be built from scratch that does not rely on the bulky base of the Unity game engine. I suppose Unity continues to improve in some ways, including Project Tiny
for ripping out all the cruft of the engine but for all the wrong reasons of deploying to web platforms (we ought to remove the cruft anyway really, for all platforms). Relying on the Unity engine will always lead back to other tradeoffs and issues, of course, and with full control can come optimization for certain kinds of games.
The tentative plan: I design a renderer that could work with just about anything (which Unity arguably provides in my own use, to be fair) but then optimize the overall foundation of the game for real-time or grand strategy in general (which Unity seems to be consistently not great for without pointing its guts to C++ libraries or other trickery).
The game engine that has been started on in the background could also be used for other applications too, of course, even if it does end up being specialized for something specific. The overall philosophy change is far more powerful by itself than any of the singular projects: the most exciting thing for me is the way this improves the performance, feel, and underlying quality of every technology created by my development effort, or by Elega by extension.
Salesforce Workflow Course Update
In Q3 and the very beginning of Q4 we put together an update for the workflow course based on learner feedback. It refreshes the flow builder instruction, adds an installable example package of Salesforce metadata for your developer org, and re-recorded whole modules of audio. When the course was originally created, the audio quality was poor by comparison of the equipment and setup I have today. The experience is way better now with having the installable example materials: it means you can look at exactly what's being shown on screen without having to dig through Salesforce XML metadata files to try to make sense of things. The metadata being installed and deployed into the developer org means being able to experiment with it, make changes to it, copy and modify it, and so on. It is a real hands-on workshop style experience now.
Python for Salesforce Developers
In many ways, the release of Python for Salesforce Developers on Pluralsight
was the completion of the dream course I wanted to make with Pluralsight since first becoming an author: it is aimed at an audience that started their development career on Salesforce and then branched to other technologies. When I was in that same situation, it was hard to find resources to help me get things straight short of people around me who didn't know better telling me that maybe I should go back to college for a computer science degree.
There are certainly benefits to being a computer science major, or to starting in the technology field from certain angles, but it all depends on your current situation. One of the nice things about the Salesforce community and approach is its toolset existing in the spirit of technology democratization, and making tools accessible to the mere mortal. Following that, though, what if you feel the next step is to go deeper into the technical with another programming language?
That is where this course comes in. While other courses on Pluralsight seem to do a good job on introducing the language's overall syntax, this course will help you marry the language to what you already know: Salesforce, and probably provide some extra tools for your career in the process since there is often so much demand and useful behind integrating external programs with the Salesforce platform.
New Elega Website... It's Happening!
At some point I probably mentioned redoing the Elega Corp website and recently I formed a solid plan to make it happen, then began putting it together
. In addition to the new site receiving a big splash of color, some legitimate and earnest CSS, and static cache loading speeds everywhere: it'll have a backend written in Rust. At the time of this article's writing before the new website's completion, the backend is written in Python and runs with the standard runtime at a speed that isn't particularly special.
No special announcements to make for next year. Instead, I am simply holding steady on the same track: more courses, more Kalling Kingdom updates, and continuing development on other projects in the background. News to come, thank you for reading!