Legend of Krystals Tech Brief (Patreon)
Videos
-
ExportedLevel.mp4 -
CompletedModel.mp4 -
CompanionSelector.mp4 -
PartySelector.mp4 -
RealtimeShadowsExample.mp4 -
GameView.mp4 -
ExampleCreation.mp4 -
ExportedLevel.mp4 -
CompletedModel.mp4 -
CompanionSelector.mp4 -
PartySelector.mp4 -
RealtimeShadowsExample.mp4 -
GameView.mp4 -
ExampleCreation.mp4
Downloads
Content
Hello, Its me Gizmo again with another tech brief. Weve gotten tons of progress done and so far for the demo code wise, were looking at finishing the companion system, including companion AI, some changes to Triton to allow us to create a decision tree to decide what AI should say when you talk to them, and finally the quest system to be used for main and significant side quests.
The companion system is seeing final stages of completion, all thats left is the companion AI in the game world. The AI for now will follow you around and perform the same actions as you such as climbing, crouching when you do, and more. Additionally as we make more systems such as stealth, more quest types, combat, etc, itll need to be updated. Ive attached a video of the companion UI Ive created on stream. The companion selector UI will allow you to swap the companion youre playing as (CompanionSelector.mp4). The party selector will allow you to specify the companions in your party and swap them as you unlocked more companions (PartySelector.mp4).
As we develop more and more uses for characters and options for them, weve decided that we should have a selection tree for deciding what tree to use when you talk to a character. For example when you talk to your companion we should have a separate tree entirely when you talk to them compared to when theyre not your companion. Different trees if youre in a particular quest or a stage of quest, have a particular item that is important to that character, etc. That will be looked at a deeper level once companion AI is complete, and well go forward on the best way of implementing that.
This quest system will be used to set up the stages for quests and information about them to be used for your quest tracker in-game. This quest system is going to be used by Triton as well to monitor what branches to show or hide. This wont be very different from the quest examples Ive shown using our custom variable editor, but this will be used for side quests and main quests that will be monitored. We will still have quests that wont be using this quest system that our story writers and game designer will implement for people who venture deep into the game.
This isnt all thats left of course, but these are the more significant pieces of code that are left. Once I get art and animations, Ill have to spend a lot of time getting that in-engine and fine tuning everything to work with that (clothing, sex, and dialogue).
3D Announcement I wanted to update you all on a new addition to the development process, were going 3D! But not really! Ive attached a ton of videos and pictures below as well to help explain this. Ive spent the majority of the time last week figuring out how to handle sorting for the character and other 2D objects. Ive tried every solution possible and kept hitting roadblocks at some point when implementing these solutions.
The solution Ive come up with is to create our level block out into flat planes for everything you can see from the camera angle and placing the 2D level on those planes. So, when we walk along it, itll actually put things that are physically in front of you, in front of you. But when viewed from a 2D perspective, itll appear totally 2D. Ive come up with this idea after seeing Photo match from sketch fab. It seemed quite easy to create 3D objects based off a given image. The fact that its 3D means itll handle sorting with the character based on their actual position and not layers or orders.
So how does this work? Ive attached the video, ExampleCreation.mp4 to show off how we go about creating the level in 3d from the 2D image.
I found an object exporter that allows us to export the white boxed level we crafted in the engine to a .obj file that can be imported to a 3D editor such as Maya which is what Im using for this example. We will most likely switch to Blender because of the expensive cost of Mayas Licenses. The level in the editor is seen in, ExportedLevel.mp4.
This exported level is then used to place planes along the surfaces that will be interacted with. Next we map on our 2D level onto these planes at the same camera angle as we have in-game (X: 20.3, Y:21.4), so we can visualize the level. This is called UVing. I want to emphasize that the shapes in the model will strictly be planes, nothing more complex for anything. You can see how it looks after this process is fully complete in, CompletedModel.mp4. Heres also an example of how the UV Map looks, DemoUVMap.png.
When we import it in-game we must scale it to match the white boxed level, turn off the white boxed level and only show the imported textured map. You can see the final game play in GameView.mp4.
A lot of questions came up in Discord after I announced it in the Patron Teasers channel in Discord. Among these questions were,
What hit on performance will this have now?
- This wont add more than 300 polygons into the game and already most models we import from Spine have dozens of polygons already. The level will be the last thing to cause any performance hits on the game. That being said, Im not sure what the performance requirements will be for this game but Id say its semi safe to say if you were able to play 0.8 youll be able to run this new version. Time can only tell.
So the game is 3D?
- Yes and no. The games view will stay in 2D orthographic mode so you wont really notice this 3D shift but Id like to show you all how things are working under the hood.
What benefits can we see from this besides sorting?
- Realtime shadows are now a possibility since the mesh is 3d now. Additionally, we have more possibilities with interacting with the world with particles and effects. We can also develop more complex shaders and materials that can utilize bump maps, normal maps, emissions, and a few more techniques used to give games that realistic pop. Not to say that the game will be realistic but imagine being able to hold a torch around a cave and actually see lighting reflect off a puddle and shadows along the walls as you walk. Ive attached a quick example of realtime shadows too, RealtimeShadowsExample.mp4. Also not to worry were not going to look into these improvements in depth until were done with the demo and have progressed far enough in the game where we can find the time to implement these cool changes.
What are the down sides to this new system?
- Having to do the 3d mapping is a lengthy process, I spent about 4 hours on this portion, and its just a small segment of the map. It'll also require a lot of iteration and any map changes could result in a change in the 3d mesh depending on how big this change is.
Was this really needed? Was there anyway around this?
- There is really no way around this unless we decide to change the camera angle to a perfect 45 45 degree angle and make the game isometric in comparison to the semi isometric view we have now and this view we have now is probably the best view well want to have for a game of this type. Feel free to chat with me in discord with any questions you might have or ideas that I can look into!
I recommend everyone to join the discord and come chat with me directly and ask any questions you have. I dont monitor the Patreon as Kuja is the only one with access to the account, at least enable notifications for the announcement channels. Join here, https://discord.gg/qapF67m.
I'll be streaming Companion AI tomorrow, Nov 23rd, at 3:00pm EST
Thank you all for reading, I appreciate all of your patience and I hope that what we produce will blow you away!
Check the attached files below: