Home Artists Posts Import Register

Content

In this Trixel Diary we'll be looking into how Restitched's Lead Programmer Michael works on the game. For those that are unaware, Michael is considered legally blind, but doesn't let this get in the way of what he wants to accomplish. Michael faces many challenges that some may not have even considered. It is at his request that we'll be taking a dive into how he tackles his workflow.

The rest of this Dev Diary is written personally by Michael, with some minor edits by the Dev Diary writers.

Introduction

I’m Michael, the Lead Programmer of Restitched. As lead programmer, I’m responsible for making sure everyone can find their way around the code, bridging the gap between artists and programmers, and being a safety net for new developers when they join the team.

I was born with Retinitis-Pigmentosa, a hereditary condition that results in gradual loss of eyesight as you grow up. It causes the retina in the back of your eye to foil around the edges (it should normally be flat), and the rods and cones (light receptors in the back of your eye) to malfunction or die. Among many other symptoms, it makes me struggle with low light, peripheral vision, light sensitivity, and contrast, and I’m extremely near-sighted.

There’s no single form of blindness. Many people hear “I’m blind” and think “they can’t see at all,” but that’s not the case. It’s a spectrum, and typing the word “blind” is way easier for many of us than typing “visually impaired". Disability doesn’t mean incapability, and I hope that I’m an example of that. There are certain things I can’t do without assistive technology or help from another person, but that didn’t stop me and it shouldn’t stop you. There’s nothing wrong with needing help.

Oh, and one more thing before we move on to the next section. My story is long and quite emotional for me to tell. What you're reading may seem excessive and long, but it's still the abridged version. That being said, as you read this, I want you to feel like you're there with me. So I really hope you enjoy the ride.

The Long Journey to Game Development

My condition started affecting my ability to do schoolwork at the age of 10. I couldn't see or read handwriting very well, nor could I see the classroom's board. I needed to start doing all of my work on a school computer at the front of the class. Sometimes I would even sit at the teacher's computer so I could watch the lessons on it instead of watching them on the overhead projector. When I started needing it more and more, the school eventually gave me a laptop I could use instead.

As a kid, I was always interested in computers. I distinctly remember my parents telling me I'd learn to print in Kindergarten and thinking they meant I'd learn to use a printer, and not a pencil. I also grew up with video games, Windows XP, and a love for hacking movies. So when the school gave me that laptop, and when I found that it has a copy of Visual Basic .NET on it, it was like I'd opened a Pandora's box.

I found out I was interested in programming in Grade 5, when my dad gave me a few of his old college computer science textbooks to read. I would read them during long car rides when the sun would give me enough light to see the words clearly. I remember asking if we could go to a bookstore and look for more, which is when we bought "Java in Easy Steps" - which I still have to this day in my closet. I remember flipping through it as a kid, seeing all the pictures of Linux terminals and basic GUI programs and wanting to learn how to do all of that myself. The instructions were too hard for me to follow though, so I never actually did learn Java - but that didn't stop me from being fascinated by the idea of writing code.

Eventually, in Grade 6, I remember being in math class on my laptop. I excelled in math as a kid, so I was very quick to finish my work. I remember being bored and just mindlessly exploring, opening random folders and running random programs the school had installed on it. The desktop had two rows of desktop icons near the bottom by the taskbar named after different school subjects. Math, Geography, Language Arts, and... Business and Computer Studies. In all the years of having this laptop, I had never opened that folder until that day. When I finally did, I saw that it had at least a dozen programming IDEs in it. It even had the same one my Java book talked about! So I started opening them as well, just to see what they looked like or what they could do. When I discovered Visual Basic and its drag-and-drop Windows app designer, Pandora's box was open.

I could place text labels on the window. I could put buttons, input fields, menus, toggles, and even an Internet Explorer web browser anywhere on the screen - just by dragging it into place! I could even install online templates that other people made and see what they would do. Then I started wondering how these apps were put together and how to make the computer do things when I clicked a button on the window. I would spend every moment I could scouring online forums and Stack Overflow learning how to do everything from showing a message dialog on the screen to printing a file - all with Visual Basic. Before I knew it, I was already making my very own basic Office suite before I even started middle school.


Beginning to Write Code

