Kotlin LibGDX/KTX RPG Tutorial - Part 22 (Scene2D UI)
This is a tutorial series about game development using Kotlin, LibGDX with LibKTX extensions.
We are developing a small 2D adventure RPG using different technologies like Box2D, GdxAI, Entity Component System or Tiled.
The full source code of the tutorial can be found on github: https://github.com/Quillraven/MysticWoods
Part 22 - Scene2D UI:
In this part we are going to learn how to create a user interface for our game using the model view viewmodel (MVVM) approach.
Link to my other scene2d video: https://www.youtube.com/watch?v=25_xCStxi9g
Link to Scene2D skin: https://libgdx.com/wiki/graphics/2d/scene2d/skin
Link to LibKTX Scene2D: https://github.com/libktx/ktx/tree/master/scene2d
Link to reified documentation: https://kotlinlang.org/docs/inline-functions.html#reified-type-parameters
Link to delegated properties documentation: https://kotlinlang.org/docs/delegated-properties.html
Chapters:
00:00 - Demo of UI
02:49 - Scene2D vs VisUI
05:19 - Create UiScreen
08:47 - GameView Introduction
09:12 - MVC vs MVVM
12:11 - Create GameView
15:10 - Scene2D Table
17:53 - Setup test UI
21:46 - Create skin
27:09 - Summary of part one
29:33 - Create LibKTX Scene2dDsl extension
35:15 - Create CharacterInfo widget
40:48 - Manage skin drawables
45:06 - Update CharacterInfo images and DSL
47:59 - Adjust CharacterInfo layout
50:51 - Add UI logic to CharacterInfo
53:01 - Test CharacterInfo widget
57:38 - 9patch drawables
1:02:13 - Create loot popup
1:04:47 - Manage skin label styles
1:06:25 - Manage skin fonts
1:09:42 - Label markup
1:10:52 - Adjust label layout
1:12:26 - Create UI animations
1:19:25 - Summary and result of UI
1:20:33 - Create GameModel
1:22:38 - Create property change support
1:34:56 - Create data binding
1:37:46 - Create EntityDamageEvent
1:41:53 - Summary MVVM approach
1:42:51 - Support EntityLootEvent of game
1:45:04 - Support EntityDamageEvent of game
1:46:04 - Create EntityAggroEvent of game
1:54:42 - Test everything
1:55:33 - Summary of part two
1:57:09 - Benefit of Scene2dDsl
1:59:32 - Hot reload of UI changes
2:02:28 - Support of multiple skins
2:03:57 - Improve data binding via delegation