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.
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
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
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
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
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
More good news later ⊂(✰‿✰)つ
Next log: #7: In Search of a Better World