Words of Power devlog #6: Introducing TexnoMagic

It's only been 2 months since the introduction of python-wopeditor and I've already rewritten it yet again, now in Godot Engine ¯\_(ツ)_/¯

More importantly, I managed to create the core of texnoforge magic along the way called TexnoMagic 🧙🏻‍♂️

Let me tell you the story of how this unusual magic project came into existence.

TexnoMagic Genesis

MK0: Python loves science

I've created the first prototype of a magic recognition system based on my Theory of Magic in Python's brilliant numpy/scipy/scikit-learn scientific libs as a Jupyter notebook in May 2020. It was an efficient, interactive, and overall pleasant experience. I've confirmed my analytical approach is viable within two weeks and I've moved on to search for the right engine/framework to write Words of Power in.

MK1: Unreal suffering C++ edition

Then I've spent 2nd half of 2020 writing Words of Power in Unreal Engine which is itslef written in C++. Using built-in Unreal features is pleasant, but integration of external code proved to be an incredible struggle. After a month of pure frustration I've managed to integrate mlpack C++ machine learning library as an Unreal plugin and get a basic UI and symbol recognition working but it was by far the most frustrating task I've faced so far. Compiling the plugin was pain, Unreal build system, integration, interface, and docs were suffering. I've managed to overcome these challenges just to prove I could but never again shall I inflict such pain on myself willingly. It's doable, but I don't posses the willpower necessary to fight the pointless fight against the Unreal Engine.

This exercise in futility only sharpened the contrast between working with right tools for the job (python/scikit-learn) and wrong tools for the job (Unreal/C++). The speed of development of the science/magic features was between 10-100 times faster in python where I could implement thoughts in minutes as opposed to Unreal-crippled C++ where any basic task could take days for the most obscure if not obscene reasons.

One of the lessons learned thanks to this traumatic experience is that I need to develop the magic/scientific core with the right tools for the job effectively making it independent on the Words of Power game and mod editor so that it can be (re)used from any tech/language/engine/framework. It was clear python/scikit-learn is the answer.

MK2: back to the power of sneck 🐍

I've started the development of python-wopeditor the Words of Power Editor in the beginning of 2021 using python/scikit-learn combo used in MK0 for core and Kivy framework for UI. I managed to create a working magic editor during 3 months including easy installation on Windows and Linux systems, mod integration and more.

Even though I love Python for its many amazing libraries for science and engineering, my experience with Python's UI/game frameworks has always been tragic. Even the Kivy cross-platform UI framework I've used this time after a considerable research and effort proved to be incredibly hard to use and never working as expected without non-intuitive tinkering.

After writing a functional mod editor on 1500 lines of python/Kivy code, I've discovered that development in Kivy isn't efficient and it's definitely not fun. It feels like a flashback into the old days of software engineering of the 20th century with each feature requiring hard work and suffering to implement. That's not how we write software in the future so I've killed this abomination of a project in an act of mercy.

Luckily, the time invested into python-wopeditor was far from wasted. The UI itself is certainly important, but I can create that in a month or two in any framework/engine as I've already demonstrated in Unreal, Kivy, and Godot.

More importantly, under the hood of python-wopeditor I've created a general system and format for digital magic described in my Theory of Magic. After maturing a little, I've split the magic core into a separate project called TexnoMagic.

Even though python-wopeditor is dead, TexnoMagic has finally reached usable stage including universtal system-agnostic interface and it's going to serve as a magic core of texnoforge creations including but not limited to Words of Power.

MK3: TexnoMagic + Godot = Future

In May 2021 I've started working on the new wopeditor written in Godot and I'm finally happy with the tools I've chosen. I've had a good time with UI design in Godot and wopeditor is already more usable than any previous iteration.

The last remaining challenge is that of an interface between Words of Power (Editor) and TexnoMagic which provides all the magic tech. I need to use TexnoMagic from Godot and generally from anywhere I want, not only from Python.

That's why I've been working on a simple TCP server now included in TexnoMagic to allow using its magical powers from any software/language/system/framework/engine.

I've already got this working - wopeditor is able to ask TexnoMagic server to train a symbol model or get a visual model preview without doing any magic itself. It needs more polish but I'm finally looking forward to a first wopeditor release which will allow comfortable creation of TexnoMagic alphabets as well as sharing through wop.mod.io.

Words of Power game(s) will reuse TexnoMagic the very same way.

TexnoMagic is free as in freedom

In accord with Free and Open Core statement, TexnoMagic is provided as Free and Open Source Software under permissive MIT license so everyone can use it.

It needs more time to mature for general audience but I'm very happy with how it's shaping and you can expect new wopeditor to bring TexnoMagic to life with the power of community.

More good news later ⊂(✰‿✰)つ


Next log: #7: In Search of a Better World