Adventure Game Studio | Forums

AGS Development => Other Engine & Editor Development => Topic started by: Clarvalon on 09 Aug 2019, 22:49

Title: XAGE Development thread
Post by: Clarvalon on 09 Aug 2019, 22:49
Figured it was about time I started a thread about the general state and progress of my engine, XAGE.  It's been quietly in development for a long time now - much too long really - though a lot of ground has been covered in the last 18 months inparticular.  It's approaching a point where it may actually stop being vapourware and become a thing people can get their hands on.

Established general-purpose engines like Unity have proven C#'s suitability for certain types of games, and as a language it shares much in common already with AGS Script.  The aim of XAGE is to find a niche somewhere inbetween, using a lot of similar paradigms AGS does for creating adventure games (including the same script API), whilst also allowing developers to script and test and profile their game using the latest version of the cross-platform .NET Core framework within Visual Studio.  Somewhere there's a venn diagram of people with those two interests and hopefully the intersection isn't a picture with just my face on it.

As a recent test case, I ported AGS game Last & Furious (https://www.adventuregamestudio.co.uk/forums/index.php?topic=55534.0) over to XAGE.  This was a reasonably challenging port, with 21 modules of varying degrees of complexity, but this could be converted mostly automatically once I'd implemented all the necessary missing engine functionality.  I wrote a little about it here:  http://clarvalon.blogspot.com/2019/08/last-furious.html (http://clarvalon.blogspot.com/2019/08/last-furious.html) - hopefully this showcases the current state of the engine.

(https://i.imgur.com/mYD3H2B.png)
Title: Re: XAGE Development thread
Post by: Crimson Wizard on 09 Aug 2019, 23:43
It's nice to hear that you were using GPU matrix rotation instead of software one for sprites. AGS is practically at the point when it may also allow add accelerated scaling and rotation to any game object or whole screen, if not for the dreaded software mode it would be mostly a question of writing an API. (edit: well, and doing click checking using matrix transformations)
Title: Re: XAGE Development thread
Post by: Monsieur OUXX on 11 Aug 2019, 23:22
I would suggest releasing a few tutorials, maybe in the form of videos?

EDIT: Found it. The official website is very slick. But if I recall you wanted to sell licenses to your engine, am I correct?

I would like to try porting my game using the closed alpha. What says you?
Title: Re: XAGE Development thread
Post by: Clarvalon on 11 Aug 2019, 23:27
Yep - I plan out putting together some documentation & tutorials when the tools are released.  There's some stuff on youtube already but it's pretty out of date.

Edit:  Just saw your edit :)  I'm in the middle of a commercial port at the moment (L&F was a palette cleanser) but the plan is to put the tools out once there's a commercial game in the wild, to prove the viability of the engine.  Hopefully by then all licensing will have been figured out.

RE: Website - thanks.  The search functionality (https://clarvalon.bitbucket.io/documentation/Scripting.html) isn't quite 100% yet as I built it myself (the site itself is hosted on bitbucket so is entirely static).  I should probably get a proper domain at some point.  I just really like being able to update it using standard version control software.
Title: Re: XAGE Development thread
Post by: Clarvalon on 22 Sep 2019, 22:58
Bitbucket dropping mercurial support gave me the nudge I needed to move all my code repositories over to GitHub and, more importantly, presented an opportunity to rethink how everything was structured.  As part of this process I've been considering how best to package up the Editor in such a way that it's both easy to distribute and update.

The final release candidate for .NET Core 3 - the underlying tech which XAGE is built upon - is expected to go live tomorrow.  While there are still some issues around the new publish options I've had some success with trimming the DLLs to reduce the size, and creating a self-contained single executable:

(https://i.imgur.com/tv3PuTY.png)

Having uploaded a handful of prototype/showcase games there already, itch.io (http://itch.io) seemed the logical choice to host XAGE Editor itself.  The tools are great but the biggest selling point is the itch.io client's auto-update mechanism.  Users who prefer to update manually will also be able to do so.

(https://i.imgur.com/uEhjhni.png)

Once things are a bit more stable I'll share a few pre-release keys with anyone interested in trying it out, before making it publicly available.  The plan is to have a handful of small sample games on GitHub that XAGE Editor will be able to download or clone, to make it easier for new users to jump right in and get a feel for the workflow.
Title: Re: XAGE Development thread
Post by: Clarvalon on 05 Nov 2019, 21:26
Development continues apace in all areas, with particular focus on improving the developer experience by tightening the change & test loop.  I detailed some of the more recent engine optimisations here:  http://clarvalon.blogspot.com/2019/11/putting-lipstick-on-sisyphus.html (http://clarvalon.blogspot.com/2019/11/putting-lipstick-on-sisyphus.html)

Packaging games as single executable files is a nice novelty.

(https://i.imgur.com/3HfaZB5.png)
Title: Re: XAGE Development thread
Post by: eri0o on 05 Nov 2019, 22:03
Is XAGE available for download?
Title: Re: XAGE Development thread
Post by: Clarvalon on 05 Nov 2019, 22:43
Not yet - I had initially planned to have three demo games available on github but I may rethink this to get something out sooner.  I'll update this thread when it's available.

A few evenings ago I spent an hour making a basic game from scratch for my kids.  I don't do these dogfooding exercises often enough as generally I'm focused on ports.  It exposed a few bugs and gaps that I need to address (e.g. creating default cursors, ensuring at least one room exists etc).  The editor UI gets the least amount of love so it needs a few rounds of polishing before I'd inflict it on anyone else  :)
Title: Re: XAGE Development thread
Post by: Clarvalon on 18 Nov 2019, 22:50
Getting started with XAGE in two minutes ... ish:

Title: Re: XAGE Development thread
Post by: Joseph DiPerla on 27 Nov 2019, 18:46
Will Xage port to mobile?
Title: Re: XAGE Development thread
Post by: Clarvalon on 02 Dec 2019, 17:22
Earlier versions of XAGE were built upon Monogame which supported Android (see Awakener (https://play.google.com/store/apps/details?id=awakener.awakener&hl=en_GB)).  However I've since switched to FNA, which does not yet officially support Android (https://github.com/FNA-XNA/FNA/wiki/Appendix-D:-MonoGame-Compatibility#platform-compatibility).  iOS should be fine and Mac should also be supported long term now FNA (as of yesterday) can use a Metal backend renderer.  Hoping to get my hands on some apple hardware in the new year to test it all out.

I've summarised current XAGE platform support here: https://clarvalon.com/documentation/supportedplatforms (https://clarvalon.com/documentation/supportedplatforms)
Title: Re: XAGE Development thread
Post by: Clarvalon on 14 Mar 2020, 09:43
Progress has been slow since the turn of the year, but I've finally addressed a thorny issue that has been a problem for a long time.

The previous serialization library, protobuf-net, had no officially supported solution for pre-generating the serialization routines, required for platforms that only allow for AOT (ahead of time) compiled programs instead of JIT (just in time) like iOS and UWP.

The MessagePack format has been around for a long time, but the MessagePack for C# library has recently come on leaps and bounds after being adopted by a Microsoft employee for use within Visual Studio itself.  Among it's features are the ability to pre-generate serialization code as an MSBuild task, essentially making the process invisible.  This is especially important as ideally users shouldn't have to care about the mechanics of how their game loads and saves.

Initial benchmarks  (http://clarvalon.blogspot.com/2020/03/experimenting-with-messagepack.html)looked good, and tests on real world examples even better (http://clarvalon.blogspot.com/2020/03/corert-and-messagepack-real-world.html).  I've now incorporated MessagePack into the XAGE pipeline and while there is more testing to do, it's looking like I'll be pulling protobuf out entirely. 

Combined with CoreRT, the startup times are so much better, and general performance and memory usage is also good.

(https://i.imgur.com/UiZ33Fq.png)
Title: Re: XAGE Development thread
Post by: Mehrdad on 18 Mar 2020, 12:34
Hi @Clarvalon

Isn't any beta link .exe file for test your engine? Or what is your estimate time for the first beta release?
Title: Re: XAGE Development thread
Post by: Clarvalon on 18 Mar 2020, 15:22
Coincidentally, I started giving out alpha keys in the AGS discord yesterday evening.  Take a look at the following and if you're still interested let me know and I'll send you a key:  https://clarvalon.com/documentation/gettingstarted (https://clarvalon.com/documentation/gettingstarted)

Same goes for anyone else who may be interested - I'm ideally looking for AGS users who are comfortable using Visual Studio.  It would be good to start getting the tools into other people's hands and start canvassing feedback etc.  I will use this to help prioritise bugfixes, enhancements, documentation etc.  Thanks!
Title: Re: XAGE Development thread
Post by: Mehrdad on 18 Mar 2020, 15:39
Oh sorry, I missed this in discord. I'll try it. Thanks a lot.
Title: Re: XAGE Development thread
Post by: Clarvalon on 07 Apr 2020, 22:46
I've been playing around with some free assets to see how easy it is to knock something up quickly:  https://twitter.com/Clarvalon/status/1245480316321628163 (https://twitter.com/Clarvalon/status/1245480316321628163)

More recently I've gotten the AGS SpeechBubble  (https://www.adventuregamestudio.co.uk/forums/index.php?topic=55542.0)module converting across:

(https://i.imgur.com/5SvlAPc.png)

Alpha users:  I'll be pushing out a new build to itch.io once I've cleaned up a few usability issues, particularly around creating projects from scratch (missing default cursors etc).

Title: Re: XAGE Development thread
Post by: Snarky on 08 Apr 2020, 08:20
Nice.
Title: Re: XAGE Development thread
Post by: Clarvalon on 10 Apr 2020, 17:26
A port of AGS game Space Pool Alpha (https://www.adventuregamestudio.co.uk/site/games/game/1309/) has been completed:  http://clarvalon.blogspot.com/2020/04/space-pool-alpha.html (http://clarvalon.blogspot.com/2020/04/space-pool-alpha.html)

The C# source is also available on GitHub:  https://github.com/clarvalon/SpacePoolAlpha (https://github.com/clarvalon/SpacePoolAlpha)

XAGE v0.6.7405 has been pushed to itch which allows alpha users to immediately pull the source and assets in to tinker with.
Title: Re: XAGE Development thread
Post by: Clarvalon on 11 Apr 2020, 20:02
Last 'n Furious got the same treatment:  https://github.com/clarvalon/LastAndFurious (https://github.com/clarvalon/LastAndFurious)

(https://i.imgur.com/78wlOTx.png)

Thanks to Crimson Wizard for OK'ing the availability of the C# source.  I am tempted to use this for figuring out how to properly expose controller support, as everything thus far has been hacks in-engine.
Title: Re: XAGE Development thread
Post by: Clarvalon on 12 Apr 2020, 22:15
Adding GamePad support turned out to be pretty simple once I'd decided to expose FNA to the script API (rather than have an abstraction layer):  https://github.com/clarvalon/LastAndFurious/commit/731262ef296f99193873e571d08274be6388a62c

This will be fleshed out so that there is a basic mapping available (i.e. have your controller mimic a mouse cursor) or advanced version where you can handle button presses, thumbsticks and triggers in the game script itself, as per above.
Title: Re: XAGE Development thread
Post by: Mehrdad on 13 Apr 2020, 06:39
Thanks, Clavaron. well done!!!
Title: Re: XAGE Development thread
Post by: Clarvalon on 18 Apr 2020, 00:49
Still working on the UWP build, should have something concrete to show soon.

One item that came up was the ability to integrate with Xbox Live services via the game script in such a way that it doesn't impact other non-UWP platforms.  To this end I wrote a very basic PlatformService (https://clarvalon.com/documentation/interface/platformservice) interface that can currently be used to initiate an asynchronous SignIn and pull out your Gamertag.  The idea is that the same code can be used when running under different platforms (e.g. SteamWorks) - the implementation for the relevant platform is just injected in by the calling executable. 

This may end up being a bad idea if the core services differ too much to be able to abstract them easily.  But I'm hoping it will be sufficient for the basics - e.g. achievements, leaderboards et al.
Title: Re: XAGE Development thread
Post by: Clarvalon on 20 Apr 2020, 17:47
Here's the thing I've been working on - Last 'n Furious (https://www.adventuregamestudio.co.uk/site/games/game/2216/) is now playable for free on Xbox One.  Details here:  http://clarvalon.blogspot.com/2020/04/official-console-support.html (http://clarvalon.blogspot.com/2020/04/official-console-support.html)

Microsoft App Store link:  https://www.microsoft.com/en-gb/p/last-n-furious/9p3c8dq7qfsh (https://www.microsoft.com/en-gb/p/last-n-furious/9p3c8dq7qfsh)

I've got lots to keep me busy (https://github.com/clarvalon/XAGE-Public/issues) but I need a new project   :)
Title: Re: XAGE Development thread
Post by: Cassiebsg on 20 Apr 2020, 20:45
Is there some other way to get the game for Xbox other than MS Store?
I would love to test it, but if it's Store only, then I'm unable.
Title: Re: XAGE Development thread
Post by: Clarvalon on 20 Apr 2020, 20:47
If you search within the Xbox itself you can find it there (listed under 'Creators Collection'), though it is not in the newest releases yet.

The MS store link allows you to install to your xbox remotely assuming you're using the same credentials on both.
Title: Re: XAGE Development thread
Post by: Cassiebsg on 20 Apr 2020, 21:22
I don't understand, how I'll find on my Xbox. my Xbox isn't online.
Title: Re: XAGE Development thread
Post by: Clarvalon on 20 Apr 2020, 22:25
Oh, I assumed you had access to Xbox Live.  While it's possible to sideload it, you'd still need Internet access (as well as a Dev account).  If your Xbox is permanently offline then we're out of luck.
Title: Re: XAGE Development thread
Post by: Cassiebsg on 20 Apr 2020, 23:01
Okay then, thanks anyway  :)
Title: Re: XAGE Development thread
Post by: Clarvalon on 27 Apr 2020, 00:19
Not having a long commute at the moment is really helping me put some extra time into XAGE at the moment.  This week I've added support for Cameras (https://clarvalon.com/documentation/interface/camera) and Viewports (https://clarvalon.com/documentation/interface/viewport) which were originally introduced in AGS v3.5.  It became a good opportunity to rethink and restructure how some of the rendering was being performed under the hood and it's working pretty nicely.  Quick update here:  https://clarvalon.blogspot.com/2020/04/viewports-cameras.html (https://clarvalon.blogspot.com/2020/04/viewports-cameras.html).
Title: Re: XAGE Development thread
Post by: Clarvalon on 09 May 2020, 22:21
A new version has been released - XAGE alpha users can finally now deploy to Xbox One.  Read more here:  https://clarvalon.blogspot.com/2020/05/big-fat-update-fna3d-uwp-new.html (https://clarvalon.blogspot.com/2020/05/big-fat-update-fna3d-uwp-new.html)

There's also a bunch of new functionality in place, as well as restructuring to allow for forthcoming rendering backends to be plugged in - Vulkan, Metal, Directx11 etc.  This is all coming sooner rather than later due to all the good work being done by the clever folk in the FNA Discord.
Title: Re: XAGE Development thread
Post by: Joseph DiPerla on 12 May 2020, 16:42
Have you determined yet if you are looking to make XAGE commercial, license based or free yet? Visual Studio is a requirement? If so, free, ent or pro?
Title: Re: XAGE Development thread
Post by: Clarvalon on 12 May 2020, 19:28
The license is here: https://clarvalon.com/documentation/license (https://clarvalon.com/documentation/license)

I should probably flesh the wording out a bit, but the gist of it is XAGE is free for non-commercial use, with a license applicable to the engine for commercial use.  After mulling over lots of options (https://www.reddit.com/r/gamedev/comments/7n999n/how_to_launch_a_tenyearinthemaking_niche_engine/) this felt like the fairest option while still keeping XAGE as a commercial concern.  License will be percentage based.  The idea is that nobody who chooses to use XAGE should be out of pocket for doing so, which is why there's no up front cost.  It also gives me a bit more leeway in terms of providing support, as I'm doing so in my free time which is sometimes limited for reasons outside of my control.

XAGE requires Visual Studio 2019, but you can use the Community Edition which is free for independent users or small teams.  You can also use the lighter weight Visual Studio Code, though without the editor hooks so you'd have to do a bit more by hand (and also lose some things like being able to edit the code while debugging).
Title: Re: XAGE Development thread
Post by: Joseph DiPerla on 12 May 2020, 19:37
Very cool. That seems very reasonable. I always thought Visionaire had a decent piece of software, but their licensing options were insane especially considering that AGS and adventure creator are far better. I downloaded Awakener for Android. Works smooth and 100%. Keep it up!
Title: Re: XAGE Development thread
Post by: Clarvalon on 12 May 2020, 20:00
Thanks!  That's running on a very old version of the engine, when it was still built on top of MonoGame.  Things have gotten considerably better since (it's just taken much too long), although I'll probably focus on iOS next ahead of Android as there are so many systemic problems (https://github.com/FNA-XNA/FNA/issues/289) with it.
Title: Re: XAGE Development thread
Post by: Joseph DiPerla on 12 May 2020, 20:11
I suppose all good things take time. My Star Wars MMORPG sim has been in progress for 7 years and counting. Looking back at what I originally had and seeing how far it has come is like night and day. The same with XAGE, AGS, etc.. all good things take time.
Title: Re: XAGE Development thread
Post by: Clarvalon on 12 May 2020, 20:45
That sort of longevity means it's a labour of love (or indicative of a masochistic streak).
Title: Re: XAGE Development thread
Post by: Kweepa on 15 May 2020, 01:09
If I ever get around to writing another adventure game I'll probably try using this instead of AGS, because C# and proper debugging.
Looking forward to a public release!
Title: Re: XAGE Development thread
Post by: Clarvalon on 15 May 2020, 13:08
Locals and Edit & Continue are two things I really miss whenever I go from Visual Studio to debugging in AGS. 

I've updated the list of items that need to be addressed before going public with v1:  https://github.com/clarvalon/XAGE-Public/projects/1

Most of these should be fairly straightforward, though the big ones are:
My dayjob is going through a busy spell, so it's hard to put an ETA on it, but at least there is some visibility of current progress.
Title: Re: XAGE Development thread
Post by: Joseph DiPerla on 16 May 2020, 23:47
I have to say that what i have tried is very impressive and very reminiscent of AGS. I havent tried the conversion yet. But if it wasnt for the fact that it has a commercial license(Not complaining about it, but the current AGS project license wouldnt really allow for commercial charge i dont believe) attached, i feel XAGE would make the ultimate successor to AGS.
Title: Re: XAGE Development thread
Post by: Clarvalon on 17 May 2020, 10:33
Glad it's going ok so far.  Let me know if anything goes wrong with the conversion - it's reasonably stable as a fair few games have gone through it, though sometimes the process falls over when something unexpected comes up.  There is usually also scripting issues to fix - for the most part these are simple things like typing issues (where AGS allows bools to be used as ints and vice versa, where C# is much stricter), but sometimes more complicated modules take a bit of rework to get running.

After playing around with the AGS template games yesterday I'm wondering whether caching a known good C# version of common AGS modules might be a good idea, to limit the amount of rework developers may need to do.  The only downside with this is that they'd need to be kept up to date with any of the AGS equivalents.  XAGE has zero telemetry in it, but this is one area where I could see it being useful.  On the whole I think I'd rather stay clear of any data privacy issues though.

To clarify, I don't see XAGE as a successor to AGS.  The model AGS uses - an all-in-one program that handles everything for you - is compelling, and both the engine and editor tools are very mature.  XAGE is aimed at people who want a comfortable AGS-esque experience but also want the benefits of using Visual Studio and C#, and the platform publishing mechanisms it offers.
Title: Re: XAGE Development thread
Post by: Snarky on 17 May 2020, 17:51
To clarify, I don't see XAGE as a successor to AGS.  The model AGS uses - an all-in-one program that handles everything for you - is compelling, and both the engine and editor tools are very mature.

Discussion of the future of this model in AGS has been merged (https://www.adventuregamestudio.co.uk/forums/index.php?topic=57990.msg636620547#msg636620547) with the AGS Project Goal thread.

/moderator
Title: Re: XAGE Development thread
Post by: Clarvalon on 23 May 2020, 21:22
Today I implemented Sliders.

(https://i.imgur.com/wTdMTD5.gif)
Title: Re: XAGE Development thread
Post by: Joseph DiPerla on 24 May 2020, 03:13
Cool!
Title: Re: XAGE Development thread
Post by: eri0o on 24 May 2020, 12:49
It's so magical to see it working Clarvalon! Keep going!  :-D