I loved writing my own tools. It meant that I could design software that specifically worked for me. But I wanted to go bigger - I wanted to make my own operating system! So, I started to teach myself more and more. I didn't know what I needed to learn, but I was still learning along the way. I started making my own websites in PHP, learning how to configure and run my own modded Minecraft server, learning how to use Linux, and much more. I would start actually posting on forums and IRC chats about my programming. Discord didn't exist back then, but people would always find out I was using Visual Basic and make fun of me for it. They said it was for beginners, for bad programmers, and that I should be using something else. It turned out they had a point because I started learning C# in 2015. This forced me to learn how to do the things that Visual Basic was doing for me, like instantiating objects and converting strings of text to numbers.

In the end, I did make the operating system that I wanted. Because of a project called COSMOS (C# Open-Source Managed Operating System), I could actually write C# code and it would be compiled and assembled into a bootable operating system that wasn't built on top of Windows or Linux. It was amazing! But... it wasn't truly what I wanted. Remember how I said I was fascinated by hacking movies and loved playing video games as a kid? Well... I wanted to make a hacking game. This was at a time when games like Watch Dogs had just been released, and lots of video game protagonists had super-human abilities, so I wanted to make my own open-world hacking game mixed with a superhero story. This lead me to dabble with Unity and Unreal Engine 4, and I became completely overwhelmed by them. But, just like the operating system, even though it was overwhelming - I still really wanted to do it. So, I never stopped trying to learn.

You won't have heard of them, but I've made many games along the way as well. I never finished or released them publicly, but it was how I practised. I eventually did teach myself both Unity and Unreal, as well as frameworks like MonoGame, and even wrote my own game development framework. I'd show these projects to my teachers in high school (which is how I learned of my local college's Dual Credit program where they offer certain game development courses that students could take to earn both high school credit and college credits before entering the program full-time). I took four of these courses leading up to the COVID-19 pandemic, practically acing them with the highest grades in the course (and, in some cases, finishing final exams with 130% final grades) because I aced the exam and the bonus questions. I was on fire - and that's when I knew that this was the career I wanted. It was also when I first learned about and started following Trixel Creative. But more on that later.

Today, I'm still a C# developer, and I don't ever plan to change that. I love solving problems and coming up with ingenious ways of doing so. It's helped me meet so many wonderful people, overcome my disability in many different ways, and I even do it competitively on occasion. In fact, in early 2020, I took first place in a provincial skills competition, beating someone's gourmet meal by a long shot with code. I know I'm good at what I do, I love what I do, and I won't let my blindness stop me. So the next section is all about the challenges I've faced and how I continue to overcome them.


Using Technology While Blind

My condition is degenerative, meaning that it gets worse over time. This is the single-most challenging part of using technology, the things I could do ten years ago are virtually impossible today. Many people see my work for Restitched or other projects and have no idea that I'm doing it while blind. So, how do I make it look so easy?

A big part of it is having the right equipment. For Restitched, I have two 32-inch 4K monitors with support for HDR. My eyes work best with high contrast ratios, so it's important for the text to be close to white and the background to be very close to black. Part of supporting HDR means being able to locally dim the backlight, meaning that black areas on the screen result in the backlight being fully turned off in those areas. That means deeper blacks and thus higher contrast and less strain on my eyes while reading. An OLED monitor could accomplish the same since they don't have backlights (and instead generate their own light), but these monitors are far more expensive for the size I need. I use 4K monitors because I need to be able to zoom into the screen by at least 500%, and the extra pixel density means text still appears sharp at that zoom level. I also use a keyboard with loud and tactile switches, which helps me better feel if I've typed the right key (even if I can't see what's on the screen). I also wear a headset with a sidetone feature, which allows me to hear my keyboard even if I'm listening to music. I also use a mouse with lots of macro buttons on it that I can program as physical accessibility shortcuts, such as zooming in or out of the screen.

Another huge help is dark themes everywhere. Many websites still don't have native dark mode support, so I use a Chrome extension called Dark Reader to generate one for me. This also lets me adjust brightness and contrast settings. I also use OLED-compatible themes for my IDE, Discord, terminal, and my Linux desktop environment. On Windows, I use the built-in High Contrast mode. For reading long bodies of text, I use text-to-speech, but because I still have partial vision, I don't need a screen reader such as VoiceOver or Narrator. I am still much faster at listening to text than I am at visually reading it, however. I use another Chrome extension for doing this when browsing the Internet. Discord also has a "Speak Message" option in the right-click menu that I use to read messages, such as those on the Restitched Development server. I do many of my tasks at the command-line in Linux and can use the "espeak" command to have a program's output or a file read to me. Both Visual Studio and the JetBrains IDEs have support for custom plugins, so I wrote my own read-aloud plugin for these IDEs that lets me highlight any source code and have it read to me. That's also how I'm proofreading this article, since I am writing it (funnily enough) as a text file inside the Restitched source code.

