 Hello, everyone. It's really good to see you all. It's probably been a bit of a long day of talks because I know it's in the afternoon right now, so I'm really glad you could come here to see my talk on narrative-focused video games development with RenPai. So just before I get into the meat of the talk, I'll just quickly introduce myself. I run Quill Game Studios and it's a small studio and I really bootstrapped it, so I took on the role of the software developer, the game writer, the project manager, and marketing, et cetera. In terms of my full-time work, because I actually do the video game studio as a hobby, I do Ace, which is a machine learning livestream YouTube channel, so you can actually find it if you search Aggregate Intellect or AISC, Machine Learning Livestreams on YouTube. It has around 11k subscribers and in my full-time work, I work as a senior data scientist and I use Python, so I'm very excited that I'm able to use Python for both my hobbies as well as my full-time work. Yeah, so that's like an old picture of me. I just have it because I'm eating a panipuri, which is, I believe, like a street food in India. So I'm based in Canada, but yeah, sometimes my coworkers took me to some places and I could get that. So I started this game project around end of 2017, but I feel it has been longer. So it is creating the game, designing the game, and there is game writing as well. So I wrote the story first before I started coding it in Python. So it actually has been a really long, long, long journey, but I want to share in this talk how Python helped me and how Rampai, this open-source engine, has helped me. So just to take a quick look at the end product, it is a game called The Summer with Ashiba Inu. It launched last year on Windows PC, Linux, and Mac, but then I did a console launch this year, and it's actually sold fairly well so far, and I'm really glad that I was able to use Python and the tools that were built with it to be able to generate a little income with a hobby. So the overview of the talk is going to be three parts. The first, because I understand that not everyone might come from the gaming background or gaming industry, I'm going to give a bit of an outline, so please bear with me on that part. I think it will really help understand why Python could be good for games as well as an overview of the industry in general. I'm going to talk about the specific subset of games that I can make with Rampai because it's not going to make all types of games, and then I'll go a bit into the source code as well as different types of design decisions in the Python-based game engine Rampai. A little bit of an overview on platforms. There are, I guess, the main computer OSs as well as consoles, so I launched my game on all of these. There's Windows, Linux Mac, Nintendo Switch, Xbox One, and PlayStation 4. The gaming industry is fairly big. It has all of these, but then it also has mobile as well, which is another huge, huge, huge industry, which I personally am not that familiar with, so I'm not going to really go into that. I did look up the console gaming in India. It's fairly large. It's very popular, and the head of Sony PlayStation, and this is just one of those consoles claims that around seven to eight million people play on the console quite regularly and then even more own the console in the first place. There are some different types of studios, and I'm going to walk through this because I want to come at it from a developer perspective, like kind of flipping the mindset of when you are playing the game as a gamer to the studio who is developing it, because that is kind of the core of this talk. The first type of studio is commonly called AAA Studios, so they are huge. They have funding. They're kind of like movie studios, in a sense. They could have millions of dollars USD in funding, as well as they ship very, very popular games. I looked up what's popular in India, and I think FIFA, the last of us are heard of or known in India Overwatch as well, and Assassin's Creed franchise. So these are made by companies Blizzard, Naughty Dog, Ubisoft, which are huge. They have millions in funding, and they usually sell millions of units as well. So when you think about it, one game in the US could sell for 70 USD, and they could sell millions of copies. So they make a lot of money, but their spend is also a lot, because they could have from hundreds to thousands of game developers on their payroll. So this is one type of gaming company. And I want to contrast this with a popular kind of way of making games nowadays. It didn't used to be so commonly seen. Indie studios are small, and it's short for independent. So these are usually studios that don't have a huge budget like the AAA studios I showed you just before. They could be made by one person. They could be made by five to ten people. But then all the games I showed you actually starred you Valley. It sold millions of copies like in the first week. So the guy who made it basically became a millionaire in the first day. So these stories are very inspiring, and it also shows that it is possible to get into video game development as a solo developer. And some indie games have a large budget or relatively large budget. So it could be ambiguous if they are AAA or if they are indie. So I know that PUBG is quite popular in India, and I just heard of some news that they had also a eSports team that recently signed on to a very popular eSports franchise. So games like these, they also have millions of players. But yeah, it's kind of like their team is smaller. They're not as big as Ubisoft or something like that. So there could be some ambiguity in it. So just to take another look behind the curtain before I kind of go into why I could use Python to do things like this, it's just to take a quick look in other roles in game development, right? Because it's not just a programmer that makes the game happen, right? Because I program in my full-time work. If I was just programming and the game could magically appear, then I would be happy. But actually, no. I had to outsource the art because I cannot do art myself. I'm a very bad artist. But when you think of games like Pokemon, right, you don't really think of, oh, what's their like engine running on? Or you don't really think about the physics in their code. What you might come to mind as a gamer is really the art style. So it's not only the programmer in the games industry that is important in creating a distinct game, but rather a lot of other roles like the writing or the art as well as the producer. So the producer is kind of like the director in movies in case that term is not that familiar. They're usually the ones who tie everything together and have some sort of high-level direction. But they're not necessarily doing the programming themselves. But those roles are absolutely necessary. And they're actually built as very, very high up in the credits in games, just like directors of movies. So there's a lot of roles. But of course, I'm going to come at it from a programmer perspective. However, just letting you know what I learned during the process that, okay, a lot of these other roles are absolutely crucial or the game will not really be shipped. So yeah, I have talked about the AAA studios, which has millions of dollars in budget, which I as an individual, I don't have. And aspiring game developers probably don't have either. So I had to enter it through the independent development portion, which means low budget, which means using open source tools. And Python is one of them. And I already used it in my full-time job as a data scientist. So the learning curve was slightly less. But it's a bit different, kind of a different type of mental model to use than data science. But it has the great documentation. And also, you have to think about game objects as object-oriented programming. So that's really helpful to be able to make that cross into the indie game development. So I'm going to talk a little bit about the specific types of games that this engine is going to use. Because before I have mentioned some games like FIFA or something or like Overwatch, and those could be 3D games, and they are like, let's say shooting games or like planning, like running around and kicking a soccer ball, that you will not be making that type of game in RemPy. That would be better handled by other engines like Unreal Engine or Unity, which I'm not going to cover here. So I'm going to just narrow it down what RemPy is doing. So narrative-driven games are quite popular. I bring up an example that's not a video game, but it's a popular series on technology, like a sci-fi technology TV series called Black Mirror. And they have this kind of video where you can make choices, right? You can choose to accept an offer, you can choose to refuse, you can choose to like jump out a window, you can choose to not jump out the window. And then after you select that, the movie will go into a different direction. So this is kind of a narrative-driven kind of narrative design, in a sense. That can be done in movies, books, games. So I bring up some popular examples of games. Like this is a very, I guess, famous game series called the Nonary Games. And this is like a murder mystery where people kind of kill each other, in a sense. But apart from the mystery, there's a lot of dialogue because you see on the screen, there are so many characters. They all get to know each other, get to see what each other's weaknesses is, but that's all conveyed through dialogue. So you can see at the dialogue box below, like these games are very popular. I would say it kind of started in Japan, but like these are very popular in the West. I'm not very sure how much this particular series sold in India. I couldn't really find that info. But even in US and Canada, it's extremely popular. And so are games like the recent Persona 5. You can see there's a lot of dialogue, even though there are some other types of gameplay, like fighting and stuff like that. But in between, all of these are dialogue and narrative-driven. So these types of games are the types that are suitable for Rampai development. Another example is Danganron, but which is also very popular in both the West as well as in Japan. And the thing is, the three examples I've mentioned, they are more like AAA. They have custom game engines. They have much more developers than I could afford to hire, despite being one myself. So they have a lot of resources, but it's hard as a solo dev because it's costly. So I just wanted to, actually, I eat these Parle G cookies a lot when I was working at the office. Now I work from home. So I wanted to convey this feeling where, oh, it's like, wow, there are so many games you could make. You could make a custom engine, right? But it's just too expensive. I can't do that as an independent developer. And I'm working full-time. How do I have time to do that? Right? So it's like the feeling when you are dipping it in Chai and then it just falls off. And I'm like, I can't do it. But I discovered Rampai, which makes me feel better. And I was able to do all of those things that I thought I couldn't do before. So now for the remaining of the talk, after we have now kind of gone through the gaming industry, the types of gaming studios, and why I was able to join gaming in the first place as an independent developer, right? Because it seems very hard. I want to show how Python and Rampai helped me do that. So Rampai is open source. It's totally free. It's royalty free to use, right? Which kind of fixes that problem of the custom engine. But you also want to think like, okay, it's not a custom engine, but can it actually be flexible enough to do everything I want to do? Can I make high production things? Or is it like drag and drop without a lot of customization? No. But that's not the case. So from Nano Reno. So Nano Reno is kind of like a one month sprint where game developers get together to make this kind of story driven, narrative driven, visual novel types of games. All of those mean kind of the same thing. I just bring them up because you might see them in the news or in popular media. They use all those terms interchangeably. So from these like one month sprints, which are just for prototyping or MVP, minimal viable products to very, very high budget games. And you can just find it on GitHub, the engine, as well as they have a site where you can download. Yeah. So from Nano Reno games to very high budget games you can make with Rampai. And the creator's philosophy is he wants to make the best way to make visual novels and give it away for free, which is what I would say he did. And it's open source. So you can actually make podcasts and he triages them and he merges them sometimes. So yeah. And object oriented programming is standard in game development. And I'll explain a little bit more on that. But namely it is helpful to use Python because I guess before, right? Because the popular gaming engines like Unreal is, I guess you can use C++ and Unity, which is another popular one, is mostly based on C sharp. So one might think, oh, okay, I know Python. I like Python. I'm not sure if I could make games in it. But yeah, it's not the case. It's, it's all OOP. It's all very standard in game development. So you don't really have to worry about apart from the kind of 3D part aside, the design choices and stuff are very similar. So I just wanted to bring something really quick. As you can see in the code to the left, I'm not sure if you can see it. Rampai actually, apart from just normal Python, it also has a lexer. So that just means it reads this kind of more human, human friendly language into Python code at the back end. So then what, what this means, what it does is it's a bit more human friendly. So like Python knows that a lot of non-programmer people might want to make games, right? Like if you're a game writer, if you're a game artist, maybe you want to program your own game. So he actually made this in the engine. So sometimes if you see the code I show later, which does not look like standard Python, it's because it's actually converted to Python in the back end. And then you're able to use just some more machine friend, human friendly language in it. So I want to showcase some of the capabilities of Rampai. The first one is an example with Doki Doki Literature Club, which is a game that's been downloaded millions of times. It's kind of become viral. Like there's tons of videos, like Twitch streams on it. There's even people who make mods of it. And it's a visual novel game made in Rampai. So you can have a lot of visual effects in it, not just this one, but this is just an example of kind of the way the developer made the game creepy. So it's like a creepy game with jump scares. So things just show up on the screen and they kind of shock the player. So these are all things that might seem familiar to you. So a lot of the visual effects are actually implemented as classes. So in this source code, I hope it's big enough. But basically, all you need to know is that there is an image-dissolved class. And this is just one of the many, many visual classes there are. But then you can actually just define a sort of transition image file in there. I hard-coded the path. But as you can see, there's a lot of customization that can be done in the class. You can even modify the class itself to create different visual transitions. So this is just one example. So hopefully, you can see the image as well. So it's like if you have a transition, you can create animations like this and much more. And they're just all in your very familiar, like, Python classes. That's how they're implemented. And actually, for me, when I looked at it, I was like, oh, this is familiar. I know how to do these. Just to show another type of game that is made in Rempai is it can capture really complicated variables. So this game is called Long Live the Queen. And it's a strategy game where each day you do different tasks. Like, you're like, oh, I need to train this princess figure to study books or study law or should she go horse riding or something. But it's like extremely complicated. It's like a super complex strategy game. But then when you peek into the source code, like all of these trackers, they're just like all being captured in the Rempai and Python in the back. So it's like able to create these extremely complex games and just like evaluate them as the player is going on. So here, it'll say like, oh, your stats are not high enough, you're going to fail or you're going to lose and you might die because you didn't do like the right combination of things. So it's able to capture these very complex player interactions as well as complex player strategy and respond appropriately. So I think that Rempai is able to create very, very complex logic in the game. So actually, there is like something pretty interesting, which is it has a 3D camera now. So it's kind of like 2D 3D. It's like you have 2D characters in a 3D environment. And then you can kind of pan the camera around for more animation options. And this is fairly interesting. I personally have not used this in my games yet. But I really enjoy that just an open source engine can have this kind of functionality. And like I'm honestly very grateful because it allows one to create very flexible types of games. So one last example I'm going to show is that, okay, you might think that, okay, these games kind of start to look similar like they have a dialogue box at the bottom, right? But actually, you can just change it however you want because these dialogue boxes, they're actually just like menu classes, which is, I guess, a familiar way of thinking. Like you can just inherit them, change them how you want. Like it's really, really flexible. So I really do enjoy that part of Rempai because you can make the game really look high budget as well as customized. Yeah. So in my own game, I'm going to show a little bit more of the, just like the basics of the code and high level how I did it. So here is when a player makes a choice. You can see there was like two choices to select and then you wait and the player might read the choices, think about it, because the choice will actually impact the story's ending. So they will take some time to think about it. But I was like, okay, I'm going to make a timer to just like tell them how much time they took to make the choice, as well as create some random dialogue after that. So it doesn't, so it'll say like, that took some time. So this was done in what you can see is very familiar and even basic Python syntax, right? Just import random import time and it's in the game. Well, not exactly that simple, but like this is stuff that you might be like, oh, like this is any anyone who knows even a little bit of Python could do, right? So you just have start time, get the time. Yeah, you just like subtract the time and it takes, you just there you have a timer in the game of how long the player took to make the decisions. And there are some other fun things that I did as well. So you can use just like decorators and everything like stuff that you're totally familiar with in Python, you can use like format string, another thing you're super familiar with. So what I did was you just to make the dialogue not seem so stale or repetitive, like it's not like every day, every time they're saying, good morning, good morning, good morning, it's like, oh, good morning, or how are you so you just import random and do just like pick random one out of these strings. So that every time they will say different things. So it could be like, hmm, or interesting, or wonderful, but not always like the same thing, not like, wonderful, wonderful, wonderful, right, it kind of gets boring. So this is just like very, very simple Python code, as I'm sure you can all easily understand and have used before. But actually this what this does is it allows the game to have a little bit more interactivity with the player and the player is able to notice these small things that you can implement. And these are just the most basic examples that I showed. There's much, much more. But I wanted to kind of show that game development is not as mysterious as it seems to be, because that's what I thought at the beginning as well, I was quite intimidated by these AAA studios, their budget, as well as the graphics, right. So there we have it. You could easily remake this is one of the examples I showed earlier, which is not a video game, but it's a movie, which you can select choices and change all the outcomes. You could actually make it in Rampai as well, you could remake it. And there's another tool called twine, which is a bit different. But on the screen, I think on the behind the scenes, they actually said they used twine, which is also popular with Rampai creators, not not for coding purposes, but kind of how to sort out the story. Yeah, so your imagination is the limit with Rampai. I've showed a lot of examples of how flexible the engine is, and how you're able to make changes and make the game really feel like your own, as well as have a lot of types of animations, even though it's not exactly 3D graphics, which are more expensive and more resource heavy, in which I would use the other game engines. But for these types of 2D narrative driven games, I would really suggest to use Rampai. And even though it's open source and royalty free, and that's not a bad thing at all. Like in fact, I'm so happy that it is, I was able to afford to make things like this with existing skills in Python. Awesome. Yeah, so if you want to check this out, you can definitely go to their GitHub Rampai, and you can check out the repo as well as my game, a summer with the Shiba Inu. But I want to encourage you to check out all the other games that I have listed before as well. So if that kind of interested you and you're able to kind of have an idea of a game and you want to make it in 2D and have some story driven choices, definitely just go download it and check it out. So you can contact me at these places. Yeah, so thank you very much once again for coming to this one of the last talks of the day. Thanks a lot. What a great talk. So we have a couple of questions that depending on time, we'll see how many we can take. So the first question we have is, is Rampai and Rampai 3D different modules or just sub-module? Actually, that's a good question. I'm not extremely sure, but I would say it's a sub-module because I think they're not separate. I think you might have to download. I don't know if they connected a third-party plugin, actually, because there's another thing that I know called Live 2D, which is actually a third-party plugin. But then I actually forget if the 3D camera itself is one of those. But if anything, you're able to kind of get it in the same development environment, I guess. Yeah, so I'm not personally sure what the exact difference is. Yeah, there's a lot of integrations. So mostly I work with Rampai that is kind of by its own. But then Rampai Tom has made some third-party integrations that I've mentioned with the Live 2D, which is a separate thing. So that is possible. Yeah. Yeah, there's another question. Any good open source tools for creating anime? Ooh. So actually, for this, I have in the process of finding artists for this, there are some free art tools that I have found that are popular. One is called GIMP, G-I-M-P. So, well, the G, I think, actually stands for GNU. So, I mean, it's open source, as you can tell. So, that is one really good tool. And a lot of very, very skilled artists, like it's almost comparable to, okay, I don't want to make claims because I'm not an artist, but I hear it compared to Photoshop itself a lot, which is like super expensive. So, I would suggest GIMP for making anime art. Yeah. Awesome. One last question. What are some good tutorials, references for RemPy, for someone who is just starting to learn or getting to game development? Ooh, yeah. So, actually, the RemPy distribution, it comes with a set of tutorials, which is very, it's kind of like a mini game, which is a tutorial. So, it's very intuitive. So, I would suggest literally just downloading it and then it actually has all that stuff in built. And it helped me a lot. It is a very well-made tutorial. Like, it even has the source code as the animations are showing up. So, kind of how I showed you. So, it'll have like the visual display of what will happen. And then it just has the source code right there. So, I would really suggest like its own tutorial very first. And the documentation website is also very robust, which is, yeah, I guess very in line with what the Python community is generally. Awesome. Thanks a lot, Susan. It was a great talk. And I see the chat is flowing with the same thing. We really appreciate it. And have a good day. Thank you.