Hello there! I just realized that this thread was a thing, and that even though I have been here for a really long time, I never really said who I was except in small segments on discord.
I’ll try to present myself properly this time.
My name is Joël Lupien. I’m 20 and live in Canada.
As a Canadian french, I like poutine a lot.
Wait, I got the wrong presentation sheet… paper noises
Ah, there we go!
I have been passionate about making games for so long that I don’t know when it started. All I remember is that each game I would play when I was a kid would get boring after a while or had flaws. I had ton of ideas to fix the games, or make them more enjoyable, but in the end, I didn’t have the skills to do it (I was ~10 years old I think).
I was bullied most of primary school, so I spent a lot of my time inside playing games, as a way to relieve the pain and feel better.
Nothing happened much until I got 13 years old. At that time, I was in high school, and met a lot of good friends, which inspired me a lot and helped me grow as a person. One of them, in particular, really pushed me towards making games. We would spend tons of time creating plans and ideas for a big mmorpg game. In the end, the ideas were flawed and incomplete, but I still kept the sheets as a relic of the past.
This was also the time when I started to program seriously. Doing a bit of research made me realize most game were using c and c++, so I decided to learn c. I spent many hours on “siteduzero”, now called “openclassrooms”, learning c and making a really basic 3d games.
In the end, segfaults got the best of me and a tip from a family member who is a professional (non-game) programmer pushed me to java the same year.
From there, I would learn everything I could by myself, one day after the other, slowly making more and more terrible code, and taking breaks to play games, which would fuel even more my passion.
The first game I did was called Endless Worlds. It was meant to be a procedurally generated 2d platformer.
The first version was terrible. I didn’t understand how inheritance worked, so I would extend all the classes from one another to get the right access permissions to the variables.
After a while I realized how bad it was, and decided to rewrite it. From there was born Endless World v2, which was a bit better quality wise and had more features. Mainly, it had a level loader from xml files.
After that, I entered the first “Oriented Project” class, which is basically a way to make kids find out what they like in life by forcing them to work on a project of their choice. The actual time to make the project was really short, so I ended up doing a graphical True/False guessing game about career information.
The program wasn’t really pretty, but I got really good feedback from my peers, which helped a lot gaining faith in my skills.
Then we had the second class, where we had almost a year to make a project. We had to make a timeline, a feature list and progress reports. (remember, this wasn’t a programming class, I was one of the only 2 doing programming, and the other one happened to be my best friend which wasn’t in the same class and is still my best friend to this day).
Fun fact, I am never of the same opinion as my best friend.
Anyway, I ended up rewriting Endless Worlds from scratch, once again. This time, however, I did it properly. With a timeline, design documents and feature lists, I was ready. The game ended up complete a couple of weeks before the deadline, with networking, a level editor, a dynamic level loader, basic ai, a “not so bad” ui, a skill system and actual gameplay.
The code is available here, if you are interested https://github.com/jojolepro/endless-worlds
In the same class, something truly amazing happened. It may seem like the most usual thing to anyone, but it was a life changer for me.
At the very end of the class, we had to do a presentation in front of everyone, showing the project we did. I was extremely shy at the time, barely able to speak in front of more than 5 people. Imagine when 100% of your grade is based on it!
The teacher had a really creative way of forcing students to do the presentation. At the start of each of the day dedicated to presentations, he would only say: “Who wants to present today? If you don’t do it until classes end, you need to come during the summer.”
The second last day of presentation, I knew I should go, but was too scared when he asked. When he said the timeline to decide was up, I started crying and rushed in front of the class to ask if I could present now. Guess the answer?
“No, you had to decide before. Do it next class”.
That’s what, in the end, made me learn how to take decisions, and that being shy will rarely bring good.
At the last day of presentation, I went first, presented well and was way more comfortable than in any of my presentation I ever did in my entire life.
Around the same time, that year and the one before, (14 years old), I got a permanent disease called diabetes, which isn’t really nice. ^^
And a month before that, the only girlfriend I had ever (even to this day) quit me, though I knew she would do it because I was shy and because she was known to jump between boyfriends a lot. That still affected me a lot, especially when I try to trust other people. So, don’t take it personally if you meet me and it takes a while before I open up.
From that point, almost each year brought bad things in my life, which I had to fight through, but I’ll spare you from reading that mess. tldr; more trust issues, usually cause by people of authority, like teachers and stuff.
Let’s get back to programming, its a good way to not deal with all that
At that point, I started working more seriously on projects. I wanted to make a fps, so I learned to use the JME3 engine, in which I wrote a custom networking layer. The game ended up being nothing more than a prototype, but it had most of the features a modern fps would have. I was also working on another project in JME3 called “Lifer”. This actually didn’t go anywhere, because it was your stereotypical “I’ll code everything in the world”. In the end, it ended up having only terrain generation and a tree/forest generator.
I eventually gave up on both projects. The fps project is available on github, it is called “Back2Life”.
After all of this, I entered college. I was 17 years old. There, I was in a computer science program. I met a lot of very funny people, with some that were very talented. I saw everything. Talented people who quit due to lack of interest and overconfidence. People who were bad but became very good by their efforts. People who are maybe not that great at code, but who are very good communicators.
In the end, those were truly the best days of my life (except when bad things were happening, because those never stop apparently).
During the three years I spent there, I worked on a lot of game projects. I did a ecs-based game engine in the Scala programming language, which I am a big fan of. I didn’t know what ecs was, so I kinda invented it, if you ignore the fact that it was a thing for already ten years.
Most game projects ended up being prototypes, or too big in scope, so most of them went nowhere. I still published the source for most on github, and made showcase videos on youtube.
In the end, three of those projects are still alive today.
World Digger, Drop your balls and HoppinWorld.
The two former were games I did where my only objective was to publish a game. At that point I have been coding games for 6 years, so not having anything publicly available was a big source of stress. Both of those games were made in under 30 hours, with unity, and published.
Both are incremental games which were meant to be a bit addicting, but short lived. And its exactly what happened.
As for HoppinWorld, I am a few days away from releasing the first public alpha version as I am writing this.
I initially wrote it for Unity, but I ended up rewriting it for Amethyst since then.
Let’s talk about Amethyst now, the actual subject you came for
I joined the project in September 2018, in my last semester of college. It was because I found the project that I gave up on the Scala game engine I was writing (ScalEngine, sources on github once again).
I learned rust in a few weeks, did a couple of bug reports and small pull requests (first experience with open source).
After that, I jumped in, and started creating the amethyst_network crate, because I still wanted to make my fps game project at that point. (Not so much now)
I ended up spending a couple of weeks on that, before it was finally in a working state. It then took a really really long time to get it merge, during which I learned the importance of code reviews. As you expect from someone who just started rust, I made quite a few mistakes! Eventually it got merged, and I got invited in the Amethyst core team, which basically gave you merge access and a cool purple name.
Then, the project started dying due to lack of progress and accumulated frustration of older members. Moxinilian joined at around that time, and with him we wrote a bunch of documentation explaining the general concepts of the engine, like components, resources, systems, etc…
We then published this as a major engine update, and advertised it as much as we could. To our surprise, this actually worked. A lot. The project doubled in size in the span of a week, then continued to grow consistently. We went from a mere 30 members to the 1100 we have today, at the time of writing.
Since I joined, I have been reporting issues, opening feature pull requests, proposing ideas and rfc, helping people on gitter(old) and discord and working on Amethyst and Unity based game projects.
Now, I am in University in cs, for another three years.
Amethyst is growing fast, and I hope it will continue this way, without losing the core values that it had when I joined.
This is just the beginning!
The story of my life, which I never told anyone, even in person. I hope this helps people who have a hard time understanding me and the way I react to certain events.
Thanks to everyone in this thread who presented themselves. It really inspired me to open up more.
(Please don’t reply to this in this thread, let’s keep it for presentations. If you want to reply, you can pm me on discord).