The Journey: Ep. 2 | Open Projects

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
♪ [MUSIC] ♪ I love this music, I didn't want to start. But it's time to start. [CHEMA] Hey, everyone. [CIRO] Hello, everyone. [AMEL] Hey, everyone. [CIRO] Welcome to the stream. Sorry, I love that song too much, it was like the best vibe to start. [CIRO] Welcome, everyone. [CHEMA] Yeah, it did. Welcome to the second episode of Open Projects: The Journey. I was going to say the wrong title. My name is Ciro and with me is Amel and Chema. [CHEMA] Hi. [AMEL] Hi, everyone. Thanks for joining us again on this live stream. This is the second episode, so we're at the beginning of the journey on the creation of this Open Project, this game that we are creating with your help. It's going to be a long journey, it's going to be roughly six months we predicted, so as I said, we are at the beginning of it. But you know, we made some progress and today, we're going to take a look at this progress. But first, I want to introduce the team again. And I want to start with Chema and Amel, Chema, you want to start? Okay, hi, everyone, my name is Chema, I'm a Creator Advocate. I don't know if some of you saw me in the forums on the threads, I was taking care of the UI... sorry, the wireframe and many other things, so, hi. [CIRO] Hello, Chema. And Amel? Hi, everyone, I'm Amel, I'm also a Creator Advocate. Today, I will talk about Scene loading, so you probably saw me on GitHub doing some commits there. And I was also replying a little bit on the level design and the greyboxing threads. [CHEMA] Ciro, do you want to present yourself? Yeah, so my name is Ciro, as usual. I'm Head of Creator Advocacy and I work with Chema and Amel on the Unity Open Projects, we all work from out of Copenhagen, so here right now, it's 6 PM. Actually, fun fact, shall we tell the fact? [CHEMA, AMEL] Yeah, yeah, yeah! [CIRO] You go, please. [ALL LAUGH] [CHEMA] Actually I think we changed hours, I think it's Sunday or Saturday night or something like that and actually we thought that we still had one hour. Right now it's one hour. It's a funny fact because, how do you call it, the Daylight Savings. [AMEL, CHEMA] Yeah. [CIRO] It changed in Europe but not in the U.S. We have this stream scheduled in U.S. time, and we thought we still had one hour and a half when we started setting up and then we realized, "Oh, no! We have to be quick!" And we were frantically setting up the stream. But here we are, seems like everything is working. So, let's start with it. The first thing I wanted to do, because this is the second episode but maybe there're some people that for them it's the first time that they joined the stream, I wanted to recap what we're doing and basically, what are we talking about, right? I have this thing I want to show you. First this video here. Who wants to present the project? [CHEMA LAUGHS] You can do it, Ciro. [CIRO] I can do it? Okay. During this live stream, we're going to cover the first project of Open Projects, so we call it, "Project #1" very simply, because it doesn't have a title yet. And we're choosing the title, don't worry. It's not going to be called like this forever. But Project #1 is basically an action adventure game and you're seeing the concept art on screen right now. The concept art for the characters, the concept art for some like environmental enemies, you would call them. And for some friends and NPCs. And basically, we built like a very, very short story and now we're making the game. We're making the game with the help of the community. What to say? What else to say? As I said, it's called action adventure, the protagonist is this character here. He's a pig chef traveling the world and basically, looking for like the ultimate flavors and recipes, cooking ingredients, and he travels the world with the help of this little phoenix chick that he has in his lantern, which is his traveling companion. And then we have, again, other characters, NPCs. He gets on this island and he's basically joining this cooking festival, where this chef on the right is kind of like the resident legendary chef and so he's joining the cooking festival to impress this chef. And to impress the chef, he has to produce like an incredible recipe that he doesn't know about so he's going to try and research into what to create with the help of the locals, which you can see here on the left. We call them, "the townsfolk" for now. They don't have a name yet. Did I say everything? [CHEMA] I think so, it's the new story, Ciro because last time we had the live, we knew that we needed to change the story, so if I understand correctly, this is the new story that we thought about with the community. [CIRO] Yes, we received a lot input and we changed the story quite substantially. These two characters that you see on screen right now, they're... they didn't exist two weeks ago when we made the last live stream. And obviously, that created some change in the plans, we got behind a little bit with art production. But we're catching up and I'm going to show you some art during the course of this live stream. [CHEMA] I think we have one of the questions that we can answer to... inform more about the game, so one of the questions is, "Will it be a third-person player or a first-person player?" It will be a... third person game, basically, so we will see the character from... the outside, not through his eyes, but we'll see the character through a camera that can orbit around the player. Just one second because somebody is saying that they hear an echo. [CHEMA] Yeah, I see that as well. [CIRO] Let's see if it's a strong echo. I'm just checking the... [CIRO] the settings. [CHEMA] Yeah. [CIRO] You want to say something else about the game? [CHEMA] Actually, no, I think you said the whole story. And the story behind the concept, in general, is that we wanted in this time that we couldn't travel to see the community, we wanted to interact with them more by making this game with them, looking at what they do, what are their challenges and help them and at the same time deliver to them later with some tutorials and some... I mean presentations about the subjects that they already created, I don't know if I made myself [CHEMA] clear here. [CIRO] Basically, you're saying the whole purpose of the Open Projects is to connect with the community and... Yeah, that's the plan, it's like creating this project with people not just us making it, which is obviously a challenge in itself, right. We're experimenting this process of... We have the forums which we're using as a collaboration tool and... there're so many threads, and in each thread, we discuss one part of the project and then people join different features and I saw a couple of threads and I want to show them later where people are actually collaborating with each other on one feature and working... on each other's code and it's super fascinating and really nice. [CHEMA] Yeah. [CIRO] Okay, where are we with the game? I want to show you just a couple of things we have. Basically, the character in the game right now, we have defined, it still works like this. Unfortunately, we don't have any animation. We have defined the look a little bit, as you can see, this is the toon shader on the character and on the environment. We have a Character Controller, fully working Character Controller and we're going to talk about the State Machine that powers the character during this live stream. And then on the art side, we have this thing here, which is another Scene on another branch of the game and in here, we're developing the look of the game, the final look, so as you can see, we have the pig chef, as a 3D character. The toon shader supports extra lighting, so you see here I was creating a light to show you the effect. We have one of the critters, the rock character to the right. It's one of the characters populating this island. And then as you can see, we have a few pieces of environment in the background. And I'm going to show you in the Editor later on this stuff. This is where we are. Again, the progress is still a bit early, right. As I said, we still have just the moving character and some art on the side and we're at the point where we're going to merge these two things. But I also wanted to show where to find the project. If I go, if I remove this video, you will see on screen right now what we call, "the Public Roadmap." [AMEL] Yeah. [CIRO] Chema, you want to mention what this is? I don't talk all the time. [CHEMA] Oh, yeah, actually, I wanted to show it... just one second, I don't know if... yeah, are you seeing me now? [CIRO] You want me to share your screen? [CHEMA] Just one second, I think, yeah, I will share my screen and then continue talking from there but... I'll just need one small second [CHEMA] and now we can share it. [CIRO] Okay. Let's go to the roadmap. As Ciro told you, we can see the advancement of our game in the roadmap. You can go check the Readme, if you want to read some documents or if you want, for example, to have the game flow or anything that you want to see that is happening. These are some cards that you can click on and they contain tasks that you can have, let me just click on one task. For example, this task is assigned to the community and that's why it has the blue icon here and it says that some people of the community are taking care of this task and you can go to the link in the thread and then discuss with people for later maybe propose a pull request or a solution to it. So yeah, this is how you can find information about the game. I don't know if you... if someone wants to add something about this. [CIRO] No, I think it's good. [AMEL] Yeah. [CHEMA] Okay, awesome. [CIRO] Move back to the... [CIRO] to our cameras. [CHEMA] Yeah. [CIRO] Whoops, sorry. There we go, so, yeah, so this is the roadmap. Other locations where you'll find the game is, as I was saying on the forums. On the forums is where the main discussion happens. And as I said, there's plenty, plenty of threads. Right now, I think we have 108 threads. [CIRO] So there's a lot of them. [AMEL] Yeah, wow. [CIRO] And basically, the ones marked Official, for example, let's take a look at this one. They are the ones where we're discussing one feature, just one feature and then people are basically hypothesizing how to make that feature and posting like bits of code, as you can see, and giving feedback to each other. And obviously, we are responding to this feedback here. And basically, we're making the game as we go. Like some things, honestly, we haven't imagined yet how they work and we're coming up with them as we go. And that's the challenge and that's why sometimes it can feel like we're a bit slow in this process because the process is actually happening right now. And then the third part, which is very important to this project, is the GitHub repository. The GitHub repository is basically the beating heart. It's where the project lives and it's hosted on our, what do you call it, organization. The link is obviously available on the forums, on the roadmap and I think Carol, our Community Manager, she's sharing it in the chat right now. And the GitHub is where the project lives and it's where basically, you would make your contributions. If you want to contribute some new feature, you would make what is called a PR, a pull request and that will go here and then we are in charge of reviewing that pull request and making sure that it works, that it makes sense, and that if it does, then we pull it into the game. Here you can see that we have 20 pull requests open, 64 have already been closed. And yeah, it's a big number. And all of these pull requests as you can see, some of them have a conversation attached. You can also see the history of what happened on this pull request, so it's a really interesting... it's a really interesting process. [AMEL] And if you don't make the pull request, you can still discuss that pull request or give suggestions, or review it with comments, right? [CIRO] Yeah. [CHEMA] Yeah, so you don't only participate with code, you also participate with ideas. [CIRO] Yeah, definitely, or you can also review code. [AMEL] Yeah, review code. [CIRO] For instance, in this mega pull request, you can see the discussion that's going on and people are basically commenting on each other's code and making suggestions on how to solve something, so there's 27 more comments here, so it's a really long conversation. [CHEMA] Exactly. [AMEL] Yes. [CIRO] Okay, that's the... That's more or less the thing that we're working on. Anything to add? I think we covered everything. Yeah, I think we covered everything and if you have any additional questions, I think you can find the answers either on the roadmap, on the Readme part or in the threads, we have also detailed threads that explain how to contribute and how to start contributing to this game. We actually have also a Discord channel, right. Like on the official Unity Discord, we have a channel dedicated to Open Projects, so if anybody wants to have a quick reply, you can go there and ask that to just the community and we will reply and some other people will reply as well. [CHEMA] Exactly. [CIRO] Shall we show new stuff? Chema, do you want to start? Oh, yeah, okay, I will start. I will share again my screen. [CIRO] Tell me when you're ready, and what are you going to show us? [CHEMA] I'm ready. Actually today I'm going... Yes, I'm ready. Like I said earlier, you can find in the roadmap what you need to do and... participate with opening new threads or new discussions and these past two weeks, we took care of the wireframing, the UI wireframing, and it's not only to create UI and just UI screens, but it's also to understand how your game interacts, how your user interacts with your game. And while we were doing that, we understood that we had missing information either about the inventory or how the game uses the items that we collect and things like that, but we will see that later. For now, this is the Miro board that we are using to create the UI. It's not public yet. Right now I'm just putting together some of the diagrams that we've seen in the threads. Sorry, let me close this. In the thread about the wireframing, so if you can see these are discussions about how the UI will be displayed and some of them propose diagrams and when we see that, we discuss it and then the final result, we take it and we put it in the Miro board for now. So, this is the Miro board. [CIRO] There's a lot of words in the thread, Chema. [CHEMA] Oh, yeah. [CIRO] It's crazy now. [CHEMA] Actually this is not the only thread that takes care of the UI because also, we need to take care of the dialogue. The inventory system thread, the story, the cooking, the story and etc., etc., because it's very intricate and that's why we need something that shows us what we need to see like it's a diagram that... I mean, it's easier to understand than words, I guess, I don't know. [AMEL] Yeah. [CHEMA] But as you can see, we also need comments about it, so let me start by showing where we are at right now. If I go to Presentation mode, I'll put it like this, and as you can see, this is the first screen which is the main menu. These buttons and this frame for the image or this frame for the title, are not the final position, we just need to see that this information will be in this Scene, so right now, we have buttons for New Game, Settings, Credits, and Close button. We also have the main Scene that is animated that will be in the background and we also have the title and this is the main screen. If we go to the other screen, we will see that once we have a saved game, a new button will appear and it will show us the last saved game. If we go to the settings, we will see that we have four parts in the settings, the Audio, the Language, the Input, and the Graphics because we know that we will have a language for the subtitles. And also a Back button because it's normal. And a Save or a Reset button to reset the information about the Master Sound and Music and the Sound FX volumes to reset them at default. This is for the audio. This one is for the languages, we want to change the Game Language from English to any other language and I think that later, we will be using the localization package. Also, here we have the Save, the Reset, and the Back button. Then we have the input and here, while developing, actually while thinking about this screen, I had a comment from Ciro that asked me about the clicks because we are actually going to use not only the keyboard, but also the joypad. We were thinking how to edit the key binding using the joypad and whether we needed the mouse to use in these menus or not, so I think... this will be a discussion to have later on. [CIRO] Yeah, that's a very good point. [CHEMA] Yeah, do you want to discuss it now, Ciro, or later? [CIRO] No, I just wanted to mention it in more detail but you said, basically almost everything. No, no, the point is this game is supposed to be a desktop game or, if you want, a console game. My idea was always to use a game pad but I'm also very much aware that not many people have a gamepad when they're using a PC. Do you have a gamepad? [AMEL & CHEMA] No. [CIRO] Do anybody in the chat have a game pad? I'm curious to hear. But please, please put Yes or No in the chat so the point is like we want to make sure that people can test the game even if they... maybe they're in a train or something and they want to quickly check out something in the game, and it needs to feel good to play. Some people requested to have the camera movement through the mouse, and we're going to do that because it's very logical. For the menus, my personal opinion is that we should stick to a menu which is meant to be for a gamepad and keyboard and not the mouse. [CIRO] What do you think? [CHEMA] Yeah, my idea is to have the mouse just because it's simpler to just hover over something and move it than just looking at your keyboard just because when you are using a mouse... when you are, sorry, using the computer, you just reach for the mouse automatically when you need to go somewhere in the screen, so it's better I think, to have the mouse and use it to interact with the menus. Okay, I vote for no mouse. [CIRO] Chema, you vote for? [CHEMA] Mouse. [CIRO] Amel? You decide. [inaudible] I'm going to ask people on the chat, "What do you think?" No, what I think like, now Chema gave her arguments why she wants the mouse, why you don't want the mouse, Ciro? [CIRO] Me? [AMEL] Yeah. [CIRO] Because I think when you make a UI for the mouse, you make it for the mouse, right? And if you want to make a UI for the controller or for the keyboard, you need to think it in a different way and when you want to support both, not always works, like we need to do double the work. And... my thought is that if we make it for the keyboard and the gamepad, we can always make it work with/for the mouse as well. Even later, right because the mouse is a more powerful device, you can just hover on things and click on them like you would. Why are you smiling, Amel? [CIRO] You don't trust me? [AMEL] No, no. [LAUGHS] And I think both arguments are valid, right but, yeah, let us know in the chat what do you think and tell us why, like do you prefer with or without... Actually, let us know in the forums. We have a controls thread where somebody already launched the discussion, I'm looking at it... now. I want to say the name of the person if I can find the thread. There we go. He was... Gordon Arbor. He launched this dilemma and now we're like, okay, maybe we need to do that. Chema, back to you. [CHEMA] Yeah. Yeah, thank you. That was one of the issues and as I said, this wireframe is not to decide where each... Component, where each UI element needs to be in the screen because this will maybe be modified later by another artist's vision but it's to understand how to interact with your game without having to develop, it is just to see, okay, now I will click on this, I will just decrease the outline thickness. For example, this one, it's for the graphics, it will decrease the outline thickness of the shader that we are using for our characters and in our game, in general. We also have, oh, sorry, I didn't change this, so this is not the Game Language, oh, okay. This is the resolution. As always, Save, Reset and Back button. The next one actually would be the In Game screens but for the In Game and because we don't have like a clear vision to... the gameplay we can think about something in the In Game Scene. But we can guess what will be in the inventory and this actually... fired a big discussion about how the inventory system will be. In here, we decided that for the inventory, we will have either the customization item, these are items that the character will wear but they will not be like special custom or something. They will be either a bracelet that we can add to the arm, to the bone... to the arm bone, or a hat for the head, or maybe changing the color of the texture for the apron, etc., something like that, simple. Also, for the ingredients, the ingredients that we collect from the world, or we collect when we interact with a character these ingredients, we will use them to create a dish to maybe eat later. So... the ingredients and the utensils would be in the inventory system and as you can see here, an item will be characterized by its name, by a preview image in here, by the information about it that you will see in here in this part of the UI. And by an action button, actually the action button here depends on what is the element that we are selecting exactly. We can either equip it, create the dish, or eat the dish. [CHEMA] So this... Yeah? [CIRO] Sorry to interrupt you one sec. [CIRO] Everybody in the chat is asking what's this software that we're using to do the wireframing. [CHEMA] Okay, we are using Miro, which is a website that you can... it's a web app that you can find just by clicking <i>miro.com</i>, I think, I'm not sure [CHEMA] about the link for now... [CIRO] Anyways, M-I-R-O. [CIRO] It's easy... [CHEMA] Yeah, <i>miro.com</i> and you can find... you can use it to create your own diagrams. [CIRO] It's not part of Unity, it's not something that's connected to us. [CHEMA] Yeah, exactly. So... yeah, this is the inventory and just to show you how it looks when you are selecting multiple items. Let us go to the next one, and we will see here that when you have multiple items selected you will see them in Preview and you will see the result dish in the Preview as well. As well as the item descriptions in here. For now, this is what we have for the inventory, we are still having a discussion about the... dish creation, the cooking, about the inventory system and I think that we have some cool PRs about it. And also, we are still discussing the UI wireframing, so if you want to join in the discussion, please do. Also this is the last part, this is a generic popup with a title, a close button that can be there or that can be removed if we don't need it in the popup, also a description, an icon for the popup and either one, two, or no buttons. So as you can see here, there is a note that explains everything about it. So yeah, also we still have the credits but it's not populated yet because we don't know yet how we will have the credits. For now, this is the wireframe, sorry, Amel. [CHUCKLES] [AMEL] Yeah, go on. [CHEMA] For now, this is the... wireframing of the UI and how to interact with the game. And yeah, to you, Amel. [AMEL] Yeah, this looks great. I'm checking if Ciro, do you have any questions in the chat? I'm keeping an eye on the chat, yes. [AMEL] I was looking at it. I mean some people are commenting to do both control styles, so both mouse and keyboard and gamepad for the menus. Of course, everybody wants more. [AMEL LAUGHS] Okay, fine. Then I guess they decided for us. Yeah, nice, and they decided for me, I win. [LAUGHS] Somebody also mentioned using Rewired but we're not going to use external Assets because this is an open-source project, we couldn't use external Assets. If we did, we would be sharing some paid Assets, which we can't do. We will either code everything from scratch, or luckily, Unity finally released a new input system which is going to help in the adventure. [AMEL] Yeah. [CHEMA] Yeah, exactly. Cool. Thanks, Chema for the update on the wireframing on the UI. That's in progress, we're making some progress and when is it going to be ready, I want it on my desk [LAUGHS] [CIRO] tomorrow. [AMEL] Today. [CHEMA] No, it's ready for now. I want it on my desk at 6 PM today, which is in an hour or half an hour ago, depending on how you see it. Exactly. So yeah, if people from the chat, sorry, if people from the community help me, I will be able to do it tomorrow. [CIRO] Tomorrow. [LAUGHS] [CHEMA] Awesome. [CIRO] Somebody's asking are we using the new input system, yes we are, that's what we're going to be using for both the menus and the gameplay. Any other questions? Shall we also take a small break to ask some questions, sorry, answer some questions from before? [AMEL] Yeah. [CHEMA] Yeah, we can do that. Yeah, I'm going to pick some questions from... that Carol selected for us. Somebody was asking who's the artist behind the concept art, and I'm going to put the concept art on screen for a second. The artist is called, Jesse Turner. He collaborated with us at the beginning of the project, we commissioned some concept art from him. He's on the internet, on Instragram you'll find him as @drawbarian. Not "barbarian" but @drawbarian. Yeah, and he made all these concepts that you're seeing right now. [CHEMA] These are very beautiful, actually. [CIRO] Yeah, actually there's a character here which we haven't mentioned, the one with the sitar. [CHEMA] The bard, yeah. [CIRO] Yeah. [CIRO] Do you want to explain what the bard does? [CHEMA] I don't. [LAUGHS] Actually, I'm not sure in the latest story [CHEMA] what it does exactly. [CIRO] It's the same as before, [CIRO] he's just like... [CHEMA] A companion. [CIRO] Yeah, and also, like he acts as... the story progression, like he explains the story at the beginning and then gives you hints if you're stuck or stuff like that and you will find him in different locations and he will sing these poems about the island and the folklore of the island and give you hints on how to proceed. Another questions, sorry? [AMEL] Yeah, I was saying he's a friend, not an enemy. Yeah, he's a friendly character and NPC, I guess. Other questions, somebody says, "Are you the only three who work on the project I mean, except who follows you?" I guess they mean the community. Yes and no, we have collaboration with other people at Unity, especially two people, Richard Fine and Miley Hollenberg, which has done a lot of work, right until now. You will see them on GitHub a lot. They review code and approve PRs, so they've been super, super helpful. And other people at Unity sometimes they jump into the project, like somebody from URP jumped to help me, Andre McGrail, to help with the shaders, so we're going to get some collaborations, some spot collaborations here and there. Other questions. Will there be any form of procedural generation? No. No, I don't think so, we'll make [CHEMA] I don't think so. everything by hand, yeah. "I do art and I was wondering will we able to contribute to creature design, maybe not the main character but maybe the other NPCs and enemies." It's really welcomed, I mean, the only challenge we'd introduce in new creatures is that somebody then has to model them animate them, and stuff like that. But you're very welcome to create concept art, actually we have some concept art tasks coming up that I wanted to reveal later so you kind of spoiled it but never mind, spoil it. [LAUGHS] [CIRO] Yeah. Okay, let's move on. Amel, are you ready to show us something else? Yes, you can see my screen and I guess now we'll talk about events and the loading systems, right? [CIRO] Yeah, of course. [AMEL] Yes, I wanted to start actually from Miro as well by showing you this diagram that we have for the different environments. And we can see here that we have this beach environment, glade, forest, you can see that we have those different locations and of course, to be able to move from one location to another, we need to create some solid system to load those Scenes. One thing is probably people will think of an obvious solution, which is using singleton pattern, so I want to start by mentioning why we're not using this. First, because this solution using singleton allows rigid connections between the systems that you have in your game, so it's not modular. And those systems cannot exist separately, so they will always depend on each other's. And this is of course, hard to maintain and hard to reuse, so that's why we decided to do something based on ScriptableObjects and Events. If you are not familiar with these ScriptableObjects or Events or both, we're going to quickly give an overview of this, so I'm going to jump into the Editor already, and I'm going to go to my Scene. This is a Scene called, "Beach". And I go to the main character that is the pig and you can see that we have different Components, these different scripts and all these are MonoBehaviors. There are Components attached to the GameObject. What we are talking about today are ScriptableObjects, which are not attached to any GameObject, so they don't live in the Scene or in the Inspector here, you see them in the Assets folder, so you would see them as any other Assets, if I go to ScriptableObject folder we have created, you can see that we have locations, for instance, and we can create them from here and this, you could enable it from the script. For instance, I can create a new location, which is a ScriptableObject and this new location will store data so we usually use ScriptableObjects to store data. And you can, I mean, this is an example that I will explain later. But you can see that we can, here, for instance, have a ScriptableObject for each location. The forest, you can put a short description, the name of the Scene and specify all the data related to that. These are the ScriptableObjects. And now we are going to use these with Events, so I thought that I would show you these diagrams to make it easier to get started, I would say, and understand. You can see that the Event that we were talking about is here, the ScriptableObject, and we can see that we have here an Action or a Trigger that will raise this Event. To make it easier to understand let's use as an example. If I want to exit the game and I'm going to press the button to exit the game, so this is my action. It's a button, I will press it, it's a MonoBehavior and this will raise an Event. What do we mean by raise, raise is like broadcasting this Event in the whole game, so you would say, "Okay, now the game should exit", like we raise this Event. And we have in the other hand, this other MonoBehavior, which is the Event Listener that is listening to the Event. Basically, the Event Listener doesn't know about this Action or button or Trigger. And this Action and Trigger doesn't also know about the Event Listener, they are two independent systems and there is this event that is a ScriptableObject that acts as an anchor between them. We easily just raise the Event, we listen to it from another side and I wanted to mention that you can do this, of course from different Scenes, so this is an example Scene and this could be the same or another Scene. And once you heard that Event, as an Event Listener you're going to call the different responses that you have. I'm going to show an example of this in the Editor to make it make more sense for it, I'm going to remove this, we don't need it. If I go to my main menu, and you can see that I have in my canvas here the Exit button. Of course this is not the final UI. If you're look into the Exit button, you can see that when we press it, OnClick, we have this ScriptableObject. And as I said, these are Assets, so you can drag and drop them from any Scene without any problem and then I would choose my function here, my method, which is the Raise method. Here, I am in the main menu Scene doing something, which is raising this Event and I will actually show you where I'm listening to this Event. In this example, we are doing this in a Scene called, "Scene Loader." Here, the GameExitListener is basically listening to that same Event, so we just drag and drop it. And then we call the methods that we want to call when we hear that Event. You can see that they are in two totally different Scenes and we are able to exit the game easily. [CIRO] Amel, just for context, what is the role of this ScenesLoader Scene? [AMEL] That's a good question, actually, the ScenesLoader Scene is the Scene that we put here to all this location loader that I will talk about, that is mainly managing the loading and unloading process, and this will be always open. Every time we load new Scenes, like the forest, for instance, it's going to be loaded additively, and this Scene, basically, doesn't contain any 3D models or Assets that we are going to actually see, it's just here to make sure that all the Scenes are loaded and somehow supervise all these. [CIRO] Basically, when we launch the game this is the first Scene that we see? [AMEL] Yeah, when we start off, actually we can do it if I press Play. Yeah, here we can see our main menu and I can actually press Start and I can move to my first Scene. And you can see that I have here a Trigger. And when I enter it, I'm moving to the next Scene. Here we are like just testing the Scene loading system that we are talking about. [AMEL] Now before... [CHEMA] Sorry, can you [CHEMA] can you repeat it again and I wanted to check if the Scene in the Hierarchy changes, if you click on Play another time. [AMEL] Yeah, of course. [AMEL] I'm going to show this. If we click on Start, we can see that we have the Beach Scene loaded. Now [CHEMA] Oh, okay. we go for instance, to... The Forest Scene, we can see the Beach is unloaded and Forest is loaded. And this is the loading system and it's all based on ScriptableObjects and Events and I'm going to explain more in detail. Now, I just wanted to show a simple example of the Exit. I'm going to go back to the diagram just to give you more other examples, so we can understand. If I move here to the Events example, it's not complicated, it's just like too much examples but there are three different simple examples. The first one is the one we just talked about, which is like pressing the Exit button, we raise the Event we listen to it and we call the response. Okay, but then what if I want to pass a parameter in my Raise method? I mean I might need this. This is a good example of using an int, if I want to unlock an achievement in my game, I would say maybe I will give the index of that achievement for instance, which is an int. I need to have this other method Raise(int) that takes the parameter that I raise from my MonoBehavior. I have also a ScriptableObject listening to this, sorry, Listener listening to this Event raise and then I call the response. And I wanted to show the example that is a slightly more complex and it's the one that we're going to focus on today because it talks about Scene management. It's the one that we use when we enter the Triggers. When we show another Scene, we move from Beach to Forest location, we enter that Trigger. This is our Action, I would say, and this, will raise an Event by taking two parameters. The first parameter is the game Scenes that we want to load, so if I am in the Forest and I want to load another location I would pass it as parameter, and I created a boolean to say if we want to actually see a loading screen or not. Maybe if I'm going from the main menu to the game, I want to show a loading screen. But maybe between the two different locations, I don't want to, so this is totally flexible, and as well, I wanted to mention that the game Scene is an array so it's possible to have multiple Scenes loaded at once. For now, we are only using one Scene but in case we want to change this later and put multiple Scenes, the current system actually supports that. Once we raise that and we have this Event raised about load location, we have this location loader script that is listening and you can see that here. I'm not calling any responses for a reason, just because we decided to put the location loader to act as a listener but at the same time, contain the different methods that we want to call, and the reason why we did this is because we are only using this once. We don't really need to use it anywhere else, so we thought it's better to put everything together in one script. But those two, for example, that I mentioned, as Exit Game or Unlock, they could be used in any other way, like you could only... you don't only need to use them with Exit or when you have an achievement, you can use them no matter if you have any Int you want to pass a parameter or if you want to use a void Event, which means an Event with no parameter. [CIRO] These are basically generic listeners that you can attach to any object. [AMEL] And then I want to focus on this example, which is the last one, the one about the Scene. If I move here, we can see that I'm going from an example Scene. I could either press a button to start the game, or I can reach the end of the Scene by going into a Trigger. Again, we raise, the Event is called, "Load Location" and then we listen to it from any other Scene which I already explained. But what I wanted explain here is what this game Scene is because it's not something by default you need to write. This is a ScriptableObject that we have created. And from those ScriptableObjects, we are creating two instances or two children, I would say, that inherit from that parent class. A GameScene is a parent class that contains the general information we have about any Scene. Like the name, the description, so everything that is common between any Scene, no matter if it's a location or the menu. And then we have those ScriptableObjects that inherit from that one, and Location, for instance, will contain information that are specific to Locations. Like enemy count, for instance if you have a number of enemies in a certain location, we can also have those that are specific to menus like the menu type and here I can just give examples. These are what we use as parameters here for our Raise methods. [CIRO] So, Amel, basically here you're using ScriptableObjects for two different use cases, right? [AMEL] Yes. [CIRO] Like one is holding data the ones at the bottom, they're holding data about the Scene and the ones at the top are, did you mention before, an Anchor? [AMEL] It acts as an Anchor between those two elements like those two MonoBehaviors that we have. Yeah, we can store that or we can also use them as Anchors. And this is, the power, [CIRO] Cool, cool. I would say, our ScriptableObjects and that's why we love them. I'll show the Editor because this look too... I mean I usually love to show diagrams because it makes things more simple to understand, but I also believe like it's time to dive and see that in action. We are in the ScenesLoader Scene and you can see that we have this Location Loader that I said acts as a Listener, so you can see that we have the Load Event here, that we are listening to in the Inspector and this is super flexible because, even if you are an artist or a level designer, and you want to load and unload Scenes, you don't have to code things manually or open the scripts, you can just drag and drop those Events and you only need to somehow understand a little bit of the architecture that I was explaining in the diagrams. Here, I'm going to double-click in this Location Loader. I'm not going to go line by line on the scripts, but it's good to dive into this and see like an overview. Here, we can see that when we have the methods to load, we have the methods also to set an active Scene. This actually, I mentioned it here in the Start, I can see that we are using this for Lighting and Skybox because if you don't set the Scene as active, you will see that it looks a little bit darker. This is important to take into consideration. We have also a method to unload the Scenes, so if we move to a new location we want to probably unload the previous Scenes that we had loaded. I also check the load state because every time, I want to make sure that I don't load the Scene twice. I always do this check before loading any Scene. And this one is an enumerator that we use, a coroutine to keep track of the progress of the loading bar. And this is just to exit the game simply. This is what our Location Loader does and of course, again, it's an Open Project, so you can see this on GitHub and have a closer look on how everything is working here. Also, I wanted to show the different Events. This is the LoadEvent we were talking about. As you can see, it takes these two parameters that we mentioned. But we can also talk about the VoidGameEvent, which is the one that we use for the Exit so it has no parameters and all of these are, of course, ScriptableObjects. And we have also an IntGameEvent. So we add this... parameter, if we want to have an int passed here. [CIRO] These are the Anchors that we mentioned before, right? [AMEL] Yeah, these are Anchors that we mentioned basically, if I go back here, this Event that we mentioned, that what we see here... [CIRO] Maybe Anchor is an unofficial term. Sorry, nobody uses it but... [AMEL] Yeah, but I think it's like an accurate description of like the purpose, I'd say, of using it. [CIRO] Yeah, especially when they're connecting to Scenes, right It's something that connects as maybe a link, you could call it, I don't know. [AMEL] Yeah. We also... I just showed those Scriptable Events, ScriptableObject Events. I just wanted to show the listeners. As I said, for the Location Loader, we use the same script but for int, for instance, we are using a different script to listen. And this is quite flexible because if you look into it, as I mentioned... actually, I want to show it in the Editor. If we look at it in the Editor, the GameExitListener, you can see that it's quite general. Like you can just add this Component, this MonoBehavior and then drag and drop the Event that you want to listen to. That's why the name is not very specific, like it's not Game Exit Event Listener, no. It's Void Event Listener and this is a particular example that we have here, which is the Game Event Exit. If I go back to my scripts, we have also the one for the Void, it's more or less the same, just this one. Of course, we added this UnityEvent int to be able to pass the parameter. In the documentation, you can see more examples of this. You can also pass two or even three or more parameters if you want. For now, we just stick to this because that's what we need in the project and we will, of course, add more if we need them. And I guess that's it, I just wanted to show also the GameScene, ScriptableObject. So, as I said, this contain everything that is common between menu or locations. If I go to menu, for instance, you can see that we have the type that is specific to the menu, or the location that is the enemiesCount that are specific to the location. And now if I open this again in my Scene and we just press Play, so we just see the whole flow again. Here again, we have the main menu loaded, we start and now we have the Beach loaded. We enter the Trigger, this is raising an Event that another GameObject is listening to and it takes care to load the forest. And this is the whole scenario I would say. Yes, one thing that I wanted to point and I think it's pretty important, since this is an Open Unity Project we didn't do this alone, of course the community is helping us a lot and I want to show in particular an example of something the community helped us with when it comes to the Scene loading. You can see that I have those ScriptableObjects that I created, which represent the different Scenes the way we used to have it before, we used to have a Scene name as String. And now what we have from a new contribution is, we are able to use the ones that we have in our... Build Settings, you can see all the ones that are in the Build Settings, you have the another option here and you can select it directly. This is super powerful because now we have less risks, I would say, of making a mistake by misspelling or mistyping a character or something. And I want to show this in GitHub. If I go here, I want to thank @CharlExMachina for this amazing contribution. If you look here, he put screenshot, he explained what he added, and then I really love like it's always up for discussion, so here, I want to thank as well <i>@HyagoOliveira</i> for... he put the comment, he's trying to help review here, Miley from Unity is also helping. And you can see that we have this discussion and then in the end everyone is okay with this solution and we decide that it's good to add in the project and here you can see that it's merged. This has been merged and as you can see today in the solution that I showed, it's super useful and thank you, guys, for those contributions. And I think, Ciro, you will soon talk about a huge contribution that we have from the community, right? [CIRO] Yeah, yeah, yeah. But I also wanted to mention, Amel, it's great that you actually have shown the PR directly on GitHub because what I want to say is that we got this contribution from <i>@CharlExMachina</i>, his real name, Carlos Eduardo Perez Villanueva. It's great because it's such a tiny thing and it's basically a great entry point for whoever looks at this project and sees this huge thing and maybe is a bit scared of contributing a whole system, but maybe they know how to do Editor scripting and that what Carlos did, right and he just made this very tiny PR, three files changed, I think one of which is like a metafile, basically, it's just like one file. And that's in the game now and he's going to be under the eyes of everybody who's going to be working with Scenes in this game, so it's a great contribution, I think even if it's very tiny. [AMEL] I really think it's great because it helps to avoid mistakes when it comes to Scene naming etc., it's really good and again, I really love to see people contributing and discussing this, it's really so exciting. And yeah, do we have any questions maybe about the Scene loading system or Events in general? Is there anyone in the chat also that has some questions? Let us know. [AMEL] And I guess... [CIRO] Let's see, let's see, questions about the... I don't think I've seen some questions. [CIRO] I've seen a few, somebody is saying, "I'm a bit confused about ScriptableObjects and I don't really know anyone to ask about, I'm making this game..." Yeah, we can't help right now with the third-party game. In any case, don't forget that if any of this might sound confusing, you know and obviously this was a very short description but don't forget you can find this code on GitHub. You can just go to GitHub and grab it and inspect it. The whole project is available for download, the code is visible on GitHub. It's browse-able and you can actually use it in your projects as well, right. And we have a thread, the Scene loading, so, feel free, guys, if you have any suggestions or any improvements or this might actually change, maybe the system, we want to make it, to change a few things in the future because, of course, the game is not final yet, so feel free if you want to add any contribution or PRs and maybe discuss this first in the threads. And also ask questions, like if you watch this again, or you are watching this and you're not watching it live, feel free to leave a comment or a question in the threads and I will be happy to answer this. Actually, one thing that we wanted to introduce, which we haven't done yet, Amel, you were taking about this... I want to show the roadmap for a second. One thing that we want to introduce is that whenever we pull something in, let's say, for example, we have here some tasks, right and we have the audio system. Let me think, yeah, inventory system. Right now we have a link to the forum thread where people are discussing the thing. Sometimes when we have a PR, which ends up making it into the game, what we want to start doing is to implement here a link to that PR, so that whoever is looking at the project, can also look at things that have been done and then directly look at the contribution because sometimes, once the code is merged, it's a bit hard to find but if you see the PR, then you'll have a photograph of what was done and what was discussed and you can actually look inside the files and see the code. We want to start doing that. [AMEL] Yeah, I think someone mentioned this in the threads and we thank them also for giving ideas on how to organize better. [CIRO] You're right, it's a community suggestion, this one as well, you're right. [AMEL] That's great. [CIRO] So yeah, thanks for that, I'll remember the name, we'll find it on the forums in a second. I think it's my turn. Yeah, I think it's your turn, Ciro, I'm really excited to... learn more about... I don't want to spoil it. [AMEL] Do you want to say it? [CIRO] Yeah, okay. It's something that is using ScriptableObjects. [CIRO] Wow, what a surprise. [AMEL] Ooh. Yeah, I want to start talking about another contribution, super cool one, which is called a State Machine. A State Machine is basically, we actually went on quite a while on this topic it took us almost three weeks to choose one because we got so many contributions for State Machine. What is a State Machine? A State Machine is basically a construct that you use a lot in games where something, an object, or a character, or a situation can have different states and can have only one state at a time. Usually the object is in one state and then something happens and the object moves to another state. And this is very typical of characters when you have, for example, the Idle state, where the character is not moving and then you press the controls and the character starts advancing and now they're in the walking state. You have this machine that can move between different states that are connected with each other and they are connected to what is called, transitions. And State Machines, you have plenty of ways to make State Machines, you have... You actually have one State Machine in the Unity Editor, which is at the Animator, right. Mecanim is a State Machine for animation. But we wanted a State Machine that works specifically for gameplay. We'd examined a few solutions, I actually proposed Bolt, right, which now we have in Unity as an easy way to make a very generic State Machine but then we decided to go with something that was actually simpler, in some way and that was community made and we got a lot of... contributions, we got, I think, seven PRs that were valid. I was browsing this sea of code and I was like, "Okay, this looks super cool," there was one by a user called, <i>@neon-age</i>, he had a super cool Inspector, another user <i>@kcastagnini</i>, he's created a very interesting transition table, so all of the State Machines that I was analyzing, each one of them had something cool. In the end, I ended up choosing one from a user called, <i>@DeivSky</i> And I'm going to show you that one right now. Let me go into Unity. If I go to the Character Controller Scene and I press Play, you will see how the State Machine in action, works. This is the character, I'm moving around. But the thing right now is not just one script, it's a State Machine and if I select the character, you will see here to the right, I have a script called, "State Machine" and right now, the script is telling me that I'm the state called, "Idle". if I start moving, he moves between different states, so he's like Jump Ascending Descending, and then he's going to be walking and stuff like that. and if you analyze the... way the State Machine works, basically you have this Component and then if you click here, you have, again, ScriptableObjects and the ScriptableObjects in here are both data and behavior and I'm going to show you how they're organized. Let me go to Miro again actually and show you how the State Machine is organized. Basically, as I said, you have, at the start, the GameObject for the character which has a few Components attached, it has the Character Component, the CharacterController, which is the one that comes with Unity, the built-in one which we're using. And then it has a Component called State Machine, which our user from the community made. The State Machine, as I've shown you here in Unity, here, it's connected to an initial state. This State Machine is connected, as you can see, to a default state which is a ScriptableObject. And then from here, these are all ScriptableObjects. All of the structure of the State Machine and the way the State Machine moves around between states is all built on ScriptableObjects. For instance, we have the Idle state, which is a ScriptableObject connected to a transition, which is called, "StartWalking," which is connected to a condition and the condition checks some stuff, like, in this case it checks if you're moving or not.. If the condition is true, then the transition sends you to another state, which is the Walking state. And that's basically the main structure and then from the Walking, you have another transition, which can move you back to the Idle state. As you can see, we have two states and two conditions that connect them with each other. And these conditions, they both analyze, sorry, these transitions, they both analyze one condition. And then for each state, you can also have something else, which is the Actions. Obviously, Idle is not doing much. But the Walking state has two actions. It has one called, "Calculate the movement vector" and one to "Move the character" itself. The actions are executed in a list. First, you calculate the movement vector and if you see in my diagram what this is doing is it's going to take the movement vector from one of the Components. And then the other action here is going to read that resulting movement vector and once it has read that vector, it applies it to the CharacterController. Basically, the idea is that the State Machine is here and it's made of ScriptableObjects, so they are kind of like objects that lives separate from the character. And the character, itself, is here, it's a GameObject with its own Components and what these ScriptableObjects do is that they operate on the Components and the Components hold unique data. Why is that? Because obviously, if you are storing the data in the ScriptableObjects, like for example, the position of the character, then every character will move... they will be positioned in the same place, right? If we have three, for example, townsfolk, they will be in exactly the same spot, so we can't do that. The position has to be on the GameObject, itself. For instance, the Character Component will hold a reference to the input of that frame where the character is moving or how much health does he have and stuff like that. This a holder of data. And then the ScriptableObjects produce the behavior. And that's the solution that<i> @DeivSky</i> created for us. And now if I go to Unity, I can show it to you in the context of the Editor, like what Amel did before. Again, this is the GameObject you have the CharacterController here, Character (Script), State Machine (Script) and the State Machine (Script) has a reference to this ScriptableObjects called Idle. If I click on Idle, I select the ScriptableObject and now I see here that I have the actions and the transitions, remember, I showed you before the Actions and the transition, sorry, the transition is this one. Idle does a couple of things and then it can transition to two different states. It can transition to StartWalking, if I start moving, or it can transition to BeginJump if I press the Jump button. If I go to BeginJump, again, you can see how this transition is organized. BeginJump is a transition that wants to go to another state called, JumpAscending and it is... it happens as long as I press the button. If the button is... No, this is BeginJump, sorry, if I press the button, I go to Ascending and then so forth, so if I go to Ascending, then I have Descending which relies on when I stop pressing the button and so forth. All of these ScriptableObjects are connecting with each other in a network of them and you can follow the trail by clicking on them and analyzing what they're doing and clicking on another one and analyzing the new one, which conditions is evaluating. And you can basically rewire and reconnect these things, just like I would do in Miro by doing this, if I were to take the arrow and rewire it to this one. You can do exactly the same thing in the State Machine just by rewiring a Scriptable Object to another slot. I'm not going to do it right now because I might break it. But the idea is that like we're using it for the character, we could use it for, for example, an NPC. Or we could use it for other uses, the implementation that <i>@DeivSky</i> made is pretty generic so it's really easy to make new types of transitions of conditions and states and actions. I hope the explanation was clear. I haven't shown the code. You will find the code, as usual, inside the project, it's actually in a folder called, "State Machine". If you want, you can go inside here and you can analyze how the code was constructed. And you know, if you have questions just come on the forums and ask <i>@DeivSky</i> directly, he might answer in the forum thread. The other thing I want to mention is, I think this is important to remember. We chose this solution for the State Machine, but it doesn't mean that this solution is set in stone. Anyone can go in and improve this solution and make changes to it. If you look at the solution and you think like, "You know what, in this particular spot in the code, he could have made a different decision," then you can just create a new PR and suggest that decision and if it makes a lot sense, we will implement it, why not. [CIRO] Okay? [CHEMA] Yeah and actually it's the same for every solution that we have, like, even for the Event, for the loading system, or even for the wireframing, so until now, we are still taking into consideration the suggestions of the community. [CIRO] Yeah, yeah, for sure. [AMEL] Yeah. That was, again, a great contribution, I really loved it, took a while to integrate because, again, there were so many good... alternate solutions and actually, as I said many times, even though I'm quoting this person who made the final contribution, we want to recognize also the people who created the alternate solutions, so we're going to like put them in the credits of the game as well because we want to recognize the effort that these people made in making these PRs. Yeah, totally, I think sometimes also, it's good that people get inspired from each other's solutions and somehow try to improve it by seeing the other... what other people suggested. And I love also how you started by explaining why you picked up that solution, because, even in the chat we got questions about how do you decide which PR to take for the inventory system or any system in the game. I think it's a good way to show people it's not like... it's hard to decide sometimes and I think especially with State Machine, it is. These are like big decisions, right? They're very fundamental decisions, that's why we wanted to take some time to make them because they will stay with us for a while and we... sorry, it would be tough to change them because they're very fundamental. But as we go forward, the decisions will be like slightly smaller. Yeah, and as you said, we can always improve and adjust if needed throughout. [CIRO] For sure, for sure. I was taking a look at the questions. I don't think we have much stuff, actually, there's a question from Oded Sharon, he says, "What happens when there are two PRs for the same system?" Like for example, it's happening with Inventory and I already answered this, if you want to, Amel, you want to say it. [AMEL] Yeah, totally. That's what I mentioned when you explained that when you started, like what was your approach to decide which pull request to take for the State Machine and I think it's the same for the different systems that we have in the game. So yeah. I think the key point there is, for me and for you, when you choose a PR, and Chema, the bigger the PR is, the harder the decision is, right so what we're always suggesting is please make small PRs even though they might seem simple like somebody actually was... another question in the chat was, the inventory system is too simple. I'm like nothing is too simple because we can expand it later, like there's no functionality that is set in stone by just one PR, we will keep improving it, but if you make it simple at the beginning, then for me and for you it's easier to choose between two alternate ones. To answer directly that question, the key point is we will choose the one that we think is best. If the PRs are huge, then it will take us longer to choose. Obviously explaining PRs is also a big part of the factor, I think. If you just like drop the code into the PR, then we're like, "Okay, now I need to look at the code." But if you explain it very well with examples, and some people made even like a video, that was insane. That was super cool. [AMEL] Yeah. [CHEMA] So super nice, yeah. Do we have other questions while I prepare the next steps? I don't think that we have another question. I don't think for this part... Yeah, what are we going to talk about now? We've seen the Event and loading the State Machine, and the UIs, so... [CIRO] We saw the wireframing on the UI from you. I think there's not much else to talk about in terms of new stuff. I also think we can start wrapping up unless we have some more questions in the chat. I actually just saw one from the same person from before, they ask, "Can you merge PRs faster, so that the PRs don't get big over time?" We can, we will do what we can, like we... We're going as fast as we can. And as you said, Ciro, the smaller the PR is, the easier for us to integrate that with, I would say, less risk. It takes time to analyze it and test it and make sure that doesn't break other parts. Yeah, also we were busy on these past two weeks with the whole story situation and following the creation of the Assets, the 3D Assets, which I've shown before. I want to show them again. Where is it? Yeah? [CHEMA] Oh! [CHEMA] Yeah, I think after this, we should talk about the title because if we talk about the story, we know that the story is now [CIRO] Finalized. [CHEMA] not set in stone but finalized a bit, so we changed it a bit and now we will start the title choosing process. [CIRO] Yeah, actually we have started it, right so... [AMEL] That's my favorite, I would say. [AMEL] My favorite... [CHEMA] So please vote, vote, vote. [CIRO] Should I show the results of the forum? [CHEMA] I think not because you might influence people. I don't know. [AMEL] I mean I think people will see anyway, like the top... go to the next step, right so maybe we could, I don't know. We'll let you decide, Ciro, you have a yes and a no, we have faith in you, the community. [CIRO] No, I think it's fun to see the responses. Why not. [AMEL] Yeah, I think so. Like we are transparent I would say, like we show them what happens. [CIRO] Also like we're moving to the next stage, right, with the voting. Let me show you the screen. Basically, what we're referring to is the fact that we're choosing the title, right, and we wanted to make this a community decision. In this thread here, which is called, "Choose the game title: Voting Now!!" We have opened a survey, which is to choose the game title and what we've done is, we've collected all of the suggestions from the thread through these past three weeks, put them in the form and then people have been voting through this link for the last three or four days and we actually have, so this is the form, and we actually have 79 responses. As you can see, the form was asking would you prefer a long or short title and then which one would you prefer as the title of the game? And you could express as many preferences as you want. And now we're going to compact these into a smaller list and we're going to vote for the final round. Just so you know, we want to see some responses. Let's see the ones that have been voted the most. The first one is "Chop Chop," which has 18 votes. Then we have "Gastronaut," which has 15 votes. And I think the third one for now is "Gourmet Quest" with 14. And then we have a couple of, no, we have "A Taste for Adventure" with 12 and "A Pig's Tale", "Swine and Dine" and yeah, with 11 and then "Chef's Fable." Basically, we have a few candidates, let's say. Now the, how do you say? The first ones here in this classification, we will put them into a new survey and then you will be able to vote and then we will choose the first one. It's like rounds of voting. Now we're doing the first round and soon after this live stream, I will put a new form here to vote. Actually, should I close this one now? Shall I close the voting? [CHEMA] No, we should let people from today just participate to it. [AMEL] Yeah, maybe... [CIRO] If you want to vote right now just go to the forums, click on the thread called, "Choose the game title", vote for the first round and then in a couple or maybe in one hour, I will put the new one on and you will be able to vote for the actual title and that's the one that is going to be the title of this game. Open Projects Action Adventure will become that title. [AMEL] Really excited to see... [CIRO] Fingers crossed, it's a good title because otherwise, I quit. I'll leave Amel and Chema on their own and I quit. No, I believe in the community, they will make the good choice. And I think it's good now during the stream, more people are actually watching and thank you all, by the way, for joining and watching. People who didn't see the thread that we actually opened the vote as Ciro said, we are leaving this for at least one hour for people who didn't see it yet to do it now and vote before we go to the last round. [CIRO] Yeah. You can also, I think find the link in the chat. Yeah, Carol just posted that so you can find the link on the chat. You can participate in it directly from there. [AMEL] Great. [CIRO] Nice. We're getting towards the end, right? We have shown the UI wireframing thanks to Chema. We have shown an Event system based on ScriptableObjects thanks to Amel. I've shown the State Machine contributed by our community. [AMEL] Thanks to Ciro. [CIRO] These were like the main pieces of the advances that we've done, we have seen the 3D art, which you're seeing on screen again. And actually, I wanted to mention something about the 3D art. Now that we have a few 3D model Scene, you can actually create yours. I was holding, asked on the forums there's a thread called, "Regarding art, Assets and music" and I asked people to wait because we wanted to define the art style a little bit. We wanted to define the specifications for the characters. And some people, they were pretty angry they were like, "I want to make something now." And I'm sorry for that. We had to hold you for a little while. There's a user called <i> @Andre</i> he was very annoyed. Andre, if you're listening, forgive me, forgive us. But you can make something now. If you want to come back and contribute to this project, we will be super happy. Sorry for the wait. You will find the Assets in a branch on the repo which is called, Art Assets. Download those Assets, take a look at how they're made and make more, like anything you have on your mind. Cool? [CHEMA] Yeah. And with this, I think we can move to the final part where we show the next steps. [CHEMA] Yes. [AMEL] Yes. [CIRO] So we have... go back to the roadmap... [AMEL] Are we revealing new cards? [CIRO] Yes. [CHEMA] Ah, nice. [AMEL] Yes. [CIRO] Back to the roadmap, the roadmap as usual is the place where you can see what's happening, what's coming and actually somebody, I forgot about this question, I saw this question before, somebody was asking about the game design of the game, the game design is here. It's also on the roadmap, so you'll find it in here, the story, you can consult the story here, description of the chracters. And then obviously, here you have a bunch of tasks, which we're working on and the ones with the little blue icon is the community's working on them. We have a bunch of PRs open for all of these things. We have some tasks which we are reserving to ourselves the ones with the black Unity icon. As you can see, it says, Team. These ones are reserved to us, again, like the main character some things we want to keep them for ourselves. And then there's gray cards, which are the ones that nobody has volunteered to make yet. So yeah, I want to add the few new tasks and I want to do that by going to the... Open Projects... I would never find it, no, this is the public one. [CHEMA] Come on. [LAUGHS] One second, one second. [AMEL] Sounds like suspense, I would say, to make you feel the wait... We are there, I'm getting there. [CIRO] Yeah, yeah, yeah. [CIRO] This is the private section of the roadmap, right, so you have the public one which looks like this and the private one is basically the same. But here I have another deck of cards. And I wanted to pull in a few new items, basically and actually want to comment them as I put them in the roadmap. One thing we wanted to unlock and we need is imagining some things which are not included in the concept art we made. For example, since the story changed, now we have a town, and we have a festival of cooking. How does that look like? I don't know. And the concept artist we hired before hasn't made concepts, so we need to imagine this new thing that happens in the game, these new locations. One of the tasks that I would love people's help is concept art of the town and the festival. And associated with this concept art of the cooking utensils because now the cooking aspect is so big in the game that we need some kind of visualization of these cooking utensils. I don't expect people to make... What we're saying, we're not asking you to make super complex concept art anything is fine, even like line drawings. Super okay and I'm actually going to want to make some of them, myself, especially in the cooking utensils, so I want to make an Italian moka pot. which doesn't need much concept art, to be fair. But yeah, the idea here is, and I can actually link some stuff. It's to produce something like these, even like simpler but this is the concept art by this artist, Stephanie Carey. And this is already like some kind of quality, but if you see this technical drawing that's super simple. I mean this is good quality, don't get me wrong. But this is the stuff that we're looking for. Don't be scared if you're not super good at drawing, you can still jump in and just make something. And associated with this card, so we also have some new forum threads, which are going to be open soon where you can drop your ideas. Concept art goes into the 2D, right. I'll put it in, or do we put it in Design? [CIRO] 2D, Design? [CHEMA] I think 2D. [CIRO] 2D, Amel? 50, 50. [CHEMA] 3D. [AMEL] Let's split the card in two. [CIRO] Oh, come on. [AMEL] Yeah, let's put it in 2D, maybe, okay, it's fine. [CIRO] 2D, okay. I'll put these ones in 2D. Then we also need, again, because the story changed, some help with naming characters and places. So for instance, the... legendary chef of the town, I call it, "Fry King," but it's not necessarily called like that. It's not fixed in stone. So what is this character called? Up to you. Does the Bard Hare have a name? Up to you, and then the new characters, the townfolk, the ones that now populate this town, do they have a name? I think so. I'm also thinking of individual names for the individual characters. And I reserved one for myself, don't try to suggest this but one of them has to be called, "Gourmando". [LAUGHS] My decision. But please suggest more. Chema, can I put this one in Design? [CHEMA] Yeah, of course. [CIRO] Okay, I put this one in Design & Narrative. And then we have a few tasks for graphic artists and technical artists. We have effects in the game and I think many of these effects should be shaders. We have, for example, very simple one, transparency support for the main shader, we need some transparency for the lantern of the character, of the pig because the lantern will incorporate the phoenix chick, so we need some transparency on the shader. So that's one thing. And I'm going to put that into Effects & Particles, maybe. [AMEL] Yeah. [CIRO] Or maybe not, sorry, 3D & Shading. And then we need also emission support for the shader, so for instance, the same phoenix chick has to glow or the eyes of the critters have to glow, so we also need this one. I'm using the card, I'll put it into... 3D & Shading as well, I guess, I don't know, I'll sort them later. We need a water shader because the island is surrounded by water, so we need some kind of shader for the water and I'm imagining a shader that has like a water movement, like this and maybe the water moves up and down, it doesn't need to be too complicated. But that's another task that we need to tackle and I'll put this into Shading as well. I'll put it in here. [CHEMA] Actually someone asked if the threads for these cards will be open today? [CIRO] Yeah, yeah, yeah, some of them actually link to the same, for example, for the transparency support to the thread links to the same Toon Shader thread that's already in progress because I didn't think it was worth to split the conversation. But for others, we will make new threads which are actually just hidden for now, so they've already been created. And then... more effects, we need one effect which is Burn Disappear because the phoenix chick is able to burn plants and canes and bamboo canes and stuff like that. The idea is to have an effect to which you have an object and then when the effect kicks in, the object disintegrates and burns away. And that can be done in a shader. I have a vague idea of how to make it but I think it would be nice to see also contributions on this. I'll put this in Effects & Particles, yes. And another shader which allows us to have the classic-like sway effect with the wind for plants and leaves and I'll put this one also in Effects & Particles. And that's it, this is another card that was left there. So, we have a bunch of new tasks. We have some tasks which are still open, we're going to go over some PRs soon like the inventory system is pretty much good to go. There's a couple of very good audio systems as well. You've seen them? And then I will need to take a look at this PRs that are pretty old and sorry for that, but sometimes, some things we don't want to integrate them before we have other things so that's like an order... and actually that's why, if you see these cards, they're under the No Rush category. Cards are ordered by priority. When you see that it has no rush it means that there is no rush. Yeah, that's it. We have releases decks, so we have like the one where we unveiled the project, this was last live stream, this is this live stream, what we have today. You can track what we've done and soon, we're going to create a new one for the next live stream, which is in two weeks. Yes, and actually talking about artists, technical artists' tasks, we have a question if we are using URP and GRP and we want to remind that we're using URP in this project. [CIRO] Yup. Also I think another question is, is it mandatory to use Shader Graph and I think that, yeah. [CIRO] Yes, because I'm the dictator on this... no. [LAUGHS) I mean... I think... [CIRO] Amel, sorry. I was going to say that the fact that we are using URP, which is an SRP, it allows us to use Shader Graph. So why not, I'm like, we could use Shader Graph and I really think it's powerful and it's easy to understand for everyone. So yeah, and you can still inject some HLSL code if you want to do that inside Shader Graph, sorry. Which you're doing already, right, in the Toon Shader. But actually, if I'm reading into this question, I think what they're to saying is they love to write shaders with code. If you want to write, for example, the water shader, right, if you want to write water shader with code, please do. The key point of Shader Graph was that now that we have the Toon Shader made with Shader Graph, we can create this alternate effects with Shader Graphs, so all of the effects that I've shown before that are here like burn or the wind shader, we can now add them on top of the original toon shading just because it's shader graph so that's a really nice opportunity but if somebody is super used to code and you want to go ahead, I mean try. Yeah. [CIRO] Other questions. Can you cook with the phoenix chick? That's actually one of the ideas, right? Yeah, the phoenix would be used as fire to burn something, so yeah, we will be using the phoenix as something to use to cook. I think in the original story, the phoenix chick was the thing that allowed you to create like the final recipe and maybe that's still going to be the case. Why not? But it will fun, actually, to use it for every cooking... activity. "It will just rise from the ashes," yeah, of course. Okay. I think we don't have any other questions for now. [CIRO] Not for now, no. So we're... getting towards the end, yeah, somebody was asking also like, what's the tool that we're using for the roadmap? It's called, Codecks. It's also a free tool and it's like a project management tool and it gives you this super cool interface with decks and cards you have like... actually you also have like a milestone view, which you will never see because it's not in the public one but I have it here, which shows me all the live streams that we're going to do. And you can assign cards to those milestones, you can have a Hand, which means like I'm holding these cards in my hand which means that I'm keeping an eye on them. And as you can see, it reminds me of the last milestone, the closest milestone, which is today, which is the live stream that we're doing right now. [AMEL] Yeah. [CIRO] And then it has a public face so you can make this roadmaps, sorry, these projects public and we're using it to show the roadmap to everyone. This is what you can use to take a look at the tasks on the project. Pretty cool. [CHEMA] Yeah, awesome. Questions, questions. Will the pig be able to cook pork? [LAUGHS] No, that's forbidden. [LAUGHS] He's vegetarian. [LAUGHS] [AMEL] Yes! [LAUGHS] We've got a question, are there small tiny tasks we can tackle? Probably other than the tasks that we revealed in the Codex, now in the roadmap, we can still adjust maybe the previous ones or like reviewing the current pull request or proposing small suggestions. Could be as well like a small task to contribute? [CIRO] Totally. You showed one with the PR from <i>@CharlExMachina</i>. The one where he customized the inspector of the Scene, right or the GameScene ScriptableObject. There was this one that I wanted to show actually, let me show you this very quickly. It's a PR from a user called,<i> @RunninIVlan</i>, I guess... and they basically saw a mistake in the code, which was like a pretty, pretty good suggestion. Change the file and this is the change. They just started like a bunch of Event keywords to a bunch of Unity Action variables, that's it. As you can see, like there's really like all the range of scope for changes, as long as they're useful. Please don't just like add spaces or new lines to the files. Then we will reject them. But this was like a good suggestion and it totally took them maybe 15 minutes to make, right? Pretty good contribution from <i>@RunningIVlan</i>. That looks great. We have a question, another question, "Can I help as an environmental artist?" And I think we are, actually, getting more and more active, I would say, in the Greyboxing thread and we also wanted to work on some concept art for the different environments, including the beach, the forest, etc. So, totally you can help on these, and feel free to go to the Level Design and Greyboxing threads in the Unity forum. There's actually, I want to show you the contribution from the user <i>@ItsLeviosa</i>. [CHEMA] Yeah. [AMEL] Yeah. [CIRO] And it's this one, so they made this video to show the Whiteboxing of a level. They started from the Miro map, the diagram and then they explain the reasoning behind it, right. And then they did the Whiteboxing basically from the beginning when the character leaves the boat that they used to get to the island. And then they recreated, like they imagined the beginning of the game and how the beach is laid out. [CHEMA] Can you... actually, Ciro, can you remove the music. I think that they are hearing it. [CIRO] Yeah, sorry. [CIRO] They put some very... how to say? [CIRO] Trolling music. [CHEMA] Cool music. [CIRO] That's quite fun. But you can see how they visualized the beach environment and I think it's super cool, it's like super rough but it gives you an idea of the scale that's something very useful for me as well to imagine the scale of the elements. When I was making the Character Controller, I was like how high does the character have to jump? I don't know, you know, and now I can have a better understanding, thanks to the Whiteboxing that this user has made,<i> @ItsLeviosa.</i> Super active user, by the way, so thank you for the tons of contributions in the story thread. It's super cool to see people coming back to the forums over and over again through the weeks. As you can see, they use placeholders for characters, placeholder text, and then they imagine this ramp which goes up to the town. It's quite an epic start of the game. And then the super cool thing is that they also shot the video from the other point of view, so they go back down. That also gives you an overview of the island from afar, I think it's super cool, super cool contribution, thanks. [AMEL] I really like that as well, it's really super nice to see things put together and that's something we start in the Greyboxing thread as well. So yeah, this is really... [CIRO] I see some sketches as well, super cool. Okay, I need to catch up with this thread. This happens a lot. Maybe an hour ago or something, okay, cool. [CHEMA] When we just figured out that we had a live. [CIRO] Yes, yes. Another question is whether we can use animation rigging in the project? I think we could, yes. We haven't introduced it yet in the... we haven't introduced the package in the project because I want to remind that please don't add new packages, we will do it. But we will, I think we will. I was reading the comment about the music of the video. Yes it's "Shooting Stars" from Bag Raiders, classic meme song. Yeah. I love memes. Yeah, Brian says I can sketch this will be easy for me. Anything really, when it comes to visualizing environments and concept art, just don't think that we are expecting some kind of grandiose concept with colors and stuff, it can be just a sketch. Okay, cool. I think we're getting towards the end. Somebody's actually asking, I think they joined just now, "What are we doing here?" [LAUGHS] "Are we reviewing something or making a game?" Yes, we are, just as a small recap, we are looking at something called, "The Open Projects", it's an initiative by Unity where Unity makes a game together with the community and we're working on the first project. Which looks like this, this is the art and this is the... concept art for the game. And we don't have a title for this game yet, as we said, but we're working on it. [CHEMA] Come to the forums and vote for the title, you have one hour until the second round. [CIRO] Okay, so in one hour I close the form, okay. [LAUGHS] I think also to frame the time, right, we started a month ago. Did we? It was the 30th of September, so the 30th of September, we unveiled the project and initiative people flooded in and then two weeks ago, we did the first live stream. And then another two weeks, so we're here. Still a long way to go, right. [AMEL & CHEMA] Yeah. [CIRO] What's the estimated date. [CHEMA] Tomorow? [CIRO] No chance. With the Whiteboxing. [CIRO] What's the estimated date when we'll finish this project? Actually there's a question right now in the chat. Probably by the end of March, maybe. [CIRO] Yeah, that's more or less what we hope. I think it's deceiving, some people would say that looks like a very long time from now, but that's what it takes to make, I won't say, full games but a relatively chunky experience like the one we're trying to create. We want to produce something which will last like maybe, 15, 20 minutes of gameplay. And we want to make it look nice and play nice and sound nice as well. We're working with the art sound designer as well, to bring some super nice music. So it takes time. [AMEL] Animations as well too. [CIRO] Animation, there's so many parts to it and then the integration of it all it's going to be something. It's going to take some time we're still at the beginning of this journey and that's why this show is called, Open Projects: The Journey, right. Any final words, any final questions? I think I saw a question about... ProBuilder and asking maybe about the video that we showed from <i>@ItsLeviosa</i> if it was made using ProBuilder? I guess so, he was using ProBuilder I think in the post, he or she mentioned that so, yeah. You can use ProBuilder and Polybrush if you want to try some Greyboxing, those are the tools to start with. [CIRO] Looks like ProBuilder to me. [AMEL] Yes, it is Probuilder. [CIRO] I think so. ProBuilder is in the project, so you're totally allowed to use it. [AMEL] We have the package included so feel free to use it. [CIRO] Just a small note, why we're using some packages instead of other packages. Sorry, I mean what packages are we going to use? I want to remind everyone that for this project, we're staying on 2019.4 LTS, so it's the long-term support version of Unity, which means that it's super solid and we can focus on making the game and we don't have to deal with any beta functionality, which is cool, but we don't need it right now, so we're going to restrict ourselves to just the packages that are compatible with 19.4. Totally. Any last questions? I think we don't have some but let's remind them that if they have any questions, they can do it on the forums. There are many threads, they can open a new thread if they have a new proposition and they can see everything that we have in the roadmap on Codecks. [CIRO] Yup. [AMEL] Great. So just to show... the, oh, this is the video from <i>@ItsLeviosa</i> but to show the three locations of the project, I lost it. Oh, yes, it's here, sorry. The three locations of the project are the repository where the project lives, the roadmap, which is on Codecks and the forum, which is here. this is the roadmap to see the progress and to see the tasks that you can work on and then the forum is to discuss and talk with the other users and contributors about the different... tasks and you can also propose new things, of course. I think we're pretty much at the end of today's live stream. What we're going to do now is we're going to stop the microphones and the cameras but we're going to hang out in the chat on YouTube for another maybe 10 minutes. Feel free to chat with us. If there's no final questions. [CHEMA] Going once, going twice. [CIRO] There's one question from Rick McMichael, he says, well, it's not really a question, is, "We love to see a more dynamic voting system for new features of different categories, so Unity users can vote on them and those that get more votes to be implemented could be a good Dev guide." Yes. The thing is, this is, you can argue about this, but here we're also acting a bit as referees, in some way. We need to give this project a direction. It's a community project, for sure, but we need to make sure that we also get to the end and sometimes, if you leave the votes to too many people, they will come up with many ideas. Because everybody has a different idea, right, and then integrating all these ideas can prove very challenging. We're trying to restrict and, as I said before, the length of game projects is deceiving. You think you'll take three months and it takes you six months. You think it's going to take you a year and it takes you four years. And some indie developers made very small games in six years or more. Here we want to really, really keep it as small as possible. That's why we don't call it a full game, we call it a "vertical slice" and that's why... [CHEMA] Show us how you say it, [CHEMA] Ciro, "vertical slice". [CIRO] Vertical slice. [LAUGHS] [CIRO] And that's why we don't want to just open up for voting on any feature. But we have a set of features that we identified and then we accept suggestions on how to make those features. But of course, you can always suggest a new effect or a new area in the game or something like that but we're not going to accept suggestions like, "Let's put machine learning in the game," or, "Let's now make the game with physics" or something like that. There're some things which we cannot accept because otherwise, the project would just derail and become like a huge thing. Another question which was interesting by Eli Coliniati, she asks, "Would you encourage side initiatives to help people create something, even if it's not on the main cards or would it distract you, for example, music, can people write music even if it's not in the roadmap?" Yeah, totally, the only thing with music and art, as I said before is, we want to give it a direction. We're working with some musician to come up with some theme song and then what we want to do is, we want to open up the theme song to the community, sorry, not only the theme song but a couple of songs that she's going to write, open it to the community and people can make like remixing or remixes or a battle theme or variations on it and new themes as well and then we can put them all in the game. Again, it's like giving a direction and then letting people join on that train, if you want. Yeah, like we did for the 3D. Exactly, like we did for the 3D art. It's not like we don't want people to make art, it's just that we don't want to start by crowd sourcing. We want to give a direction and then crowd source. And then we think that that's going to give a bit more of a cohesive style to the visual style and the music, audio style, sound style, auditory style... [CHEMA] The same style. Genre maybe, yeah, I don't know. "Will URP be used instead of the default RP?," yes, we are using URP. Can we suggest a direction in the forums? Of course you can suggest, I'm not saying that you can't. It's just like some macro decisions are already set in stone. [CHEMA] Yup. [CIRO] And never forget that this project is open source, so it means that all the Assets are available to you to use, to take, to manipulate, so this is our repo, right and then you can spin off like your version, if you wanted. I mean I think if I was you, I would spin off the version like once we're finished, not now because otherwise, you have to construct the game yourself. But in five, six months, we're going to have something very nice, I think and then you can put your spin on it. If you want to add physics, if you want to add machine learning, it's yours to take and use. Yeah, exactly. I love this song. Can I put this song a bit louder? [LAUGHS] Ciro always forgets that we're not hearing them. [LAUGHS] Yeah but the viewers can hear them. Yeah. [LAUGHS] I think that we can now turn off our cameras and our microphones and just chill in the chat for 10, 15 minutes. Yes and we're going to keep replying to your questions, so please feel free to keep typing questions, we're going to be there, we're just not going to be there on voice, or on camera. [CHEMA] Yeah. [CIRO] Cool and we'll see you in another two weeks. We're going to be here with some more progress, some more art, some more codes, some more PRs, some more issues, GitHub issues, not like... [LAUGHS] And thank you so much for following this second episode. [CIRO] See you in two weeks. [CHEMA] Thanks, everyone. Bye. Thanks, everyone, thanks for joining, bye. [CIRO] Bye-bye. [CHEMA] Bye. ♪ [MUSIC] ♪ ♪ [MUSIC] ♪
Info
Channel: Unity
Views: 41,090
Rating: undefined out of 5
Keywords: Unity3d, Unity, Game Development, Game Dev, Game Engine, Open Projects, open source, Chop Chop, game architecture, complete project, development process, gamedev, chat, chill, livestream, open-source, relaxed, c#, advanced gamedev techniques, gamedev tips, development tips, programming tips, advanced programming, patterns, gamedev patterns, game dev patterns, unity patterns
Id: ukE73ifSrTM
Channel Id: undefined
Length: 126min 49sec (7609 seconds)
Published: Tue Oct 27 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.