XAGE Development thread

Started by Clarvalon, Fri 09/08/2019 22:49:37

Previous topic - Next topic

Clarvalon

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 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 - hopefully this showcases the current state of the engine.

XAGE - Cross-Platform Adventure Game Engine (alpha)

Crimson Wizard

#1
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)

Monsieur OUXX

#2
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?
 

Clarvalon

#3
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 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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

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:



Having uploaded a handful of prototype/showcase games there already, 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.



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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

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

Packaging games as single executable files is a nice novelty.

XAGE - Cross-Platform Adventure Game Engine (alpha)

eri0o

Is XAGE available for download?

Clarvalon

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  :)
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

Getting started with XAGE in two minutes ... ish:

XAGE - Cross-Platform Adventure Game Engine (alpha)

Joseph DiPerla

Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Clarvalon

Earlier versions of XAGE were built upon Monogame which supported Android (see Awakener).  However I've since switched to FNA, which does not yet officially support Android.  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
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

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 looked good, and tests on real world examples even better.  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.

XAGE - Cross-Platform Adventure Game Engine (alpha)

Mehrdad

Hi @Clarvalon

Isn't any beta link .exe file for test your engine? Or what is your estimate time for the first beta release?
My official site: http://www.pershaland.com/

Clarvalon

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

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!
XAGE - Cross-Platform Adventure Game Engine (alpha)

Mehrdad

Oh sorry, I missed this in discord. I'll try it. Thanks a lot.
My official site: http://www.pershaland.com/

Clarvalon

#15
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

More recently I've gotten the AGS SpeechBubble module converting across:



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).

XAGE - Cross-Platform Adventure Game Engine (alpha)

Snarky


Clarvalon

A port of AGS game Space Pool Alpha has been completed:  http://clarvalon.blogspot.com/2020/04/space-pool-alpha.html

The C# source is also available on GitHub:  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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

Last 'n Furious got the same treatment:  https://github.com/clarvalon/LastAndFurious



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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Mehrdad

Thanks, Clavaron. well done!!!
My official site: http://www.pershaland.com/

Clarvalon

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 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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

Here's the thing I've been working on - Last 'n Furious is now playable for free on Xbox One.  Details here:  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

I've got lots to keep me busy but I need a new project   :)
XAGE - Cross-Platform Adventure Game Engine (alpha)

Cassiebsg

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.
There are those who believe that life here began out there...

Clarvalon

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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Cassiebsg

I don't understand, how I'll find on my Xbox. my Xbox isn't online.
There are those who believe that life here began out there...

Clarvalon

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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Cassiebsg

Okay then, thanks anyway  :)
There are those who believe that life here began out there...

Clarvalon

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 and Viewports 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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Clarvalon

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

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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Joseph DiPerla

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?
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Clarvalon

#31
The license is here: 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 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).
XAGE - Cross-Platform Adventure Game Engine (alpha)

Joseph DiPerla

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!
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Clarvalon

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 with it.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Joseph DiPerla

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.
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Clarvalon

That sort of longevity means it's a labour of love (or indicative of a masochistic streak).
XAGE - Cross-Platform Adventure Game Engine (alpha)

Kweepa

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!
Still waiting for Purity of the Surf II

Clarvalon

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:

  • Being able to automate serialization testing (in order to have confidence in loading old save games with each release, or at least knowing about breaking changes).
  • Finish off GUI editing, along with implementing some missing GUI Controls in-engine.
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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Joseph DiPerla

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.
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Clarvalon

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.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Snarky

Quote from: Clarvalon on Sun 17/05/2020 10:33:26
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 with the AGS Project Goal thread.

/moderator

Clarvalon

Today I implemented Sliders.

XAGE - Cross-Platform Adventure Game Engine (alpha)

Joseph DiPerla

Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

eri0o

It's so magical to see it working Clarvalon! Keep going!  :-D

Clarvalon

A quiet week due to my dayjob (and lockdown picnics), though TextBox is now mostly complete.  This will be finished off once ListBox has been implemented and the two are confirmed to play nicely together, per the AGS Sierra template.

I've also created a Discord server:  https://discord.gg/wQNnz5g

Primary use will be webhook notifications for automated builds, but Discord will also be the quickest way to get help with anything XAGE-related, although emails/DMs are still fine too.  Alpha access is also still available to anyone who is interested.
XAGE - Cross-Platform Adventure Game Engine (alpha)

Joseph DiPerla

Excellent! XAGE is developing nicely.
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Clarvalon

The Discord server is useful for stream-of-consciousness type updates that don't necessarily fit on twitter or on forums. 

This evening I ported seven AGS games from scratch and got all up and running in XAGE, albeit with various degrees of success: AeroNuts, Byte of the Draculator, OpenQuest, Eternally Us, Dog From Hell, Ortis, Odot Tamat On.

It's a useful exercise as it helps keep on top of any regressions that may have been introduced as part of other changes.  For instance, this shadow effect is a bug I've not encountered (or noticed) previously:



It's also rewarding to see each game incrementally improve as the conversion process and engine runtime both mature.  Every so often I'll scour the forums and github for open sourced AGS games I may have missed, as each one helps move the needle forward.
XAGE - Cross-Platform Adventure Game Engine (alpha)

eri0o

This is awesome work Clarvalon!

I have some AGS related open source stuff on GitHub, if you ever find something you need help understanding, feel free to ask. :)

Love your work. Keep at it!  ;)

SMF spam blocked by CleanTalk