This doesn't cover everything, however. Many apps and games just don't play nicely with accessibility tools. This is when I'm grateful for my friends and fellow community members, since you're a huge part of how I'm able to use a computer as well. From little things like describing a meme or GIF through text, to big things like helping me navigate a program's UI while I'm screen sharing in a voice chat. These things help make technology just that little bit more accessible to me, which really means a lot.


Joining Trixel Creative

In terms of joining the team, all I remember is being really interested in Restitched, having lots of ideas for what I’d add to it, and thinking I had the skills to do it. So I filled out an application, started talking to Halston, made a friend, kept begging to be accepted, and eventually - eventually - that email showed up… and here I am now.

Michael's original application to the team that was submitted on September 4, 2021.

It was intimidating at first. I'd never worked on a game this large with a team before. I was a little afraid of how my blindness would work into things - if I could keep up. But everyone was very understanding and accommodating, and even though I stay away from very visually-demanding work, I know I belong here.

That being said, it is objectively more difficult to create content/write code for Trixel Creative because of my blindness. There are times when I have to stop, because of a migraine or because I just can’t see what I’m doing. I also generally take longer to do things, because I’m handicapped by a screen reader and the aforementioned headaches. But that’s okay because I’m with a team that understands. I’m able to say “No, I can’t do that right now” or take a break for a few days/weeks, and everyone knows I’ll come back with a bang when I’m ready.


Working on Restitched

I’ve basically touched every single component of Restitched’s code at this point, even if I don’t know all of it very well. It’s almost impossible to know every little detail of a massive codebase like this, though.

In terms of improving accessibility, parts of the upcoming Build Mode UI update come from some of my ideas. For example, having the game use screen space more efficiently means I don’t need to pan the Magnifier around as much to do things (sidenote: I have also written several of the accessibility tools I use to work on Restitched). There are also several dark color schemes in Restitched - one of which is actually named after me - that gives the game a nice balance between high-contrast text and a charming aesthetic.

The most complex part of Restitched I actually wrote myself would be the Prop Collision Editor and Prop Collisions. It’s a lot of math that I never want to fight with again. I also have plans to add text-to-speech support in the game. For example, to allow the names of level objects to be read aloud if you hover over them in the level editor.

I’ve definitely learned new techniques for sure, and I’m confident I could now write the foundation of a Restitched-like game in a completely new engine with no access to the original game’s code if I needed to. The way I see programming hasn’t changed at all, not even since I wrote my first line of code at the age of 10. It’s an art form, it’s a creative expression, and it’s my only true outlet as a creator. It’s second nature for me and it’s just what I do.

I’m excited to create the tools you guys will use to build amazing levels, and I’m excited to develop the other tools that let you share them.


Outro

This was the very abridged story of my journey to become the lead programmer of Restitched. But, remember that hacking game I mentioned I always wanted to work on? I never stopped trying and I'm still working on it to this day. It's called Socially Distant, and has a story loosely based around the COVID-19 pandemic and the state of society and the Internet at that time. Just like Restitched, it's coming to Steam on Windows, macOS and Linux. Development is far earlier than Restitched, and my blindness definitely doesn't help me visually present the game, but it'd really mean a lot to me to share it with everyone out there and for people to check it out. It's always been my dream to write, program and publish my own hacking game. You can check it out and follow development on the game's official website here. I also have my own personal blog where I occasionally write about the things I do on my computer and, going forward, what it's like with my disability.

Michael's personal blog.

And, if this diary has you tearing up, then please don't let it be for a negative reason. Not only am I not upset that I'm blind, even if I have days where it frustrates me, but there's light at the end of the tunnel. Thanks to recent medical research and clinical trials in the United States, a treatment for my condition has been developed. It has been approved for federal funding by the Government of Canada, and recently approved for funding for ten eyes in the province of Ontario. Before this article goes live on trixel+, I will have already had both of my eyes operated on and treated. I will still come out of the OR with the same legal blindness I have always had, this is not a cure, but it will stop the degeneration of my condition. It's my hope that Restitched is seen as a success story for this treatment, so that future children with this condition have full access to it as well.

I want everyone reading this to remember two things: Disability isn't inability, and never stop dreaming and creating.

Files

Comments

Randall

This was wonderful to read! Very glad Michael is able to keep doing what he loves.

Anonymous

Extremely inspirational