The Journey: Ep. 3 | Open Projects

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
♪ [MUSIC] ♪ [CIRO] Alright, here we go. We're live. [CHEMA] Hi. [CIRO] Can you hear us? Can you hear us fine? I hope so. [AMEL] Yes. [CHEMA] Hey, everyone. Hello. [AMEL] Hello. Welcome again to the third episode of Open Projects: The Journey. The journey because it's a long journey. We're making something special and this livestream is supposed to give you an update on what we're making. And with the third episode, we're now basically one month and a half in, right, girls? [CHEMA] Yeah, I think so, yeah. [CIRO] Almost two months. Wow, it's been that much? Yeah, time flies and even then, we're still at the beginning of the journey, as you know. So, I'm here with Chema and Amel, my name is Ciro. And with us we have Carol, actually from our Community team, Carol, do you want to say hello? <i>[CAROL] Hello, I'm Unity in Chat, you can talk to me as Unity.</i> <i>Please refer to me as "Unity," please.</i> Yes, whenever you get a reply from the official Unity account, it's Carol, our shadow teammate, I guess. [AMEL] Yes. [CHEMA] Yeah. [CIRO] Alright, cool, let's get started. So first things first, some people here, maybe it's the first time you see this show and maybe you're wondering, what is actually Open Projects? And so we wanted to give you a small update or I guess, a recap. [CHEMA] So Ciro, what is... What is Open Project? Well, I guess I'll give with this camera here. What is Open Project? Open Project is an initiative which we conceived, I guess, six months ago. And the idea was basically, when we stopped traveling because of the current situation, we wanted to connect more with the community of creators. And we came up with this idea with Open Projects. And Open Projects is an ongoing initiative. For now, it's going to last like six months, where we make a small vertical slice of a game together with the community, and this game is open source, that's why it's called, "Open Projects." How's it going so far, Chema and Amel? [CIRO] What do you think? [CHEMA] I think you said it all. It's really exciting, I would say, to see all these updates coming and I really like how we do this refresher every time to bring more people and say, "Hello, you're not late. You can still join," so we always try to do this recap, I would say, every time we start. And then I think those people who just joined might ask as well, "How can we contribute to the project? How can we really get started?" and maybe Chema has the answer, I would say. [CHEMA] Yeah, so to contribute to this project, first you have to download the project because we have this project. I don't know if we can see it, Ciro. You can see it in the repo. I guess I need to, one second. [CHEMA] Yeah. yeah, so... [CIRO] I'll give you this one. Okay, thank you very much. So I'll have to open the... [CIRO] Sorry, you wanted me to show it. [CHEMA] Yeah. [CIRO] Sorry, my bad, my bad. Okay, no problem, I think that the community will understand. Okay, first you have to go to the Git, you have to download the project and see where we are right now. Also you might need to go to the forums to discuss whatever you want to do in this project. And you might also want to go through the Roadmap in Codecks, which is... I think it's a game design... [CIRO] A project management tool... A project management tool, yes, exactly. [CIRO] specific to game development. Exactly, yeah. So as you can see here, we have a lot of decks, each deck contains cards and each card can be an action that you can own, discuss in the forums try to achieve, so for example, here we have... the game settings system which is attributed to the community and if you want to discuss it, you can go to the forum thread by clicking this link here, and you can discuss it and you can see that people already started talking about it and started having pull requests and other things. So yes, that's how you can participate to this project. If you want to find the link, I think Carol is putting the link in the Chat? Anyway, otherwise, [CHEMA] Yeah. you can just google Open Projects and then you can find the repository. And these three items that Chema just highlighted are basically the beating heart of this project. So just to recap, on the repo, you'll find the project, the literal assets that you can download. On the forums, you will find discussions and you can see that there's plenty of discussions that have just been updated. This is just like the last two hours, I think. Yeah, it's crazy. And then you see New Alert, this is a new discussion. It's relentless. It's relentless. And then the Roadmap, where you'll find all the items that we need to work on. And actually, there's also a game design wiki, which details like how the game works and we are obviously updating it all the time, so in here you'll find how the game works and where we're going, basically. The Roadmap, right, that's the name? Yeah, and I don't know if we can open the "Up for discussion" deck? We will see here that we have the game title because we are discussing the game title. I think that on this point, I'd say that I have a big announcement for you guys today. Today is the day where we're going to reveal the title. [LAUGHS] So I hope you all are excited about this because I'm really excited, and I don't know if it's going to be like a shock or not because I don't know what people are expecting as a title to win. But I would say that we have a surprise, so stick around and we're going to announce this very, very soon in this livestream in this episode today. And then I wanted to maybe, let's all start by giving a recap of what we have shown previously in the last episodes. So previously in the Unity Open Projects' journey, we have shown a few systems we introduced and we have a lot of updates we started to share. Of course we are not going into details, but we want to point more in which episodes you can find which part so you can easily find this again. And also we added time stamps for the different previous videos, so you can go straight to the point to the one that you want. And I think we can get started with the Toon shader. That was like the first big step. I would say in the project with Ciro. Yes, the Toon shader is the first thing that we shown on the very first episode. It was basically one of the very few things that we had to show two weeks into the project. So, we dedicated a big section in the first episode and as Amel said, we added, how do you call them again? Chapters. [AMEL] Chapters, yes. Time stamps to the... [AMEL] Video. to the video, so now you can basically go back to the video and quickly jump to the point where we talked about these systems. The Toon shader, I'm just going to give a very, very, quick back look at what we shown, but I don't want to go into too much detail. But if you watch the video, you'll understand the logic, but I want to show you where you can find it. If you open the project, you'll see a folder called, "Shaders" and in here, you will see a Shader called, "Toon." And then you can open it. I should've opened it beforehand. And as you can see, it's a pretty elaborate Shader that actually has a bunch of parts. It calculates the lighting and then it creates also an outline, a toon outline, to recreate the style of the illustrations that we have in the game. Just to give you can example of how this looks, if I take the character, just here, that's what the Shader looks like, right. So, it's a full Toon Shader that has two bands of lighting, solid and shadow. And then it has this Toon effect, which is pretty cute on the characters, and it doesn't have it on the backgrounds. This is a very simple Scene, I don't want to spoil but we have more stuff. We'll show it to you later. But yeah, again, first episode, if you go there, you'll find the Toon Shader. And then what else we talked about? We talked about the State Machine, which is inside the game and actually, if I bring back the character. In the game, we introduced a State Machine solution, which is actually made by the community. If you remember in the second episode, I talked about it and I've shown the structure of the State Machine. And again, going very, very fast, this is just a very quick recap. The State Machine is a way to have this flow that goes between states, so you have characters, for example, that can be in the Idle State and as you press the controls, they're going to the Start Walking State, sorry, the Start Walking transition and they transition to another state called, Walking. And again, this is something we've shown in Episode 2, I think. [CHEMA] Yep. [CIRO] Correct me if I'm wrong. If you want to recap on this, jump back to that. And again, this is a very interesting one because it's a contribution that comes from our community, specifically it's from a user called Deivsky. But then other people jumped on the contribution and added to it, so the State Machine is actually now changing a lot. Which is, I think is the interesting thing of this project. We've shown something, for example in Episode 2, and now we're in the position where it's evolving. And maybe in a couple of episodes, we'll show it again, right and we'll show you how it's evolved. And one big thing, one big point for me, for this project, is to do this retrospection and look back and see how a system or something has evolved in the development of this game. The things that, for example, the community is working on with the State Machine specifically is two things: one is improvements on the UX. Because if you go to Unity, actually, and I'll show you how this looks for now, the State Machine right now looks like a component that you see here in the Inspector which links to one of the States. And then this state links to a bunch of actions, so these are the actions that the character is performing in that state. And then it links to a bunch of Transitions. So the Transition, sorry, the Idle State can transition to these other states and so forth. So as you can see, there is a lot to do with the UX. Like this tool is fantastic but creating one and especially tweaking the State Machine is not super fast, so some members of the community again, they still have that work on improving it. And that's something we're going to see in the coming weeks. So again, if you're curious, you can actually go right now on the repo and find some pull requests regarding the State Machine, which are looking to improve on that. And they're going to be pulled and merged into the repo in maybe the next week. That's one more interesting thing that is evolving. Yeah, I think it's interesting because it's an open project, we see how it really happens, and not only the final project, but more like the iteration and the steps we go through and I think this is really interesting to see and to learn from as well. [CHEMA] Yeah. I think so too. Talking about updates on Episode 2, I have another update that I want to remind about, which is the Event system that we have worked on along with Scriptable Objects, so we have made this example, as you can see the different Events. And we have shown examples where we raise Events with no parameters. So, it's called, Void Event. An example of this was the Exit Game button pressed, we'd shown an example if we want to use an integer as a parameter and we also showed an example for the Scene loading that takes two parameters, the array of the game scenes that we want to show and a Boolean to say, if we want to show the loading screen or not. And again, to remind why we use this approach of Scriptable Objects combined with Events, it's because we wanted to use, to avoid using Singletons and then this system is much more stable and much more avoids having those rigid connections that break things easily. So, I want to go quickly to the Unity Editor and I want to show what the updates are that we have got. And it was interesting to show actually how we went through these updates. After releasing these, of course, some people went to the repository and one of the users pulled the project and he put a message on the thread, "Oh, so I pulled the project, the latest version, but I can't press Play from the main menu Scene." The problem was because we always go through the Initialization Scene with the previous system that we had the last week. So, we thought maybe at some point, we want to just test some Scene and we don't want to play the whole game again. That's really an interesting point that he raised and we were like, "Oh, let's add the possibility to press Play from any button," so we added that task in Codecks in case you have noticed that and we have implemented that and pushed it to the repository. So now, if I go to my main menu, we can see that it has this EditorInitializer Prefab. And this contains the script that we'll basically check if I press Play from this Scene and I don't have the Initialization Scene loaded, then I will load it because it's the one that contains the listener to open or start the different locations. So now, even though I'm not in the Initialization Scene, I'm in main menu, if I press Play, we will see that when the menu appears in the GameView, we can press Start. And now we can have the game loaded normally and we can do this from any Scene basically. Now we don't need to go through the Initialization Scene anymore. We can press Play from any Scene, all we need to do is just drag and drop this Prefab which is called, EditorInitializer. And this is... [CIRO] That's a good point, sorry to interrupt, Amel. I think creating these small tools seems like such a small thing for now because what does it take you to just drag another scene and press Play every single time, it seems like a small thing. But as we move on and we need to test different scenes individually, more and more, like imagine when we have 20 locations and now you want to edit a cutscene in Scene 1, but also a cutscene in Scene 2, then you need to jump back and forth, so it's really important to create these small tools. In this case, you might almost call it a hack, right, because this tool doesn't go into the game. Into the game, you will always start from the beginning. But for us, as we develop, it's really important to have a way to start from any scene [CIRO] at any point. [AMEL] Yeah, yeah. And we actually saw a lot of contributions for some Editor tools and we have a section later to talk about the community contributions, so stay tuned for that one too, we have some solid contributions, I would say. And other than these updates, I think in the last episode, Chema talked about the wireframe and may it's nice to have some refresher on that as well, right. [CHEMA] Yeah. Actually, yeah, we talked about UI wireframing, and as you can see, it didn't change much because we started the discussion after this. Actually, let me remind you what the wireframing is. So here, we have the user interface and how it will look like to help us see how the user will interact with the game. For example, if we go to Menu, we will have buttons, we will have the title and the main focus animated Scene. The thing is, it will not be in this order or it will not look like this. It's just to help us see how to interact, how to go from one Scene to another and also to raise some concerns, for example, for the mouse or the joy pad or some things like that. And while doing that, the discussion that ensued is actually around the inventory and how to use it to cook and what is the cooking system and how the In Game would look like. So, this actually was a discussion that we had with the team and with the community, and we decided to have something like this. So, this will not be a game flow. This is a new thing, actually. Now that the update is finished, I'm going to update you on the cooking system and the game design. This actually is something like a flow, a diagram, to help me explain to you what is the new game design. We will start with the Start game here, this is a Start button. Sorry, not Start button, this is the start of the game. Then after the start of the game, you will go to discover the first location, so here, we will understand the cooking mechanic, this is to discover the first location and the cooking mechanic. So first, we are going to find an ingredient and then we are going to find a cauldron to cook in and then we are going to cook a recipe with the ingredient that we have and the recipes that we already have in our recipe book. Then we are going to go to the next location to have a character interaction, so we are going to interact with another character. We are going to get a mission and this mission will not be clearly stated, so they will not tell us, "Well, look, your mission is to go check something and get back to me." The mission that they will give us will be in the form of dialogue so they, for example, will say, "Oh, I love antiquities, I have a collection of spoons," and if you find a spoon as a player, if you find a spoon somewhere in the world, you can go back to the first character because you know they like spoons and you can give it to them or show it to them. And, for example, here, the answer will be, "Oh, this is awesome. You're on the right path to have your own utensil collection. Here's a fork to help you." So, this actually will not change the way to cook. You still need to have ingredients and utensils. But the thing is, it's not always just droppable. You can interact with a character and get a mission, and then once you achieve a mission and you go back to the character, you win a prize. This prize could be an ingredient, a recipe, or a utensil. The mission could be, "Oh, go look for this," or, "Go give me this dish or this ingredient," or something. Once you have the prize, you can go find a cauldron again and cook in it, and that's the tutorial phase. Then it will be a loop between interaction with characters, mission and prizes. Also, once you go to another location, you can find a critter and fight it. So, this is not clearly in the tutorial, but it's still a new thing to understand, but then once you know it, you can do it again during the game, so you find a critter, you fight the critter, and then you pick a droppable, this can be either an ingredient, a recipe, or a utensil. And actually, somewhere in this loop here, you will find a character, which is the key character that you need to interact with. This character is very close to the legendary chef, and they can give you the last recipe. But the thing is, they give you, at first, a long-term mission. So, the thing is it can be, for example, an old lady that knows a lot but has memory issues and that needs refreshment, so you need to find something to refresh their memory to give you the last recipe. Once you achieved the long-time mission, you interact with the important character again and you win the prize to prepare the winning recipe and to end the game, well, the vertical slice of the game. This is the new-ish game design. It's up for discussion, but for now this is what we landed on by reading from the threads and seeing what people are looking at in the cooking system, etc. I think, Chema, I really like how you used the notes, specifically in your diagram because that's exactly what, it's like a suggestion, right. So, these little yellow notes that you left close to the nodes, it's like the nodes are the flow. Sorry, the nodes, the blue nodes are the flow. The notes, the yellow notes are your suggestions. [CHEMA] Yeah, exactly. [CIRO] It's like what we think will be some example Events, we will call them. Yeah, we can call them that, yes, exactly. So, as I said, these are some propositions to improve the game design. I will write them in writing and we will add them to one of the cards, the wiki cards. We are still discussing with people how they see the cooking system and what is the reason to have a dish. So, the reason for now to have a dish is to... win a mission, to achieve a mission, so for example, creating a dish could be a mission, or it could be to heal the player once they fight a critter. So, this is the reason to have dishes, and this is the reason to have the cooking mechanic. And just to clarify, so you just mentioned mission, heal the player, and then obviously, creating or cooking something is the way to win [CIRO] our game then, right? [CHEMA] Oh, yeah, of course. And what I wanted to specify because there was a discussion that was going on the forums, is that we can make something more, we can make the cooking system do more, but if we plan that it does more from now, then we're widening the spectrum of the gameplay a bit too much. So, for now, we're just keeping it a bit tighter in some way and we're seeing, it makes you win the game, it makes you progress through the game and it just heals the character, for example, the dishes that you create. Later on, if we have time, fine, let's give it more uses. But as usual, I'm like the gatekeeper and I'm always trying to keep the project small, I'm like the... [CHEMA] It's a vertical slice. [CIRO] Yes, exactly, it's a vertical slice. Again, we have six months. What did we say, one and a half month in, right? [AMEL & CHEMA] Yeah. [CIRO] It sounds like a lot of time but time is going fast and there's still so much to do. So, let's keep it narrow for now and then if we see that we have so much time still to go at the end, we'll expand the functionality and the gameplay as Chema detailed it on the... graph, I guess, this diagram, yes. [CHEMA] On the Miro board, yeah. I don't know if we have questions in the chat that we can... [CIRO] That is a good question. I saw somebody asking if the story is going to be linear. Chema, I think you're the best person to answer. I don't think it will be linear, but we will have some, how do you say it? For example, to go from character to character, you need to have a mission, and you can go back to the first character or the second character, it will not be linear but at the same time you would have... how do you say it, you would have... sorry, a progress that will not be visible in the game. You will not have a UI for the progress, but we know that we have a progress for the player to go from one part to another to get a utensil, to get an ingredient, to go back to the first character or the second character to win the prize or something like that. So yeah, I don't know if it's kind of semi... I guess. [CIRO] It's kind of what? [CHEMA] Semi-linear. [CIRO] Yeah, exactly. So, you have a progress that you need to follow but at the same time, you don't have to interact with the first then the second. It's not just one choice at a time, you have maybe three options, but you do need to go through those three options and then you have another step, let's say. And then obviously, they converge towards the end, which is, do you want to show it again, sorry, the end of your diagram. [CHEMA] Yeah, the end. [CIRO] So, there's a unique ending. Do you want to zoom in a bit more, maybe. Yeah, exactly, so you interact with the key character, well, this can happen wherever in the game loop and then once you achieve the longtime mission, you have to interact with the important character again, you win a prize and this prize is actually the recipe that, or the ingredient or anything that will help you to prepare the winning recipe. This is the end part, would be linear, I guess. [CIRO] Yeah, cool. Do we have other questions in the chat that we want to highlight right now? Let's see. Do we have any other questions about the game design for now? I reminded that we will put this, I think in the other Miro board that we already shared, the one with the game flow that contains already the locations, I don't know if we can show it here. [CIRO] The other Miro board? [CHEMA] So this one? [CIRO] Yes, yes, yes. [CHEMA] Yes. This one. So, I will add it here. And as you can see here it's just the location, so for example, beach, glade, forest, the town, etc. And this will not be a problem with the new diagram that we will add because it contains almost the same things, so you go from one location to the other. These two are the tutorial, this one is to fight a critter and then here to interact with various people. Okay, there's actually a question, somebody was mentioning the addressables in the chat. They were basically asking, "Why don't you load things from using addressables or from resources?" And somebody else replied the best way to do it would be through addressables, and on addressables, Chema, is going to talk about it later, so if you want to hear how we're going to integrate addressables and why, just stick with us for another little while. Amel, you were saying? You were about to say something. I was about to read one other question. Someone was asking if there is any other types than MonoBehaviour, Scriptable Object or Editor Window type of scripts, I would say. So, this is also something that we will mention today about the playable asset, I think the one from timeline library, so that's also something we can show an example of today, but there is many more, so we have to answer the question. [CIRO] There's plenty of types, yes. Obviously, the ones mentioned are like the most common, I guess, and they all have their own use. We're using Scriptable Objects a lot in this project, you will see. [AMEL] That's a good thing. [CIRO] Yeah. Yeah. Let's see. Okay, shall we move on? Yes, I don't think we have any questions but still continue asking us and we will try to answer everything later on. We want to remind maybe again that we are going to announce the game title today. [CIRO] You're obsessed. For the people who just joined, stick around for the game title announcement. I'm really excited about the title of the game. But because a lot of people voted and it's really interesting to see how it went in the end. And also, I think now it's time to introduce this system, Ciro. It's not like a system, it's also a package that we are using since the start of the project. But we didn't highlight it yet in any of the streams, and I think it's the time to talk about it, which is the input system. So, do you want to tell us more about this, Ciro? [CIRO] Yes, definitely. So, the input system, as you mentioned, is a package that we introduced basically since the beginning. But the way we're using it, of course, it's more advanced, and it's going to become more and more advanced as we progress through the game. So, the way we use the input system here is actually this way. So, obviously we have the input mapping that the input system comes with, and that's basically an object which allows you to define... Sorry, this is called the "Input Actions." It allows you to define a series of mappings. We have a series of inputs that the player can produce like, for example, moving, jumping, and attacking, interacting. And then through this window of the input system, we can mark them onto different controls. For example, the move is mapped onto the Gamepad Left Stick but also on the WASD of the Keyboard, on the Arrows and so forth. So, as you can see, we have multiple controls. On this note, I want to remind that for this game, we're basically going to go for both controls through a gamepad. So, I have it here. And we're also going to enable keyboard controls and the other option will be to rotate the camera with the mouse. Once we map the inputs like this, the way we implemented them in the game is, if you check the character, it actually has a Script, which is called, "Input Reader," sorry, "Protagonist," that's the name of the Script. And this Protagonist Script MonoBehaviour points to a Scriptable Object, which is called the Input Reader. And this Scriptable Obejct, as you can see, it doesn't really provide any options here, so I'm not configuring the input here, but this Scriptable Object is an asset that reads the input. And if you check the script that is behind this Scriptable Object, which is quite like a long script, you can see that it has a bunch of Unity actions at the beginning. And they match exactly all the inputs that I've shown before in the Input Actions window. So, jumping and jump canceled, attacking, interacting, extraction, move, of course, and so these actions when an object, like for example, the character, has a reference to the Scriptable Object here, it can basically hook into these actions and when the action is performed, the character will react. So, in this case, this GameObject is able to read the input because it's watching this Scriptable Object which receives the Events, sorry, receives the Input from the Input System, invokes some Events, which are these actions here and then this Script reacts to it. And I can show you actually. We actually started implementing... let's see if this works. No, I messed up with the project. And as you can see, yeah, so we started implementing the animations. We have a few animations in the project already. For now, we just implemented the Idle and the Walking and we're going to soon start implementing Jump and Attack and all the rest. As you can see here, I can rotate the camera, and I'm actually playing with the gamepad right now. Then I can move around. [CHEMA] This animation looks so good. The jump is still obviously very rough. [AMEL] Actually someone was asking in the Chat about the animation, so you showed it on time. Yes, it's really new. Like it's not actually pushed yet, but you'll see it soon on the repo. We plan to push all of these assets today. And actually this is also interfacing with the State Machine, of course, so as I'm walking around, the character is moving between the States. As I said before, if I actually select the character, you will notice here, in the State Machine here, you see Current State, as I move around, then it moves into the Walking State. And then at the Jump, Jump Ascending, Descending, so the State Machine is moving between all the different States, evaluating the transitions and it's calling the animations as well. In fact, if I go, if I dive into the State Machine, which is here, so for example, States, Idle, Idle has... this action here, which sets its working parameter on the animation State Machine, which is going to make the character stand still. The animation State Machine looks like this for now. So, pretty simple. As you can see, Idle, if you start moving, it goes into Walking. If you press the Jump button, it goes into Jump. And then it goes back to Idle or Walking, depending if you're moving or not. And then we're going to implement the attack, the Surprised animation and animation to Talk, which is going to be triggered by the cutscenes and dialogues. Actually, I want to call the community for something and I'm going to scold you for this. This character is still, if you see the character moving around, right and then if I jump, you see that he jumps forward, but if I release the input when I'm jumping, he will likely fall on the spot. I don't how to say, like I would expect him to keep going like this. But if I release the input, he falls vertically and I think it looks pretty bad, right. [LAUGHTER] You're laughing but I was not seeing this and the funny thing, the thing that makes me think is that nobody corrected it. We made a lot of progress on other things, the camera field, the fact that now we can actually move the camera with the mouse, right. I can right-click and move the camera, but nobody changed this thing, which I think looks horrible. And if nobody wants to fix it, I'll fix it myself. Just to be clear, it's like I move and if I jump and release the input, he falls, you see, vertically. You get what I mean? Am I explaining it correctly? It's like he has no inertia, right, he doesn't keep going. He just falls like a stone because as soon as you release the controls, the movement vector goes to 0, so he falls down like a stone, you see. [AMEL] Yeah. I think it's really bad and we need to fix it as soon as possible. If anyone makes a PR about this, you'll make me happy. [CHUCKLES] [AMEL] Talking about Input System, Ciro, can you show us more about, I saw that we have the Action Maps in the Input System, so we have different profiles, depending if we are in Gameplay, Menus or Dialogues, like I'm not sure to... [CIRO] Yes, so if I open, again, the Action Map that I was showing before, so I purposely focused on the Gameplay Action Map, which is the one I was using just now so Move, and Jump, and Attack, Interact, and of course, some of these actions don't produce an effect yet like Interact or Attack. But these are all active. You see Rotate Camera, Mouse Control Camera, so these are all actions that are being pulled by the Input System and the Input System is saying this action is happening or not. But then, you have the Action Maps as Amel mentioned, which are basically alternate controls, I guess. A set of controls and as you can see, we have menus and we have dialogues. And what this means is that we have the ability to create three parallel ways of controlling the game, and we can turn them on and off as we want. So, as I'm playing the game, I will be using the Gameplay one. If I'm in a Menu, for example, if I press Pause, I will go to this one, which as you can see is just like Move Selection, Confirm or Cancel. It's pretty simple and we will add something more to this, but that's what it is for now. And then we have a third mode which is for Dialogues and this one allows us to select options in a dialogue or to confirm. It's a simplified one, it doesn't have Back because you don't go back in a dialogue. Again, it's a pretty linear narration. And so by enabling and disabling these three action maps, we can move between different gameplay modes if you want. [AMEL] Yeah, that's actually good because we don't need to somehow listen to all the different inputs if we don't need them, for instance, in the menu, maybe we don't need to listen to everything. We only need some buttons, so we're just going to stick to that input that we need for that specific situation, I would say. Yeah and also like if you think about it, if we had just one map for everything, then we would have to give very generic names to the actions, like Jump and Confirm, or this kind of weird stuff because the A button, for example, on the gamepad would be Jump during gameplay but Confirm during cutscenes. So this way, we can, instead, have... we can have a mapping that really makes sense. So, for example, if the character listens to the Jump button, a menu would listen to the Confirm action and not the Jump one, right. So, everything is super clean and then we can switch, and we always show that characters cannot, for example, the player cannot open the inventory while he's in a dialogue, for instance, because the button is completely disabled, and it's not even being pulled, so the Input System is not even listening to whatever button is mapped to, for example, this action here, which in this case, would be the Button North, which is the white button on the gamepad. [AMEL] Yeah, it's pretty visual as well, it's really easy to put things in place with the Input System. I really like it so far. Yeah, it's been pretty solid and comprehensive, I will say. It allows us to mix the mouse, keyboard and gamepad together, so it's a good choice. It's out of preview, so why not. Yes. [LAUGHS] And actually this gives me the ability to remind everyone that with this project, with this first Unity Open Project, we want to stay on 19.4, right, so we're making it with 19.4 LTS. And we're trying to stick with the packages that are out of preview, so we want a stable product which will allow us to move forward without having to worry about beta functionality. [CHEMA] Yes. [AMEL] Totally. And I think now we mentioned in the Action Maps, Ciro, one of them was the Dialogue, so maybe it's the time to actually show some new updates, I would say, regarding the dialogue and the cutscene system. [CIRO] Yeah, sure. Do you want to jump on it? [AMEL] I would love to. So, I wanted to start with the PR, it's like the meme, this is how it started, this is how it's going. This is how it started, we have this very good and I would say amazing contribution from Rainaldi Satria, who opened this good PR, so we can see it applies to the template that we are using like a link to the forum he gave, the different changes he made, how to see that in the demo. He also made this YouTube link. And then we have different notes with screenshots to visualize different elements that he added and scripts. And I really like this. I like those contributions where we have images, text, and everything explained. And then we can see that we have a discussion going on. And you, Ciro, replied to a lot of these and you made a lot of refactoring, I would say, to this method. So, it started from a contribution, we improved that and now, I wanted to show in the Editor maybe before I actually show in the diagram how it looks. Now if you go to the Editor, you can see that I'm in this Cutscene Example, which you can find under Scenes > Examples. And here I can select the Timeline and lock it here, so if I select another GameObject, I can still see it in the Timeline window. As a reminder you can see the Timeline window from here, Sequencing > Timeline. Great. And then this is the small cutscene that we have, so I'm going to disable Maximize On Play and just play this. We have these two box colliders that are going to trigger the cutscene, so I'm going to get in one of these, which is this one, and now we can see in the timeline that we have the first line, you can see it in the Debug.Log on the bottom, saying, "Welcome to town!" [CHEMA] Can you open it? Yeah, we can. Here we can see it better, so we can see the first line and we can see the actor who said this, and now if I go back to the timeline, I'm going to press Space in my Scene, in my Game View and then you can see we have this new dialogue line that has been spoken by the character, so we can easily see this. And this is just, as I said, like a first version of the timeline using the dialogue system and the cutscene system that we made. Also, Chema, I think later you will show an example with the UI so we can visualize this better. But this is just the first version, I would say, to get started, so before diving technically into all this, let's go to the diagram quickly, which we made with Ciro, to explain how it is working here. I wanted to start by mentioning actually that we have two parts. We have the cutscene part and the dialogue part and explain what's the difference between these two. So, a dialogue is basically when we have the player talking to a character and we don't have any animation going on or any camera movement, so it's just a dialogue, right. And then, at some other parts, we would like to have some camera effects or animations, and this time we would call this "cutscene" and it's not a dialogue anymore. And the way how this is working, let's start from here, we have a GameObject called, CutsceneTrigger. The ones that we've shown in this example as this green box. You enter that trigger but it could be a button, it could be any other action like anything you want, the trigger is just an example. The Cutscene Trigger GameObject has a trigger collider, of course as a component. But it also has a Cutscene Trigger script MonoBehaviour component, and this has reference to the Cutscene Object which is the PlayableDirector. And from here, we also request to start the Cutscene when we enter that trigger. So, we have a reference to the Cutscene Manager as well. Now once we are in the Cutscene Manager, we are doing these two things, here you can see that we are listening to the input. So, as you remember, when we showed the timeline, we print the first line, we show it, and then it stops, it waits for the input of the player to press the Spacebar, for instance or A button on the gamepad. So, this is why we need to listen to the Input Reader here. And we are also requesting to display that line, so we are calling this method called, PlayDialogueFromClip, which calls the Dialogue Manager. And this Dialogue Manager is going to request to display the line to the UIController. So, what I wanted to point to here is, as I said, we could have a dialogue system. This means that all this could be skipped, so we only have a Dialogue Manager listening to the input, itself and then just requesting to display that line. But in case we have a cutscene, then we need to go through the Dialogue Manager to be able to talk to the UIController, so the only way to talk to the UIController is by going through the Dialogue Manager. Now, I just wanted to mention the Dialogue Manager has this dialogue data, which is a Scriptable Object that contains the different Scriptable Objects of the dialogue line. So, here we can see this note that says that this data actually represents a conversation between two characters and it can contain choice, which is really interesting, so we can have maybe at some point we need to choose between pressing this button or this other button, for instance, and this will have a branching system in the dialogue and we could really create cool stuff with that. For now, the dialogue system supports choices. But the cutscene system doesn't support it yet because it's linear for now and we don't have these branches, but we also don't need it for now. In case we decide that we want that at some point, we will, of course, introduce this system. Now, imagine that this timeline that you can see here is the timeline that we saw in the Editor, so the Timeline Asset. We can see that we have two different tracks. I'm going to start with an easy one, which is the one we don't care much about today but just to show as an example is the Cinemachine track. So, this one has a reference, or I would say, binding, the right word, to the main camera, which is the one that contains the Cinemachine brain. And then we have the virtual cameras that are using the Cinemachine, that are having the Cinemachine clip that we need to use to go from one camera to another. And then we have this dialogue track that contains these different clips. And as you can see, like this clip contains the dialogue line. And this is interesting because this dialogue line we are talking about here are the same that we are talking about here. That means that we can use the same dialogue line in the cutscene system but also in the dialogue system, it can be shared if we have, let's say, one sentence that we want to say in a dialogue and then we want to say that again in another cutscene that could be shared between the two. And all these systems that we've just presented, feel free to leave questions in that Chat if you have questions about this diagram or about this system. This is based on custom tracks. and this is something, I think, Ciro can show us more about in the Editor on how to, like, really get started with somehow, I would say, an advanced use case of timeline, right. Yeah, for sure. As you said, so basically, I have the timeline here as well, obviously the Scene is different, the Timeline is quite similar. But what you said is correct, the cutscene system that we want to use is going to be able to use this custom track for dialogues. And as you can see, in fact, when I press plus here, you get to see it here, Dialogue Track. It's a custom track that we have only in this project. Fun fact, actually Cinemachine is also considered a custom track. If you press Play, you will know notice that it's here at the bottom and it's just coming as part of the Cinemachine package, which provides a track... [CHEMA] Actually Ciro, we're not seeing it here because of the title of this... Okay. I got to remove the label. There we go. Cinemachine Track and Dialogue Track. They are two custom tracks for Timeline. And the way it works, the way you make a custom track is that basically, you need to define all of its parts, if you want, so one part is the track, itself. Then you have the clips, one and two clips, and then you can have a special thing, which is called, a mixer and a mixer is not something you see visually but it's something that mixes two different clips. So, for example, Cinemachine has a mixer. You see here, when I'm blending these two clips, the mixer is taking care of blending the two positions in space. We don't have a mixer because if I blend, even if I tried, as you can see, I cannot blend these two clips because it doesn't make sense for us to blend two lines. What does it even mean? So, we don't have a mixer. If we go back to the assets, you will find the track here in Scripts > Cutscenes > Dialogue Control Track. And you will notice it has four scripts. One is the track, as I mentioned, the track, if I were to open it, the track, it defines... Don't even know if I can zoom in a little bit but... The track defines... Oh, no, it's here, sorry. [CIRO] 200, too much? Maybe it's okay. [CHEMA] No, it's good. So, the track defines a few things including, for example, which binding type this track takes, which the binding type, as you can see here, is this object that you can connect here at the head of the track. So, in this case, we're plucking this track directly into the Cutscene Manager. And the Dialogue Track... this is like code that you need to, I won't explain it now, it's pretty complicated. If you want to learn more about this, you can go to either the documentation or actually I published a blog post a couple of years ago specifically on customizing timelines. This is the Dialogue Track. Then we have the Dialogue Clip, which is basically the asset that contains the settings for this clip, which is contained within the asset that contains the timeline. And the Dialogue Clip, as you can see, is a Playable Asset and it contains an instance of what is called a template of something else, which is called a Dialogue Behaviour. The Dialogue Behaviour is nothing else than... you could see it more or less as a MonoBehaviour for Timeline. If I were to open the class, you will notice that in here, we actually have these functions like OnBehaviourPlay, OnBehaviourPause, and you can have functions like process frame, which is a bit like the update of the timeline. The behaviour, as I said before, it's like a MonoBehaviour, it's the one that produces the functioning of the custom track. The clip, instead, is the one that has the data inside. And so when the track starts, it creates, it takes all the clips, and it creates all the behaviours out of it and the behaviours are the ones that play at runtime. If I select one of the clips, what I'm seeing here is the Inspector of the clip. But then Inspector of the clip is showing me the properties of the behaviour, so you can see here I have a Dialogue Line and Pause When Clip Ends and you see them here as options. Here I'm able to basically create as many clips as I want and each one can have its own options because they are stored into these assets. What else, what else? And actually the fourth script that I've mentioned briefly before is called Mixer Behaviour. Remember when I mentioned the mixer of Cinemachine? We have a script, I just left it in but as you can see, it's empty because right now, we don't need to mix anything but I just left it there, in case, later, we want to produce some weird behaviour on mixing the two clips. But for now, again, it's actually unused by the track. That's how you customize Timeline, you need to provide the scripts specifically, the track one, the clip and the behaviour are fundamental. Optionally, you can provide a mixer behaviour, and all together, it creates the functionality of this track, they define the data that it stores and they define the object that it can bind to. And in this case, basically, what the clips are doing, they're calling the Cutscene Manager. Amel, you want to show the diagram again? Sorry. Surprise, surprise switch. So, the clips are calling from the Dialogue Track, they are calling the Cutscene Manager, right, which is there at the top. And they're requesting the line to the Dialogue Manager, so this is like passing these Events forward between managers, starting from the clip. That's is, that's basically the usage of the custom track. It's not really how to create one, but it's the usage that we're going to do for our game. And as Amel mentioned before, the advantage of this is that now we can plug a dialogue line directly into Timeline, right. So, you can have cameras and animations and audio, and then you can have dialogue lines. And dialogue lines are not just text that you output. I mean for now, Amel showed how we output in a Debug.Log but it's going to be much more, it's going to be showing on screen, maybe animated, if we fancy doing that. And the cool thing is that by using this system, the Timeline is going to be plugging inside the, how do you call it, the Dialogue Manager. And so if we have any upgrade to the dialogues, then the Timeline is automatically going to receive those updates because it's not just duplicating the work and redoing the same thing on its own side. Yes, exactly and the cutscenes will contain dialogue as well, so we might just put them together. But the difference is, with the cutscenes is that the dialogue won't be branching, right, because, it wouldn't make sense. [CHEMA] Yeah. [CIRO] If you look at the timeline, obviously you can have a situation where you have a choice and then if you make a certain choice, you jump to another point in the timeline. But it's complicated and it becomes a bit weird to edit because you need to remember where the choices are. I think what we're going for here is a linear dialogue on the Timeline, which obviously matches the action that you have in the other tracks. And then we're going to have a more dynamic system for the dialogues where you can branch and have different choices. Yeah. Exactly, and the thing with dialogues is that, and because we are doing a game for international people and we are many people that are from many other countries, we need to have a localized content. And that's when we are going to add the localization package and the day is today. [LAUGHS] Actually, I want to ask, so before we go into that, Chema, I'm curious, like, where are people from? People that are watching us, where are you from? And actually, what language do you speak? [CHEMA] Yes, especially the languages. [CIRO] Please tell us in the chat. I'm very curious. So I'm Italian and I speak Italian, [AMEL] German. [CIRO] Spanish and English. [LAUGHS] [AMEL] We have to find it in the chat, Ciro. So, I will continue like Ciro, I'm Tunisian, I speak Arabic, English, French and a little bit of Danish. [AMEL] Welcome to the Danish. [CIRO] Chema's learning Danish. [CHEMA] Yes, I'm learning Danish. [CIRO] Say something in Danish, Chema. No. <i>Nej.</i> [LAUGHS] [CIRO] Come on, you have the floor. No, no, sorry. I will not do that. I will butcher this language. So, I'm reading the chat and very, very quickly, I read, "Germany, Morocco, Spain, Israel Hebrew, Finland, though I speak Dutch, Brazil, Argentina, Spanish, Germany, Spanish, USA, English, Italy, Italian, FR," I guess is France, "French, London, Scottish, Italy, Canada, Brazil, Switzerland, German, Turkish, California, English, UK, English, Brazil, Portugese, Romania, Indonesia, Bahasa Indonesia Cat Cat speaks, Euskara, Arabic, Greece, Italy, Italian, English, French, Pakistan, Finnish, Brazil, Polish, Brazil, bla, bla, bla, Pakistan, Urdu, Canada, French." I regret it now because now I have to get to the end. "French, Pakistan, France, Sweden, India, Canada." [CHEMA] I don't think it will end, Ciro. If they keep typing, I will never end. "Polish, Taiwan, Indiana," very exotic. [CHEMA] I think it's better if we say they're from everywhere. Yes, somebody said something in Arabic, I don't know what they're saying, sorry. [AMEL] Well, I didn't see it. And they are not stopping typing. [CHUCKLES] So, two years later. [LAUGHS] But the point is... [AMEL] Yes, I also want to be like I am also Tunisian. Yeah, because I think I was the only one who didn't mention that yet. I'm also Tunisian, I speak Arabic, French, English not yet for Danish but I try to learn a little bit of Japanese and Italian, but I'm really a total beginner, so I would say I'm more fluent in just Arabic, French, English, that's all. [CHEMA] Yes... CIRO] The point we wanted to, oh, sorry, Chema, go. [CHEMA] Yeah, sorry, I think that people will help us to translate in the other languages. [AMEL] Yeah. Yes, so the point we wanted to make is that since like the team here and people here on the stream but also people on the repo in the forums are so international, it would be super cool to translate the game in different languages. So, we're making a small exception here, right, Chema, with this package? Yeah. Sorry, I didn't hear, I was reading the Chat. [CIRO] I said we're making a small exception here because we're basically allowing this package which is not out of preview yet. It's pretty solid, right? It's pretty robust and I think that we can use it and you can use it since you have 2018.3, I think, I'm not sure about the version. But it's actually a very cool package that can help you by providing you tools that you can add support from multiple languages. Not only English, but for example, USA English or England English, or I don't know, Canadian French or France French, etc. So, it's not only languages but also regional variants. And the thing is, it will not only allow you to translate the text but it will also allow you to have multiple assets that can be in these different languages. So, for example, if you have an audio for a language, you can translate it, and you can put the other audio, or if you have a texture or anything. So, it's very robust and I like it so much, I'm so excited to show it today. So yes, let's start. [CIRO] Do you want to give us a demo? [CHEMA] Yes, okay, I think I have the demo here in this scene, just one second. Not that scene. I remember what I called it there. This is the one, so if I click on Play here, yeah, as you can see, I have this Sprite here that if I change it to French, it will change to the other flag, to the French flag. I'm not sure why the title doesn't display anything. But we can see it maybe later on together. [AMEL] I can say this is the French language. [CHEMA] Yeah. [AMEL] This is the game, we need to guess the language... [CHUCKLES] [CHEMA] Yes, I don't know why exactly it doesn't show. Oh, yeah, so okay. I think it's a problem with the aspect, wow. This shouldn't have happened. [LAUGHS] [AMEL] But I can see it, <i>la plage</i>. [CHEMA] Yeah, exactly. Come on, let's put it here and let's click on Play again and let's try it again. As you can see and because I'm translating the word, "the beach," it's "the beach" in English and then if I change it to French, it will be "la plage." That's a small demo and I'm going to show you how we are going to use it in our... project right now. I think after today we will be merging this branch here. It contains the... It will contain the package. I downloaded it from the Package Manager, and also, it will contain some localization files, for example, the localization settings. If we go to Project Settings and we go to Localization, we will see that this is the same information that we will look at. For example, here, this is the localization and If I click on the localization asset, I will see it in the Inspector as well. This will contain different locales. The locale is actually, it represents the region. It determines the language you're localizing your application to, and for this, I'm only doing right now, currently, it's only the English and the French. But if you want to add something, you can Add All to add what you have in your Scene or you can go to Locale Generator and you can choose whatever you want to add. [CIRO] Is there dialects? I'm not sure, I don't think so. [CIRO] Very interesting dialects. [AMEL] I know why you want that, Ciro. [CHEMA] Oh, yeah, yeah. There are. There's Arabic Tunisian. See. [CIRO] That's cool. But you don't consider that a dialect, right? Or do you? Okay. [CHEMA] I do. I do actually. So okay. Yes, let's move... actually I'm going to implement the localization today on the dialogue system that we were talking about. So to do that, let's go to our scene, the scene that you were using. Was it a cutscene, I think? [AMEL] Yeah, a cutscene example. Yeah, so in here in the cutscene, as you can see, I have the same as Amel but the thing is I added the UI part, the UI Manager here. So, if I click on Play and I do the same action, let's put our Timeline here and I do the same action as Amel, we will see that we have the cutscene and we have our dialogue that will be written in the UI. Here we have the townsfolk, "Welcome to town!" and then if I skip to the other one, I'll see, "Now head to the town center where the legendary chef is waiting for you." So, these are the two lines that we have in our dialogue. And now, if we go to the Canvas, we will see that we have here the Dialogue Panel that contains, let's put it, Dialogue Panel contains the background, the Dialogue Line in here, it's a TextMeshPro. And then the actor name in here. So yeah, it's a pretty forward UI and the only thing that I'm doing is that I am listening to the Dialogue Manager that will just tell me what line to show. So here, there's the sentence and here, there's the actor name that I'm just going to put on the line and the actor name text. Until now, is it understandable, Ciro? [CIRO] Yeah, yeah, of course. Okay, good. So let's move to how we are going to put those two lines in a different language. What we are going to do is that we are going to go to our Localization File, the Asset Table here. For our other example, we have the Flag Table and the Scene Names Table. So for example, to show you how the flags are changing, I'm going to open in Table Editor, so I just click on the Flags and then I open in the Table Editor and I will see that I have the image for the flag and it's simply selecting the asset that I'm going to show in that locale. What I'm going to do is that I'm going to create a new Table Collection, so I'm going to go here and the new Table Collection will actually be called, let's say, Dialogue. And then I have the choice either to create an Asset Table, so for example, if I have an asset, either a sprite, an audio, etc., anything, or a Sprite Table, and for this we are going to create a Sprite Table so let's create this one. And then we're going to choose where to put it, so let's say the Asset Table folder. Now I will see that I have this new table here and I will add a new entry that I will call "1st Line." Oh, nice. "1st Line," so this is the first line and the first line will be, I think "Welcome to town!" in English and what will it be in French? So, Amel? [AMEL] Yeah? "<i>Bienvenue au village!</i>" [AMEL] Yes. <i>Merci. Oui.</i> [CHEMA] Does this work? [LAUGHS] [CIRO] Chema, why do you check with Amel for the French? Do you speak French? Yeah, I speak French but I want to check with her. [AMEL] I am the girl who lived three years and a half in France. So, the second line would be, I think it's, "Now head..." let's put it here. So it's, "Now head to the town center where the legendary chef is waiting for you," and in French, it will be, "<i>Maintenant dirigez vous vers le centre</i> <i>où le chef légendaire...</i>" [CIRO] Is that real French? [LAUGHS] [CHEMA] <i>Oui, oui.</i> [LAUGHS] [AMEL] Yes, I confirm it too. [AMEl] I hope you're going to live dub the stream. [LAUGHING] So this is the first line and this will be the second line here, and these are the keys that we will be checking to have the text that we will be displaying in the UI. So now that we have our Localization Table for the dialogue, let's go and use it. Where can we use it exactly? We're going to check the lines, the line of dialogue so we're going to check the Scriptable Object that we have for the lines here. And instead of having a sentence directly, we are going to change this text to another thing, so let's open the Dialogue Line. We are going to change the string here that we are using for the sentence to Localize... I think it's Localized String, if I'm not mistaken, so now it doesn't know it because we are not using the UnityEngine.Localized but we are going to add it and now it recognized it. We need to also change it for this local sentence here, the private one and we need to remove the text area because it will not be a text area anymore. It will become a localized string, and let's see what that means exactly. So if we go back to "head to center" here... Oh, wow. yeah. Because we are using it here so let's just remove it for now. And let's continue. If we go back to lines and we go back to "head to town," here, we're going to see that, "head to center," sorry. So we are going to see that this line here, the sentence is becoming a localized string and what that means is that if we click on the string here, we can choose between... we can choose what entry we are going to do to display on the screen but what entry will be the localized string that we are going to use. So I think that "head to center" is the second line, so let's choose the second line. So if we open Sentence here, we see that we are using a Table Collection Dialogue. The entry name is the second line and in English, it's this, in French, it's this, and if we need to change it even from the Scriptable Object that we are working on, this change will reflect on the table that we are working on and we can add either another table or another table entry, etc. So yes, it's very awesome, I think. [AMEL] Yeah, yeah, I really like it. [CIRO] That's pretty cool. Let's do this also for the "Welcome," and we are going to choose the first line. And what that means is that for now, we are not going to pass a string directly, we are going to pass a localized string. Let's check how we are going to treat that string here. So if you go back, actually, I think I'm going to go back to the test that I did with the localized string, if we check our text here, we will see that in addition to the TextMeshPro, we have a localized string event here and this localized string actually takes, so for example, if we choose Beach, takes the string reference and adds it, sorry, changes the text here, changes the text that we have in TextMeshPro. So let's go back to our dialogue, the cutscene. And to have this component, it's pretty simple actually. We don't even need to add it directly, so let's go to the dialogue line and we just click on these three buttons here, and you will see that there's Localize, and if we click on Localize, [CHEMA] we will add. [LAUGHS] [CIRO] That's cool, I didn't know. Yeah, we will add the localized string event, and this is actually, this will be the component that will listen to when we change the language or when we change the region or when we change the locale exactly. And it will change the text that we have here. So yeah, it's kind of cool, actually. [CHUCKLES] We're not going to use the Scene name. For now, we are going to say this is none because the string here that we are going to display will be changed through the code, through the Dialogue UIController, so let's go back to the Dialogue UIController, and we're not going to change the TextMeshProUGUI. We are going actually to change. To do that, we are going to be using UnityEngine... .Localize and we are going to be using a Component. This component is the one that we have in the Scene, which is the Localized String Event. So this is the component that we will be using. We are going to... actually change the String Reference. So let's go back to our Scene, and I will show you directly here. We are going to be changing the String Reference here. So if we open... We're going to get it from the Dialogue Line, and in this Dialogue Line, we will have the sentence with the Scene. [CIRO] So these are properties of the Scriptable Object, right? Exactly, but now this sentence is not a Text anymore, it will be a String Reference. Sorry, a Localized String that we will assign to the String Reference that we have in the Line Text. [CIRO] And that will allow this localization system to pick the right entry in the table? Exactly, and we can test it directly from, let me just open, again, the Editor. [CIRO] It's probably compiling at this point. Yeah. [LAUGHS] If we test it again now, if we click on Play, you will see that we have a GUI here that we can change from English to French from the locales that we have and if we enter here... oh, it's not working because we didn't assign it through the Inspector, so we just drag and drop it here. Play again. We have this first line here that we can change to French even when we are in Play mode. And it will continue to the other one. So this is the second line and we can change to English. [CIRO] That's quite cool. That's pretty cool because then, basically, this allows us to not need to, for example, reload the game if the language is switched, right, like that's a typical case sometimes [CHEMA] Yup. [CIRO] with some other localization systems, especially when you build one from scratch, it can be really hard to actually refresh the whole UI. So sometimes games require you to restart the game or to at least exit the main menu and reenter the menu. And with this system you just showed, we could basically potentially switch the language midway through a cutscene and even with the text on screen, it will jump to the other language which is quite cool. Nice, nice. The other thing that I wanted to say here is that the localization package and that's what you said earlier, Ciro, that I'm going to talk about, addressables. So the localization package is actually built on top of the addressable asset packages. So it actually means that by default, Unity Store's localized asset bundles. Yeah, so we're using the addressables here. [CIRO] That's cool. It means that basically you're never loading all the assets for one specific language at the same time but they are loaded and unloaded as you need them, right? [CHEMA] I think that you can do both. It depends on what you choose. I'm not sure. [CIRO] And so, just to recap, so basically we have this Scriptable Object, which are the lines of dialogues, right? They contain a reference to a localized string, is it called? [CHEMA] Yes. Exactly. [CIRO] Okay. Then the timeline has a custom track, which takes the Scriptable Object and passes it to the Cutscene Manager together with the localized string, right, and the localized string goes all the way to the Dialogue Manager, which displays it on screen by finding the right reference in the table of localization. Did I get it correctly? I think that what you are passing is a localized string and the localized string is actually the string reference that the component, the localized string component will use. And uses that to find the right string [CHEMA] The right text. Exactly. [CIRO] which is the final text inside the table. And then you can always switch that and it will update it in real time. That's cool. That's cool. Shall we look at some questions in the meantime because we have a lot of questions in the chat actually that I wanted to recognize. So let's see, did you see any question that was interesting? Somebody was asking if we want to translate the names of the characters as well. It's a possibility. Yeah, I think it's possible, it's very possible. Like we do the same for the actor name that we did with the dialogue line. Yeah, okay. Because obviously one of the characters is called "Townsfolk," so that's a possibility. How would you translate it in French? I'm actually asking the chat because somebody was mentioning how would you translate "Townsfolk" in French. Actually, I think it's<i> villageois</i> or <i>citadins</i> or something, I'm not sure. And then let's see. And this is the right answer. Yup, somebody replied,<i> villageois</i>, okay. Somebody says what about node-based dialogues? As in if we're going to have them or how do you make them? Because we will have some kind of dialogue branching. The Scriptable Objects that contain a dialogue will have an exit option and it will have more than one, so you will be able to create branching, which means that when you see the dialogue on screen, you will then be able to select an option and that will take you to another branch. But this is not connected to the translation. The translation is just going to be like the final string that gets displayed on screen. And somebody is asking, Jason Storey is asking if you're going to be populating the Scriptable Objects manually? Good question. That's a good question. And he says, "It seems you will have an easier time crowdsourcing populating a shared Google docs, Google Sheets docs, for lines and creating an importer." I think, what's the name? [AMEL] Localization package. [CIRO] The localization package supports importing Google Sheets. So we're going to look into implementing that as a next step. For now, we just wanted to bring the package in to allow people to start playing with it. Obviously, we are probably going to do the translations as a shared Google doc that everybody is going to be able to vandalize. [CHEMA] Yeah. [CIRO] Hopefully not. And then we're going to look into the importing and bring in these strings into Unity and putting them into a table. And then from there, we're going to link those table entries to the Scriptable Object that Chema just demonstrated. There's a bit of stuff, we can see if we can automate that, but obviously there's a little bit of... composition of all the table entries into like dialogues and lines and everything, which is more of a design decision rather than just like importing strings in mass. Yeah, so now, I think that when anything, any system is using, sorry, strings, they need to take into consideration that they could use the localized string and then we are going to create a table for it. Yeah, definitely. David Rodriguez asks, "Would you not give the characters names rather than just name them all "Townsfolk"? Yeah, of course. They're not going to be named "Townsfolk." Don't worry. That's just a temporary name to refer to the character because all the townspeople are going to be a variation on that 3D model and they're going to be dressed differently with differently accessories. But right now, we only have one avatar, if you want but they're going to have names and a role in the story, if you want. And somebody else was asking also Chema, this is for you, if the Localization System supports parameters, variables, plurals, and other localization stuff? [CHEMA] Yeah, it does, it does. I think you can check it on the documentation because it's a very long document that you can read about, but yeah, it does. It has a smart, I think it's called "smart strings," I'm not sure. Yeah, it does support variables, for sure, so you can inject variables inside localized strings and place them differently, depending on the language. Miley is also asking a similarly related question where she asks, how would you enter pluralization in different languages and when certain languages have genders assigned? So the localization package is ready to support all of these. It's a very, very smart system, actually. They did a lot of research. It's not just done from the perspective of one language because obviously then you don't account for the specifics of other languages and every language works in a different way. The only thing that I'm going to say that maybe it's going to be challenging is non-Roman alphabets. We're going to look into that because that requires a little bit of more investigation. We have different fonts that we need to import and we need to find the right font and then obviously there's the question, Chema and Amel speak Arabic so you know, Arabic works right to left, it's not left to right. Like the ligatures between the letters, so yes. Yes, the ligatures, yes. So letters have to be connected, otherwise the language doesn't make sense, right. So we're going to... look into that but for now, we put, as Chema has shown, we've put only English and French just as a reference, just to show you how the system works so you can get familiarized with it and then we're going to start introducing the other languages. So please, don't make PRs for new languages. They're going to come but not yet. Yeah, we will create a Google document shared. Yeah, this is really exciting. I really love this package. I would say this is on my top three favorite packages in the project. Alright, come on. Now it's your top tier package. I didn't even know you had a leaderboard of packages. My top three is now, localization just made it in, so thank you for this overview, Chema, I really enjoyed this. I'm happy to do that. So yes, I guess, maybe, again, we can remind people about the title that is coming very, very, very soon. And I would say, really, really soon. [LAUGHS] Checking if people have more questions in the chat. "Do we need to specify all the sentences in the localization package or it will translate everything automatically?" No, no, we need to specify them all. It won't translate anything. Yes, I was copying and pasting from an Excel sheet, just so you know. [CIRO] You were copying and pasting? Yeah, I was copying and pasting the two dialogues, the two lines. [CIRO] Ah, you mean now, for the demo, yeah, of course. [CHEMA] Just explaining because... [CIRO] Maybe that was confusing. Yes, exactly, that's why. [CIRO] David Rodriguez says that his personal leaderboard is Input System, Cinemachine, and Localization. Okay, fine. [AMEL] It's almost the same, I would say. [CIRO] We have more packages coming in actually. Sorry? Do we have other questions for the dialogue system maybe earlier? Because I don't think we answered those. Do we have them? Actually I wanted to reply to a question from somebody before called, "Lion," I hope he or she's still connected. They were asking if they have to learn all the systems before trying to contribute to understand the process. I mean, you need to understand obviously what's going on in the game. You don't need to learn all of the systems, you need to learn the ones that you're going to be touching, right, the one that's going to be contributing to and we're trying to keep the systems separated. But obviously, that's impossible. As we progress into the game, the systems are going to be interconnected and speak with each other, for instance, Amel just demonstrated how the cutscene system that relies on timeline can speak with the dialogue system. That is something that concerns the UI so we're going to connect them together. But what I want to say is that for now, if you open this project, the project is still, I would say, simple enough, right now. But it's getting more complicated and so we're starting ways to provide entry points to the project and what should they be? What do you think they should be? If you want to voice your opinion in the chat, let's say, you're downloading the project right now and where would you want to find a guide on how the project works? Yes, that's a good question. I think it's interesting to get feedback from the community about this and how they want it to be, so we can consider the different alternatives, I would say, or solutions that will make it easier also for you to get started with the project, no matter at which step, I would say, you join. So yes. [CIRO] Wagner Ferreira, he's one of the contributors of the State Machine, he's saying that he's touching the State Machine while having no idea what the Dialogue System is doing. That's possible for now, yeah. [AMEL] Sometimes you don't need to know everything about the project but sometimes just like during the stream, even if you are a level designer, you would want maybe to know more about the Scene-loading system, like out of curiosity or more to understand the overall architecture of the project without necessarily knowing the details or the technical heavy stuff, the code, for instance. You don't really need to know about that. But it's always good to have an overview of how things are working together, so you can somehow do those easy drag and drop or call the Events even though you don't need to code that with script. [CIRO] Somebody suggests a README that links to a website. Okay. [CHEMA] Okay. GitHub Wiki, says David Rodriguez. [CHEMA] I think it's the best thing [CIRO] What I would say... [CIRO] Sorry? [CHEMA] I think it's the best thing to have a Wiki on Git. [CIRO] I think we will have both. One idea is to have the Wiki on GitHub to be the documentation of the project. And maybe we will have something within the project, so that if you download it and you don't even see the Wiki, then it will direct you to the right spot. So yes, that's something we are looking into. Somebody in the Chat just called me "Circo." Thank you. You know that "circo" means circus in Italian. That's not my name. [LAUGHS] Jason Storey says, "I'm a big fan of GitHub pages as a knowledge base" Okay, noted. [AMEL] Interesting. [CIRO] The challenge with this thing and the reason why we didn't do it yet is because obviously... [mics are muted] Do you still hear us? Chema and Amel, I don't hear you. One second. [CHEMA LAUGHS] All good, everyone is hearing us. [CHEMA] Great. [CIRO] Nice. For some reason, you muted automatically but I think we're back. [CHEMA] Yeah, I think everyone is hearing us. [AMEL] Yeah. Okay, nice. Okay, I panicked for a second. [LAUGHS] Okay, do you hear me because I think someone said I'm muted in the chat, just to make sure. You were for a second, both of you were muted. So I guess we're all back. We should all be back. Great, good news. [CHEMA] Great. So we were saying, I think, we don't have any other questions in the chat so maybe we can... Maybe I can talk about the community contributions actually [CHEMA] Oh, yeah. [CIRO] Of course. Because it's my favorite part, I would say, I'm happy to do it. So I wanted to talk about the community contributions that we have so we actually merged a lot of PRs in these last two weeks since the last stream. I can show all of them, of course but you can see that in the PR list, you can see which ones are closed in the GitHub but I'm going to highlight a few of them today and show that. So now if I share my screen, you should be able to see my GitHub and here we can see that we have opened a new whiteboxing branch and the reason why we wanted to do this is, to allow you guys to add your contributions that are related for different locations by doing the whiteboxing here on this branch and we can see that we have this first PR and this PR was made by @itsLevi0sa on the forum and has all helped to put this here in the GitHub so thanks a lot to both of you. So this has been merged, I would show it in a moment in the Editor. I also wanted to show another contribution for the whiteboxing from @Smurjo So thank you both for this and let's see this in action. This is the first contribution for the whiteboxing that we can see. Of course, as a reminder, you guys can use ProBuilder and Polybrush and in case you don't know what they are... [CIRO] And not Terrain, right? [AMEL] And not Terrain, yeah. And I just wanted to show this in the thread just how to get started with ProBuilder and PolyBrush. So Gregory, our friend from Unity left those things for you in case you want to see how to get started But Ciro, yeah, you raise a very good point of the fact that we are not using the Terrain. And I would say we have too many reasons for that. First is because we don't have really a way to make the Toon Shader work in the Terrain, and the second reason is because Terrain is a little bit heavier and because we want to optimize the game and even from a performance point of view, it's better to avoid using Terrain for now. So that's why we decided to go for ProBuilder and PolyBrush as two tools and I would say solid tools actually to create the greyboxing or the whiteboxing for the different locations in the game. So this one is for the beach scene. If I'm going to press Play, and let's see that. So now we can see that we have the new character here and I can move around with the camera. Maybe to the left... And... the good thing is, with the greyboxing, of course, it's nice to try the feeling of the game and see how it is and if we really want this to be this way or not afterwards. So this is just a small example to show you how it is and @itsLevi0sa actually made a video that we have shown in the previous episode. And I wanted to show the other contributions that we have also here. It's in another scene. So this is the second contribution. Let me press Play. And now we can see our character here and let's move and we're going to see. And then again, you can test that to see how it looks like. Both of them are available in the Git Repository. What I would recommend is to create a new scene every time you want to create a new whiteboxing version because if you edit another one, then we would probably have some merge conflicts, and this is something we want to avoid. So please, always try to duplicate the Scene if you want to get started from this one or this other Scene that we have. So feel free to do Ctrl + D or right click and copy paste this to duplicate it and get started from that and iterate on it. So this is for the first, I would say, level design greyboxing, whiteboxing contributions. We also... [CHEMA] It looks very nice. People say that we should ship it already. [LAUGHS] Not yet, I would say, but yeah. [CIRO] Hold your horses. Another contribution that I wanted to highlight is the spawn location, this is also from @jamercer. So this tool will allow you to place the spawn location at the place where you click. And this was the first contribution and then we can find that we have another PR that builds on the top of this other PR. I'm going to just show the files changed to make it easier. You can see that it's a really small improvement, but this makes the Editor tool much more smooth and we are going to see this one and test it. But I just wanted to point that sometimes these small contributions can be really nice and important so feel free to open those PRs if you feel that they are right to do. So if I go to my spawn system, and I go to my location, a spawner, you can see that I can place a mouse cursor and now you can see this preview, this cube, and I do right-click and now this is my new location for the spawn. And as you can see, it's super responsive wherever I go thanks to the improvement that we also got from both users. And we also notice that the location only appears if you have the gizmos enabled so please make sure it's enabled to be able to preview this. So this is a small improvement. And another last one that I want to show today is the simple mouse-based camera controls and you might have noticed that for now we are using the keyboard to change the camera view so let me just press Play and show this new update. [CIRO] This was a request from the community actually, I never considered using the mouse at the beginning because the game was supposed to be gamepad-based but they said no. [CHEMA] Yeah, Ciro. Fine, fine. Fine. So now if I press the right button of the mouse, you can see that I can zoom in and zoom out by moving forward and backward. And we can also move around the character this way and this is really full, so now we can do this. We can easily move around like a real game, I would say. [CHEMA] The graphics are so beautiful. You are spoiling us today. [CIRO] Do you hear the sound? Do you hear the sound? No. It's the sound of my joystick on the gamepad. No, I'm joking, I know that... not everyone has a joy pad connected to a PC so it doesn't make sense to make a game that people can't enjoy. So I'm bowing to the will of the community. [CHUCKLES] I think also we can test this in different platforms, and yes, that was the camera contribution that was added in the Camera Manager here if we just do a double-click to quickly show the Script. So we basically have the different methods that will allow us to see, I would say, disable, for instance and enable the cursor when we are looking around the character, etc. So these are the new updates, I would say, that we have when it comes to the mouse control. And of course this was also added in the Input System, so the mouse is also supported. [CIRO] And actually, with this, this means that we have a lot of discussion going on regarding the menus, right because we want to control the menus with mouse and, sorry, with keyboard and gamepad, but we also need to support mouse because people expect the cursor, so we're going to have some kind of the latest news because that's what's been discussed on the forums right now, is that we're going to have a hybrid menu system where you move the selection, for example, with your gamepad or with your keyboard but as soon as you move the mouse, then you have a pointer and you can click on things. So it's going to be a hybrid menu which is going to be challenging somehow, but yeah. We're going to make it. [CHEMA] Yeah. We are going to make it, we have the community with us. We have a few people really dedicated. They're putting out a lot of stuff actually, a lot of... super cool improvements with the speed that we can't keep up approving them. [LAUGHS] Now let's look again at the Scene, Ciro but I would say we have seen this a lot of times, like this prototype Scene and as you can say, there's a lot of very good quality and the comments, they all appreciate how amazing these assets are. So maybe it's time to give a refresher and updates on the graphics and I think you have something for us today, Ciro. Yeah, so. Yes, so basically... I actually titled this section of the livestream, "The Big Merge" because that's what we're going to do. We have kept the art assets on another branch for awhile but now it's time to put them together, we want to start at least have some graphics, something to play with visually, nothing too big. But as you can see, we have a lot of assets being made by some contractors that we're working it with. These are going to be defining the graphic style of the game, as we said many things, sorry, many times. So obviously we have the character which is a bunch of animations already being made and I think I can show you some of them. So you've seen me control the character before, he has an Idle animation. He has a Jump animation, He has a cane attack, obviously he's not using the stick right now but there's this cane attack. He has a Surprised animation where he actually opens his eyes, and there's a little bug right now. [CHEMA] Of course, because it's live. [CIRO] No, I knew about the bug. The artists are fixing it right now. So he loses his eyes. And there is one where he talks, so he's doing this. So this is going to be used in cutscenes and dialogues. And then there's obviously the Walk animation, the Walk cycle, right. So many of these animations are like... These are actually block outs, they're not even the final quality, but they're progressing. So we're going to be building the full State Machine with this. Then we have his trusty pouch that he's going to wearing on his back. He has a knife to collect things, to collect ingredients. And then he has the walking cane which is here, which he uses to... how do you say? Support himself while walking and also to attack. And then he has the lantern, which is the one that's going to contain the little phoenix chick, which is here, which is being rigged right now. And then we have, this is the sitar of the bard hare. Without the bard hare yet. Then we have the townsfolk. We have a masculine version, let's say, and a feminine version and basically, the idea with them is that we're going to dress them up with accessories so that they look different from each other and then we can create characters. And the accessories are mostly going to be made by the community. So we need the help of the community to make them hats, or small decorations around the neck, or anything you can imagine, like bracelets and so forth. And obviously, we can do texture swaps so they can wear different... [CHEMA] Different clothes. [CIRO] Yes, different clothes. We have a rock critter, which is here and it also has a bunch, a couple of animations. He has... oops, into the camera. He has an Attack animation. And then he has a Walk cycle but they haven't been connected into a State Machine yet but we're almost there. This is what we have in terms of characters for now, and then we have a bunch of objects as you can see like the fern plants, bushes, we have torches and bamboo-made stumps and fallen trees. We have a bunch of different small decorations for the ground and we have bamboo canes. We have a bunch of rocks here to construct the scenery, obviously trees and palms. And this is actually the campfire. [CHEMA] The cauldron. Yeah, where the pig chef will be able to cook. And then we have smashable pottery vases and we have a chest coming in as well. So there's a lot of graphic assets that are being made, and then on the side, actually, we also have some effects being made. So this is a water shader made by @Dickmendra one of the members of the community which actually has been announced. So this is also a collaboration. If you go on the forums, you will notice that a user called, @treivize has made improvements to this water shader so we're getting this water shader with foam and depth effect or something, [AMEL] This is great. [CIRO] which now looks like this. But it's really, really cool, and we're going to be merging it soon enough in this, all part of this, what I call The Big Merge. And actually, in terms of effects, before I switch away from it, we also have another effect from another user called, @recklol, on the forums. And this is an effect to create like a disappear effect when you burn something away. So he tested it on the cane, of course, you're not going to burn the cane but that's the idea. [AMEL] Wow. And also @treivize from before [AMEL] I love it. he's working on a fire system. I shouldn't call it a system, it's more of an effect, particles and shader to simulate fire. So we're going to be merging all of these and we're going to put it into The Big Merge. And as part of The Big Merge, I actually... remade a couple of Scenes so one of them is called "TestingGround_Small" and it's the one you saw before. And basically, if you jump on this version of the game and your computer is not that powerful you can use this scene to just test the Character Controller, if I press Play here, the character gets spawned. "Null Reference Exception," I don't what that is. Ah, it's the Timeline that I put during the livestream. Yeah, ignore the Timeline, but you can use this Scene to test the character if your computer is not super powerful and you want to keep it light. Also obviously Play mode is going to be entered faster. Or you can go to this other scene which is called "Testing Ground," which is a bit more of an elaborate scenario where you can see a little bit of the assets interact with each other, if you want. Of course it's still very crude. I just used PolyBrush to scatter a few assets, on the ground and create a small forest but this is, again, a testing ground that you can use if your game runs decently well. If your computer runs decently well. [CHEMA] I have a question, Ciro, [CIRO] Yeah? [CHEMA] about this actually because I see that the pig is animated, but are we going to use another package for the animation? You're talking about Animation Rigging? [CHEMA] Yes. [CIRO] Yes, that's a very good question, Chema, thank you for that. Actually one request that I asked the artist, if you notice the character, for example, when now he plays the Idle animation, and this is a block out so it's going to improve, but I asked them to make these animations without the walking cane. So he's basically able to perform all of the actions like Walking and Idle and Jumping and Talking without the cane. And then we're going to be using the Animation Rigging to add the cane to the character so that his right arm, the arm that you see here in the front, is going to be holding the cane. So with the Animation Rigging, it will be modifying the position of this hand to hold the cane so that we would modify the animation, for example, for walking and he's going to be holding the cane and using it to walk. And this basically allows us to have two versions of the animations for the price of one, if you want, where he could basically, for example, have the cane during regular gameplay. But then in some cutscenes, maybe he puts the cane down and he speaks with both hands or when he cooks, for example, right. So I'm thinking of an animation where he plants the cane into the ground and then he takes the ingredients with two hands and cooks. And we're going to be using, yes, Animation Rigging for that. So we're going to introduce the package inside the project soon. [CHEMA] Awesome. And that's it, that's The Big Merge it's coming to your GitHub repos very, very soon, probably tonight, I just need to literally push it to main and double check that everything works because obviously the bug is always behind the corner. So yeah. [AMEL] So it's supposed to be on the main branch indeed because someone asked the question in the chat if The Big Merge is going to be in another branch. No, it's in another branch on my machine for now, but I want to put it in main because I want everybody to be able to quickly grab the assets and not having to do tests with the State Machine, for example, in the ugly environment, prototyping environment that we had. Yes, please. We are done with the prototyping environment. So now maybe let's have an overview of the different tasks that we have made so far and maybe reveal new tasks, I would say, alright. Definitely. So... we're going to basically go back to the Roadmap that Chema showed at the very beginning of the stream. And actually, this episode, we really got to this episode... how can I say? We were preparing things until today basically, the things to show because there's so many contributions, and you will notice because if you go to the Roadmap, No. 1, the Codeck is almost empty, like there's a few things I need to refresh some tasks, but there's very little planned for now because everything has been done. We merged so many PRs. And then, No. 2, if you go to this deck here, to the livestream one, which is the one we have today and you open it, you will see that we've done a lot of things. And many, many things, the ones with the blue icon are done by the community. Among them, you see that we have the water shader, as I mentioned before, collaboration between @Dickmendra and @treivize. We have the audio system has been merged in, the timeline track in dialogues that Amel showed. We have an object pulling mechanism by Dave Rodriguez. We have a bunch of bug fixes, the little ones with the ladybug icon are bug fixes, you can see how many bugs have been found and fixed by the community, which is super cool. We have a few Editor tools like the one that Amel showed to place objects by Jonathan Mercer. And so many, many things in this release if you want. And now we need to basically create new tasks. So live. That's enabled a hidden deck that I have here, and I have a few new tasks here. Again, this is going to be finalized... soon, like some of these tasks have very little information inside but that's why I wanted to show them live, starting with this one, accessories for townsfolk. As I said, we need to basically dress up these characters here, which I have in the art showcase. So townsfolk, we're not going to have many models. We're going to have just like a couple of models, and then we need to accessorize them, we need to customize them to make them unique. Obviously, we have other unique characters but if we want to populate the town we need to make this model a bit more special. And so one thing we need to do is to start modeling literally some accessories for the townsfolk and I'm really curious to see where this is going, hopefully, in a good direction. So I'm going to put this one into the 3D modeling, and I'm going to assign some priorities later. Then we need, one thing we should do is branching dialogues so right now the dialogues, they don't allow branching yet, but we want to make sure that the data type supports branching that the Dialogue Manager can pick up and then produce these choices on screen that the player cannot then select. So I'm going to put branching in dialogues also in the coding pile in here. And then we have two different very interesting tasks. So I've shown you that we have the rock critter, the stone critter, which is one of the enemies in the game and we're making animations for it. But we decided to outsource, if you want, slime critter and plant critter. So we're not going to make them ourselves because we had many requests from people they want to start doing something more involved. Slime critter is super simple if you go to the game design wiki you will see the designs in here. Slime critter is this one, it's basically a bowl of slime that attacks the player and the plant is this one. So they're two relatively simple models and at the same time, with the right animations, they can be infused with a lot of character. So this is the concept art that we have and I think there's another file linked here with a little bit more ideas, but basically that's the concept art which you can find in the game design wiki. So I'm going to take these two cards, one and two, and I'm going to put them into the 3D deck. And again, I'm going to provide more information on that because obviously they're pretty empty right now, but yeah. And when I talk about these models, I mean modeling, texturing, rigging and animation. That's what we need. [CHEMA] Yeah, and I know that there were many people that wanted to participate in the modeling and in the 3D so now that we have the basic graphic, we know where we are going. So yes, these are cool new... cards to add to our deck. [CIRO & AMEL] Yeah. Then I have a personal request. It would be nice to have, and this should be really like an editor script or something, but it would be nice to have a tool to replace GameObjects with Prefab, this is a classic need when you, for example, have placed, I don't know 50 trees or you have placed 50 bushes and you want to replace them with trees, that you want to just select them and replace with another Prefab. So this is a very low priority task actually I'm going to assign the priority, it's No Rush. But if anybody wants to measure themselves with a very simple editor tool, I'll just put it here inside the Codeck just, you know, in case you... [AMEL] Plus one for the other one too. [CIRO] Yeah. We need whiteboxing, I guess, also. That's something we come across, I would say, quite often and as you said, it's really no rush but it's super useful. [CIRO] Yeah, definitely. Actually always keep in mind the priority of cards. I'm paying a lot of attention in putting the cards organized by priority, so this is Medium, these are No Rush. So please keep that in mind. There's a reason why I ordered them like that, I don't just drop into the deck. Sorry, and then finally, there's a couple of shader tasks. So one is adding the ability to do random tinting based on position. The idea here is that, for example, we have vegetation, right, and the vegetation right now looks all the same. So every bush looks like every other bush. But it would be super nice to be able to tint the bushes a little bit based on where they are in the scene randomly. So add a slight variation of hue and saturation maybe to the color of the bushes and to the color of the trees, but not the trunk, just the leaves, right. So that's one interesting thing that you can do through shader but it needs to be made so I'm going to put this into, I'm going to put it into... [CHEMA] The effect? [CIRO] Effects and Particles, I'll think about it later but you'll find it there. And then masking ability because if we need to apply, for example, that effect only to the leaves of the tree, then we need to be able to mask the shader. So this is also another thing and here I provided a little bit of information that you can read later on. And that's it for now, that's the new tasks that we have, we're going to be adding more as we go. Public Roadmap as usual, you will find it basically linked here on the repo, in the forums or wherever you find the projects, you will find the links here, there's the link for the Public Roadmap, for instance. So from here, you can always reach the Roadmap and find the new tasks that I just showed. [AMEL] Yeah. So Ciro, when you show Codecks, you show the tasks that we have done. But don't you think that we forgot one task? [CHUCKLES] [CIRO] What is it? [AMEL] It's on the Up For Discussion for now. [CIRO] Up For Discussion, this one, the game title? [AMEL] Yes. So I guess it's time to reveal the game title finally. [CIRO] So I'll mark it as done. [AMEL] Yes. [CIRO] And I'll put it inside the livestream deck. We just completed it basically. [CHEMA] Yeah, we completed it but I think that people don't know it. [AMEL] Yes. [CIRO] Time to reveal the title. [AMEL] And now, [AMEL] time to reveal the title. [CIRO] Okay. [CHEMA] Drum roll, please. [CIRO] Just so you know, we were thinking we should make some kind of graphics, some kind of tech presentation, we didn't do any of that. So we're just going to reveal the title, just drop it on you in the most, like, less, how do you say, impressive way possible. We hope you like it because you chose it. You chose as part of the community. [CIRO] You chose it and you proposed it. This is not a proposal that comes from me, although I loved it. [LAUGHS] No spoilers. So what's the title, what's the title? And this was the form that we gave to people ten days ago, I think now. And the options, the finalists were <i>Chop Chop</i>, <i>Gastronaut</i>, <i>Gourmet Quest</i>,<i> A Pig's Tale</i>, <i>Swine and Dine</i>, <i>Pig Chef: Island of the Lost Flavor</i> these were the options and I think people could vote a maximum of three options, and then they accumulated. Somebody says in the chat the name is <i>Open Projects</i>. [LAUGHS] Actually I'll add the option now and then I'll give it a million votes. What do you think? Which one did you think won? I'm curious. Put your guesses in the chat, I'm curious to see as well. True story. So that's the options and as you can see here, 168 people voted, and I think a similar number of people voted in the first round, which produced these options. But now there's no turning back, now you voted, I closed the survey so you can't vote anymore, so don't try. Reveal the votes in reverse order. [CHEMA] Can you? [CIRO] Okay, fine, I'll do that. But I need to hide the form to do that. Yeah, you can show us like... So what was in the third place? Third place? No, I'll start from the bottom. [CHEMA] Okay. [CIRO] I'll start from the bottom. So the very last one is <i>Gastronaut</i> with 32 votes. The second worst, if you want, the second least voted is <i>Gourmet Quest</i> with 41 votes. And then at the same level on the third spot, there's <i>A Pig's Tale</i> and <i>Swine and Dine</i>. And then I'll just jump to the winner. Yes. And the winner is <i>Chop Chop</i> with 72 votes. [AMEL] Yay! And then the second one is<i> Pig Chef: Island of the Lost Flavor</i> which is a very long title. [CHEMA] I voted for that one. [CIRO] Yes, that's the... [CIRO] Which one? <i>Pig Chef,</i> Chema? [CHEMA] I voted for the second one. Yeah, the <i>Lost Flavor</i>, I like it. [CIRO] You voted for that? [CHEMA] Yeah. [AMEL] Ciro is like, "We need to talk." [LAUGHS] Well, I voted for <i>Chop Chop</i>, so [AMEL] I'm pretty happy that it won. [CIRO] I also voted for <i>Chop Chop</i>. [AMEL] No surprise for me. [CIRO] And actually, just because maybe there's people that are not native English speakers, I'm not a native English speaker, myself, but "Chop, chop" is a joke on, chop obviously means like to cut, right, to chop something into little slices or pieces, I guess. It's frequently used with... you can call a piece of pork, pork chop, so it's a slice of pork. So it ties into the whole fact that he's a pig. But also, "Chop, chop" is used to say, "Hurry up", Like, "Go faster," like "Move faster" and "Walk Faster." And I thought it was, immediately, when I saw it from the first time I thought it was a nice option because one of the ideas is that this Pig Chef in the game, they go around the world. So actually another option that I really liked was <i>Globetrotter</i>. And fun fact, the trotter is the foot of the pig. So the foot of the pig is a trotter and it was just mind-blowing. But then people said like, no, it was one of the options and it wasn't voted. But then <i>Chop Chop</i> came on top, so that was nice. [AMEL] Yes. Wow. [CHEMA] Ah. [CIRO] Fun fact. Fun fact. And let me see if I can find the first forum. So we had the round one of titles, and you will see... Yes, you will see how many options we had for the first round. We had 124 responses, and these were the titles, plenty of them. So we did the first round with a lot of titles and as you can see, <i>Pork Chop</i> was super winning with 37 votes. The second one was <i>Gastronaut.</i> [CHEMA] 72, I think. [CIRO] <i>Gastronaut</i> was doing well on the first round. <i>Gourmet Quest</i>, all the ones that went into the final. And I think <i>Globetrotter</i> was here somewhere. But it didn't receive many, many votes. [AMEL] Yeah. [CIRO] Yeah, it's here somewhere, I don't know. But it wasn't chosen and then <i>Chop Chop</i> went into the finals and it won. So the game is going to be called <i>Chop Chop</i>. There's one guy commented, "Ciro = culture." [CHUCKLES] [AMEL] True, true, I can confirm. Anyway, so the title of the game is <i>Chop, Chop</i>. Of course it still remains Open Project #1. So the repo, we're not going to rename the repo and break all the links. But we're going to put the title here and there. [CHUCKLES] Yeah, so now we can start creating a Title Sprite for it. Yeah, a title screen. Yup, that's a good point, we can start thinking of the graphics for the title. And maybe other things like which font we want to use in the game, like there's so many graphic decisions that we can definitely start [CHEMA] Yes. thinking about. Again, time is ticking. [CHUCKLES] Somebody says more votes coming in by name. No, let's not go there. [LAUGHS] "Now you have to say, 'Chop, chop, guys' at the end of every stream." Yes we will. [LAUGHS] Looks like the new curse we have. Do you like the title? You do? [CHEMA] I do. [CIRO] Does the chat like the title? [AMEL] I voted for it. I also like <i>Politics Melancholic</i> but maybe not now. [LAUGHS] Chop, chop with the decision, come on. Is it going to have subtitle, like "Chop, Chop, something, something," oof, then we need to vote again. [LAUGHS] Please. "It's satisfactory." "I like it now after the explanation." "Yes, it's a funny one." I think when it comes to titles, you also need to get used to it a little bit. Whenever you hear a title for the first time, whenever you hear even like, you hear of an app, right and at the beginning, the name is weird, and you become more used to it. Like how many things that we use daily these days are actually named in a very weird way but then we just got used to it. [CHEMA] Exactly. [CIRO] Like Twitter, Facebook, right all these names are really strange, if you think about it. But anyway, <i>Chop Chop</i> it is, we need to move on. Can't think of the title forever. [AMEL] Yeah, but it sounds like there's no surprise in the community, I would say. They voted, I mean that's 168 votes. So I think people are satisfied so that's great. Everyone is happy about it. [CIRO] Nice, nice. Cool. I think we're there. We're actually super late like we went on for such a long time. Okay, shall we wrap up, girls? [CHEMA] Yes. If nobody has like very final comments, questions that they want to put in the chat. Will there be blood on each "Chop"? No. Maybe ketchup. [LAUGHS] [AMEL] Oh, my God. [CIRO] Yeah, if you don't have any final questions, I think we can go because we also went on for quite a long time. You can still ask us in the chat, I think we will stay for 10 minutes or 15 minutes in the chat. And then if you have any other additional questions, you can ask us on the forums and we can answer you there. [AMEL] Great. [CIRO] Yep. So just to recap, Open Projects #1, you'll find it here on the repository. Just google Open Projects or find a blog post or the trailer, everything links to here. Here is where you can download the project, itself. Here is where you will collaborate by opening Pull Requests and then from here, you can jump on the forums and have a discussion with the other users and as you can see, the forums are quite active with currently 126 threads open and thousands and thousands of comments. And then from the forums and from the repo, you can jump on the Public Roadmap, which is this thing here, where you can read about the design of the game, about the items that we're discussing. You can check, take a look at bugs that are ready to be fixed and all the tasks that we need to complete to make this game demo, I guess. And also all the things that we've done until now. Actually, one thing I wanted to mention about the Roadmap, we are starting to note down all of the PRs, so every item has, not this one but this one, has the PRs that basically made it. So from here, you can basically open and you need to sign in to the Unity. No, I need to sign in, you don't, but you can open the PRs and see how people made everything, item by item, who made it. [AMEL] And I think... Yeah, I was going to say, I think this was a request from the community, right? Someone said this in another thread. [CIRO] Yup. That makes sense because then you can see the whole history of how things have been done, you can trace back who made it, potentially like message them and bother them, "Hey, why did you put this?" [LAUGHS] Stuff like that. Somebody is asking in the chat, how many hours will the full game be? Very little. It's not going to be hours long. It's going to be, what do you think? [CHEMA] 45 minutes, I don't know. [CIRO] 45 minutes, this long? No, I would say a little bit less, maybe 15. I think if you know the game, if you know how to finish it, it will take you 10 to 15 minutes to complete. And if you don't know it, then it will take you maybe 40 minutes, that's what I think. I want to remind everyone that this is not a full game that we're making. This is a... [CHEMA] Vertical slice. [CIRO] Vertical slice, yes. Yes. So we're not aiming to make it a complete game like a tight game play loop, we're just trying to make it work and to make it pretty and to make it nice. But we're not... we're not going to be... I don't know why, somebody sent an emoji to the chat and it was moderated. Interesting. Cool. They ask, "I mean the full game, not the vertical slice." We're not going to make the full game. If you want to make full game, up to you. We will stop at the vertical slice because that's the goal of this project and then if everything goes well, if we finish on time, if we see that it's a pleasant process, and if you like the process, then we're going to make a new one. But we're not going to make a full game. Yeah. Okay. Any final comments? [CIRO] Chema and Amel? [CHEMA] Thanks, everyone. [CIRO] So as usual, [AMEL] Yeah. we're going to be in the chat for another while and we're going to reply to these final questions in text, I guess. And for the rest, we'll see you next time either on the forums or the repo, of course. But if you just want to watch us chat for hours, we'll see you next time in two weeks. Same channel, same place. [AMEL & CHEMA] Yeah. same time. Yeah. [AMEL] Same time. [AMEL] Great. [CHEMA] See you, everyone. Thanks, everyone for joining us. [CIRO] Bye, everyone. [AMEL] See you soon. Bye. [CIRO] Bye, thanks for joining. [CHEMA] Bye. ♪ [MUSIC] ♪ ♪ [MUSIC] ♪ ♪ [MUSIC] ♪ ♪ [MUSIC] ♪
Info
Channel: Unity
Views: 29,057
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: 0lhLLnKitSI
Channel Id: undefined
Length: 152min 1sec (9121 seconds)
Published: Tue Nov 10 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.