Strivix exists in service to a single goal with two possible paths to get me there. Either someone will come here, see all that I've created, and offer me a job, or the things I create will start generating revenue. Either way, I'll have a job doing what I want to do.
At first it may seem like my ideas are too disconnected, too different to be part of the same goal. In the end, I am a designer, and good design is good communication. Writing, programming, engineering, web development, and video games are all about design and the conveyance of ideas.
I don't know where I'll end up, but I know how I'm going to get there. So, here's the plan...
Goal ➤ Release two sections every week
SDL is a popular C/C++ library for video games, used by many popular games such as FLT: Faster than Light, Factorio, Cave Story, and Shovel Knight. It's easy to learn and use and is ideal as an introduction to software development and design while being a tool used by real-world developers as well. Developers can stay with SDL, or move to a more feature-complete and complex system such as the Unreal Engine or Unity3D.
SDL is also well documented and has a large community. That said, there are few resources aimed at people not just new to SDL, but also new to programming. While the tutorials on Strivix aren't the first of their kind, I hope that my style of writing can help more people achieve their goals of becoming capable game programmers and designers.
Goal ➤ 10,000 subscribers to weekly gaming newsletter
My earliest ideas for this site was to use it as a portfolio of my writing. My goal then was to work as a games journalist. I was unsuccessful, but I knew it was an idea I wanted to pursue. If no one else would hire me as a journalist I'd find a way to do it anyway.
Enter the newsletter. For a while I struggled with how to get people to come to the site. To get people to show up once would be hard enough, but repeatedly? Especially to read the writings of a single person? Unlikely.
Then suddenly the answer became obvious: instead of a news site, do a newsletter. Go to the people, don't make them come to you. Plus, newsletters are much smaller. Far easier to accomplish solo than running a news site.
PLAN ➤ Release at least two parts every week
Computer science and programming languages are not the same thing. Computer science is applied logic, while programming languages are methods of expressing and executing that logic. And while you can learn computer science without ever touching a programming language, the same cannot be said of languages. This isn't just about teaching people C++. There are plenty of tutorials, courses, and books on the subject. But few, if any, can be considered to be an introduction to computer science.
The Structure and Interpretation of Computer Programs (1985) is the best book ever written as an introduction to computer science. It teaches beginners using Lisp, and managed to not only teach the language, but also show how the language is executed by an interpreter. Compiling/interpreting is a core component of computer science, and yet in modern universities, compilers are senior level classes and are typically optional. Worse, students are taught Python as their first language.
Let's first examine Python. Python itself, in the hands of an experienced programmer, can be a fantastic language. There are thousands of libraries to solve any imaginable problem. Its syntax is simple and clean and it allows developers to quickly build solutions for their unique problems. It's because of these reasons so many universities have begun to teach Python right away. Many experienced programmers advise newcomers to learn python because it's so easy.
However, they fail to realize one simple truth. It's easy for them because they have experience. For new programmers, Python is an abstract nightmare more akin to sorcery than science. What students need to start with is something more concrete with strict syntax. For this, Lisp, C, or even Assembly is a better choice. My intro to computer science will use C++, sticking with primarily C code in the beginning.
Second, about compilers. Have you ever thought of a text game? Seems really simple right? It's the most basic form a computer game could have. Except...it isn't. It's easier to create a basic point-and-click adventure game using a library like SDL than it is to create a simple text game like Adventure. That's because text-based games are fundamentally interpreters that take a domain-specific-language as their input. It's no different from how the Python interpreter works.
Looking at something like the Dragon Book, you can easily be forgiven for thinking compilers belong at a senior or graduate level. But this is incredibly misleading. One of the most enlightening books I read on compilers was a book about Pascal from the 70s. It was just over 100 pages long, and about 40% of that was the source code for the compiler.
Compilers can be complicated, but learning how they work is not. It leads to a greater understanding of how computers and languages work. This knowledge ultimately will make you a better programmer. The goal of Learn C++ is to give people a strong foundation in computer science and the C/C++ language, while also giving them the tools to make a text rpg or anything else they can imagine.
PLAN ➤ SDL based game engine for 2D games
Not much to say on this. It's a game engine. The only really unique thing about it will be the story tools I'll build into it. Something like World Anvil or Campfire Blaze. This will come after the SDL tutorials are complete, and probably after C++ as well.
IDEA ➤ Book and Software Publishing
Three of the main plans above involve writing books and the other is writing software. Strivix is already a publishing platform for my own creations. But I wonder if I can take it further. Could Strivix someday be a video game publisher? A computer textbook company? A full news site? I don't know, but it's an idea worth remembering.
Style ➤ Adventure RPG
At the heart of a mist shrouded caldera stands a colossal clocktower. The land is said to be cursed, and all who enter never return. Seven people enter the caldera:
These seven may become the best of friends, or bitter enemies. Or perhaps they'll never know the others exist. But each has their journey through the Clocktower and will find an end, together or alone.
I wrote once about a different way to do open world games. I believe focusing on different characters, who are the heroes of their own stories, rather than making one person the ultimate hero of everything, would provide a more engaging story. Clocktower Lights is an attempt at that sort of game.
The player can choose to play as whichever character they want, switching between them throughout the game. Events can play out differently depending on who the player chooses to be and where they choose to go. Instead of basing the story off the decisions of a single actor, the story evolves with the choices of multiple actors.
Style ➤ A Novel about Computer Science
I've said already that computer science does not depend on programming languages, but that languages depend on computer science. This book is about computer science without ever mentioning languages. It's a book about how to think.
There was a time when I read several self-help books, like the Richest Man in Babylon and the Greatest Salesman in the World. Unlike most other self-help books, these were written more like stories than instruction manuals, and I found I enjoyed them far more for it. I wondered then if the same sort of idea could be applied to programming.
The real epiphany came when I read the Manga Guide to Cryptography. This book looks absolutely absurd. I was not at all interested when I saw it, and I was rather judgemental about it. This surely had to be the single dumbest thing ever conceived. So, naturally, I read the whole thing.
I can honestly say no other book has been more influential on my thinking when it comes to computer science education than this one. As I was reading it, I found that I completely understood everything it was saying, and I started writing code. Without referencing anything else, I was able to write complex encryption algorithms from scratch. The book does not use any kind of code. There is no reference to any programming language at all.
I realized that the writers of computer science textbooks had all made an incredible mistake: they included code in their books. This may seem like an absurd idea, after all, how else could you write about programming?
But once again, computer science isn't programming. Books about ideas should be written without code. Code is often used as a crutch to help support bad writing. For a neverending example of terrible writing and an over reliance on code, you can reference basically anything published by Packt.
With this in mind, I wondered if it would be possible to write a book about computer science in the style of a story, or a dialogue. I'm certain I could, and someday I fully intend to write this. However, it will be some time.
Yes, both Learn SDL2 and Learn C++ feature examples of code. However, these are texts about code, not just ideas. It's necessary to have code examples when learning a library or language to learn syntax and how to read code. However, it is possible to write about these things while minimizing code examples, which I try to do as much as possible. An excellent example of this is the C++ Primer.
Style ➤ SNES Metroidvania
The NES and SNES are ideal systems for learning how to program in assembly and understanding how computers really work. Working in assembly on such a small system presents challenges that don't exist on modern systems and can teach a great deal about software and hardware design. For this game, I want to use the SNES mostly because of the expanded color palette.
For a great, jumpstart guide on how NES programming works, check out this video about Micro Mages, a modern NES game released in 2019.
Style ➤ Fantasy/Mystery
The fantasy genre seems to be stuck in an eternal war setting and I'm tired of it. Once my favorite thing, Fantasy RPGs now feel exhausting to me. I want something with more character development. I want to explore the economic and societal aspects of magic, not just its military applications.
I'm also sick to death with open world games. I wrote about one solution I have for those in The Nature of Open Worlds, but that solution is already planned for Clocktower Lights. For this game, I want something limited. A single town, with a complex cast of characters. A world far deeper than it is wide.
Style ➤ Audio Game
A thing I like to do is to imagine what something is when you take away the obvious. What is a library without books? What is a university without classrooms? I find this helps me see more clearly the secondary aspects of things and find new ways to envision people, places, and things. In this case, the question I asked was "What is a video game without video?"
I've listened to audiobooks all my life, since I'm an abysmally slow reader. One day I was thinking that I'd really like to play visual novels, but I'd be way more interested if they were narrated. It would be like a choose your own adventure audiobook.
Beyond the novelty of the idea, audio games present unique challenges from a programming standpoint. How do you walk? How do you find items? Can you have a crafting system? I think solving such problems could also benefit how I think about solving problems in games with graphics.