User avatar
stonstad
Topic Author
Posts: 241
Joined: 06 Jun 2016, 18:14
Location: Lesser Magellanic Cloud
Contact:

Stellar Conquest [Game]

19 Jul 2019, 20:06

Stellar Conquest
... in development

Image
Image
Image
Image
Image
Image
Image
Image
Video [https://bit.ly/2SqkpPq] 60mb

Name: Stellar Conquest
Online Multiplayer Strategy Game

Noesis Version 2.2.3
Number of Screens/User Controls: 76

SC is a passion project that I started developing in my free time. In 2018 I won Dream Build Play and a few months back I took the plunge and started development full-time to prepare the title for release. Noesis has been a very important part of my daily development because it simplifies the effort of creating beautiful cross-platform UIs that works across many devices. By using Noesis I felt free to convert my game's existing UI to support multiple platforms.

When I initially started development with Noesis I questioned whether it had enough API surface area to replicate my existing XAML project for PC/XBOX. Nonetheless, I was able to successfully convert 76 XAML screens (and user controls) from UWP/XAML to Noesis with truly minimal effort. I'd like to share some of the benefits of this conversion as well as a little detail around challenges and my next steps for UI development.

Benefits:
  • The game's XAML is no longer tied to UWP and XAML for PC/XBOX and the game now supports multiple platforms.
  • Through use of XAML and code behind classes my UI has clean separation of concern between presentation and game logic.
  • My toolchain for creating declarative UI is simplified by using Microsoft Blend.
  • Compared to Unity's built-in (and forthcoming UI), more powerful capabilities are available (layout, transforms, animation, skinning and themes).
  • Excellent resources for learning (WPF and XAML is widely popular and written about)
  • Significantly improved performance (instant load time)

Performance
I am in awe of Noesis runtime performance. In UWP/XAML, highly complex screens required about 100-200 ms to load. This load time in UWP would lock the main UI thread and cause brief pauses. On slower platforms such as XBOX, the UWP performance issue worsened and became a real optimization challenge. (Side note... I'm pretty savvy with threading and separating UI from backend I/O -- which was not a factor for UWP performance on XBOX. The UWP UI slowdown was due to the UWP layout and rendering engine.) OK, but in Noesis the same screens load instantly without skipping a frame. It's glorious and really a fantastic thing for game development.


Challenges:
  • No automatic generated code-behind for XAML variables. You must define these local variables. This isn't hard, but for 70+ screens it was time consuming.
  • Achieving compatibility with Blend required some manipulation of code behind files. I wasn't trying to maintain WPF compatibility and so these steps were a minor annoyance.
  • Encountering quirks relating to the Noesis XAML build pipeline. Most of the issues were addressed quickly a long time ago.

Wish List:
  • Configuration of text character spacing, i.e. kerning (UWP)
  • Simple effects stack for entire screen (gaussian blur effect)
  • A native XAML editor in Unity
  • Unity buys Noesis and makes it the built-in declarative UI system

Features Used
  • Animation (Opacity, Tweening, Transitions)
  • Embedded RenderTextures
  • FullHD and 4K support with identical layout using ViewBoxes.
  • Multiple UI layers via multiple cameras -- for gaussian blur and modal windows
  • Custom UI theme with triggers
  • Gamepad and touch integration

UI Work Remaining
  • Texture Atlasses for improved performance. ...but no performance issues have been encountered yet.
  • Testing on mobile platforms
I'd like to extend my special thanks to Jesus and Sergio for creating such an excellent product. The ability to author code in C# and have the presentation work across different platforms (PC, iOS, Game Console...) has been an unobtainable holy grail for Microsoft for over a decade. I believe Noesis was developed by two dedicated and passionate developers... let that sink in for a little bit. So my complete and total gratitude goes out to the very talented Noesis team.

You can follow Stellar Conquest on twitter (@StellarConquest - https://twitter.com/StellarConquest) and I recently setup a Discord channel to solicit for feedback from players. (http://www.stellarconquest.com/Community).

Thanks for reading all of this!
-Shaun
Last edited by stonstad on 03 Aug 2020, 17:56, edited 1 time in total.
 
User avatar
jsantos
Site Admin
Posts: 3905
Joined: 20 Jan 2012, 17:18
Contact:

Re: Stellar Conquest

08 Aug 2019, 12:19

First of all, THANKS for writing this extensive report. Your project is awesome!
No automatic generated code-behind for XAML variables. You must define these local variables. This isn't hard, but for 70+ screens it was time consuming.
There is a non-official solution for this at viewtopic.php?f=3&t=1670, and we plan to officially support something like that in the future for all the SDKs.
 
User avatar
stonstad
Topic Author
Posts: 241
Joined: 06 Jun 2016, 18:14
Location: Lesser Magellanic Cloud
Contact:

Re: Stellar Conquest

16 Nov 2019, 18:31

I just wanted to drop in and say thank you for creating Noesis! Here's a video showing off some of the latest UI. http://stellarconquest.blob.core.window ... zation.mp4

Who is online

Users browsing this forum: Ahrefs [Bot] and 28 guests