 Hi, hey, hey, nice to meet you and I will shut up now that you get started. All right, cool. I will share my screen real quick and I need to adjust these things. I had a minor thing with my external camera. So hopefully everything can see cool. All good. All right. Yeah, we have we have slides. We have video and your voice is extremely clear. Awesome. Awesome. So thanks so much. I'm really excited to be here today. I'm going to talk about narrative focused video games development with RemPy, which is an open source engine. I'll introduce a little bit about myself real quick. So Game Dev is my hobby and I guess where my job I work as a principal data scientist at ClearCo. I'm also a contributing member at the Python Software Foundation make some I guess like open source contributions here and there. I've also spoken about Game Dev with Python at like on US, Canada, India and Taiwan. So now I'm here, which is I'm really excited to be here. So now about the Game Dev in Quill Game Studio. I am the only developer. Hopefully that will change, but so far that's in the case. I'm also the only producer, the PM, the writer and marketing sales and so far everything else. I did start to contract higher contractors for writing, but previously that was all the hats that I had. So in 2017, I had an idea for a game. I like gaming collect maybe too much too many games. I had this idea. I wrote it out and I was like, I have the story now what? I found RemPy and in the middle, there was some other stuff I experimented with like, I guess like JavaScript, but then like in the end, RemPy was the way for me to get my ideas from paper to an actual game. And I shipped the game and it actually sold around 10K copies in the first X, I guess like two quarters, one and a half quarter. But first I'm going to give a little bit of an overview of this talk. So I will talk about the gaming industry a little bit just so there is it kind of clears up what kind of game dev this is and talk about narrative games, which is I guess like another subset of the games. And then I'll talk about RemPy and the kind of interesting parts about the Python development and stuff like that. Okay, so there is a pretty large market in gaming and of course we know there is a different platforms. There is like different computer OSs and consoles, right? Like Linux, Mac Windows, Nintendo Switch, Xbox One, PlayStation 4. There is also mobile, which RemPy can actually export to. But because I didn't do that for my first game, I won't talk about that too much. I want to make the distinction between very large companies. So companies like Ubisoft, Blizzard Activision, who make games like FIFA games and Assassin's Creed games, these are ones with millions of dollars in budget, but also kind of like thousands or even hundreds of thousands of people working on them. So these are like the Hollywood movies but for games, right? There is often millions of dollars in budget. You have Call of Duty, which had like 250 million in development and marketing costs and so on and so forth. But there is another kind of way to make games, which are indie games or which are short for independent games, right? Indie studios are smaller. There are, you know, like less, there's less budget usually, but we can see for very popular indie games like Stardew Valley had, I guess the, when it first launched, it was primarily built by one person and Terraria is also an indie game that a lot of people have played, which was made by a small team. Baba is used also like very small team or one person creator. But these games have sold like millions of copies, hundreds of thousands or millions of copies even with a small budget. And of course we have some studios which are in the middle. They're kind of ambiguous. They have a huge player base and non-trivial budget like PUBG, but I guess because they are a smaller team, I've seen them refer to as indie games as well. So I guess there is this kind of gray area in between. So I wanted to make that distinction because like, I guess for people that are starting out and trying to make their own game like myself, I would put myself in the indie category for sure because I do not have 250 million like sitting around, right? So I wanted to make that distinction of like the games that a person starting it as a hobby would be making. So second of all, I want to dive deeper into this kind of narrative driven games. To start off, I want to put forth a more of an experience which is the Netflix movie Black Mirror. So it is a movie, but at times in the story, you can kind of choose to do one action or another. So like do you jump out the window or not jump out the window? Do you accept his offer or you don't accept his offer? When you select this on the browser UI, it actually plays another part of the movie. So the ending of the movie or like the stuff you go through during the movie changes with your interaction with the movie. So that is one of the narrative driven experiences. That's not necessarily a game, but kind of a similar concept of like narrative that I wanted to put forth. A second example is this series called the Nonary Games or one of the games is called 999. So they're pretty popular on the, I want to say like the like the Nintendo DS or earlier. So they're fairly old games. So it's a murder mystery battle royale type of situation where you are with a group of people and people keep dying and you try to solve mysteries and solve puzzles. So a lot of the gameplay is through reading these like dialogue that happens between the player character and the other characters. So you are experiencing the story basically through a ton of reading. That's fair to say. There's popular games like that, but then even more modern games like Persona 5 also has a lot of story exposition and dialogue that's conveyed through these dialogue boxes and games like this. They do have another gameplay portion, but they have a huge amount of these dialogue that people really remember them for like people remember for sona 5 for these stories and these stories are well known and they have sold fairly well. Another example is Danganronpa, which is another I guess like horror battle royale. I don't know people just kill each other type of situation, but you can see that a lot of the tenseness of the situation is conveyed through these like dialogue between the characters. So I want to say that like I've went from yeah, it's narrative you influence the timeline you influence the events to kind of a broad way of referring to this kind of game is visual novel. I want to say this is a very broad term right there is technically visual novels that have a lot of other types of gameplay, but I just want to make it clear that clearly this is not a first person shooter or a MOBA game right or a strategy. Well, there are strategy game and visual novel right, but you can kind of start to clearly see the traits of this type of game and they are quite commonly seen as well. And yeah, if you've never seen a game with some sort of dialogue box and all the narrative delivered with the dialogue box. Well, I guess older Pokemon games as well as newer Pokemon games you will you will know. Yeah, but the games I've mentioned previously they were a lot of them were custom built right because they do vary from smaller teams to larger teams, but they're usually they have their own engine. It's difficult to do that as a indie developer because I have I'm one person and I'm not going to build another engine. So that's where Rampai comes in Rampai Python Python love Python helped me enter independent or indie development and I already used it in my full-time job which is like data science and ML. So I'm already have some familiarity with it. And as folks in the community know it has good documentation and you know if you can't find the documentation then there are people who will respond to you when you ask things and it's you can make it like object oriented programming if you there's there's just ways of designing things in games that are mostly OOP. So even in other languages that are used in game development they can be done like philosophically in Python as well. So this is an open source engine. It's been used to make stuff from Nano Renault games. Nano Renault is like a month long kind of like hackathon or game jam as we call those hackathons in game dev world. So like various short sprint low budget games to high budget games as well. And the creator Python he mentioned his philosophy is he wanted to make the best way to make visual novels and give it away for free. Yeah. And as I mentioned some other engines typical in game dev like Unreal Engine or Unity Unreal uses C plus plus Unity uses C sharp and a lot of the design patterns are transferable. Okay. So I wanted to mention one quick thing here is that I mentioned I said that Rampai is beginner friendly even for people who are not as familiar with Python there is one thing that Rampai does which is that it has a lexer in the back. So there are some things you can see in the left screenshot that they do not look like Python like what is this ad thing and this image button thing. But I have to say that for the most part for stuff like the script right because you saw that in the dialogue you have like dialogue one dialogue to dialogue three it's very annoying if you have to look at all of that with all the brackets. So I find that having using this kind of DSL or domain specific language syntax in the Rampai it does save a lot of hassle of especially the script or like the kind of screen direction of the characters going on and off screen for example you don't have to make sure all the brackets are there and all the methods and whatever it will parse it in the end. So for some things it doesn't look like Python but it is helpful to do so for practical reasons. I'm going to introduce some of the functionalities in Rampai to just kind of like give some inspiration. People might have heard of Doki Doki Literature Club which is a visual novel that actually is four years old as of today I believe and it was a well-known a horror novel that has been downloaded like millions of times and I believe the sequel has also been purchased millions of times or I don't know hundreds of thousands of times at least you can create effects like that. This is a very basic example of like transitions but you can do like weather effects or some other types of animations as well. Other folks have mentioned Pygame and I guess if for folks who are curious how this relates to Rampai Rampai is kind of built on top of Pygame which is a very popular or I guess the most well-known game. Module or a set of Python modules for writing games it also uses SDL simple direct media layer which is written in C but is also usable in Python but one interesting thing I want to mention is that Python the creator of Rampai actually I would I think he like forked it basically so that he could add SDL to compatibility. He forked SDL to because I think Pygame still uses SDL the original one so in order to give Rampai users the ability to use the updated SDL. He has also made some modifications for Rampai in this situation. Yeah and previously I added this like very brief one-liner example of like a transition this was when I was at Pycon US and I did this just like using a PNG to make this transition basically like in normal games you don't it's not going to look like this but I just wanted to show a very simple example of like this one-liner animation. Cool and there's some other functions I'll go through namely I guess like for this I wonder if the GIF you can see it well this is a game I'm working on but it to add parallax in Rampai parallax is just like you know if you have math modules right like you can just calculate the distance and then kind of like a viewport and then switch like the the user's viewport based on your mouse movement so if it's not super clear in this GIF it's like when you move your mouse you kind of like look around so it kind of spices up the 2D aspect of these games quite a lot as well with some parallax this is another one I don't know if you folks can see the video okay I think you can this isn't yeah this is the game I've been working on as well so you can have a script to kind of like move around the camera and then kind of like zoom in a bit as well so there is much more that I've been doing with this some 3D camera script so like you can go up down go close crane it in Dolly in so to speak those are doable once like let me go next yeah so this is the way it's currently implemented in Rampai grab this from the documentation it uses yeah the matrix coordinates to find out the positions and like the view point so I've talked about a bit of these like animations and ways you can position things the next thing I want to mention is I guess just like you know if programming and Python like yeah keep track of variables you can track very complex interactions with game state so this game is called long live the queen I guess it's like fairly well known in like the independent circles and you have very complicated variables which could determine if you die or live and you have to raise the statistics of your player character by training her to survive and I guess another thing I wonder if we're kind of cutting short on time but like there's simple stuff you can implement which is just like if you know Python you've done import random import time right so I wanted to create a timer to tell the player how long they took to do an action so then I was just like well create class define methods and get get started yeah so this stuff you can go from like brain to keyboard to game brain to keyboard to game yes yeah so you can see you know things are familiar with like decorators and like what not to create this is how I created like random dialogue so it would pick from a list of utterances it's like interesting whoa like instead of just saying like hey hey hey like each time right to kind of like make things a bit more varied here so yeah the out the outcome would be like a timer that tells you the time it took for a player to do something and then like kind of varied dialogue based on the situation so that's all doable with like you know the normal control flow and things like that in RemPy right if you have done Python control flow your can you're good to go I wanted to show some other screen customization things here yeah so there can be like pretty varied UI you can customize the UI quite a lot as well because like these things are just like yeah like there could be a class for your menu item and then you can just customize it as you wish and use them as you wish and they will be fairly just like reusable in good in good design practices yeah so I guess you could easily remake stuff like Bandersnatch in RemPy and things like very complicated things like like this this is another tool called twine that is like it's not really it's not the same at all as RemPy but I know people commonly use it to make these flowcharts and actually the Bandersnatch developers had used this tool called twine to create these branching narratives but a lot of RemPy developers I know they have also used this too so yeah I would say your imaginations limit well okay just don't try to use it to make a first-person shooter or like some other things that's like very 3D yeah 2D narrative focused games are good to be made with RemPy and you can make fairly high production quality stuff with with RemPy I would have to say yeah and based on the design philosophy of RemPy the creator has said you know he wants it to be new programmer friendly and also flexible for seasoned developers actually maybe I added this at the second point I think that it is fairly flexible if you want to modify anything or add any functionality because yeah there are some of the functionality that I have shown you that did does not come out of the box but with Python and some imagination they can be done in RemPy so thank you Python I think your vision did come true as well as like all the other contributors to the open source project yeah so with RemPy made my first game right now I'm in the process of making my second one so I'd encourage you all to go make your story driven game and here is where you can find me my studios close studios but I also have a personal Twitter or LinkedIn for I guess it's more like which is more data science focused and yeah thank you so much everyone