Total Miner Forums
Total Miner Development => Development Updates => Topic started by: Craig on September 06, 2016, 05:54:41 PM
Below is a full breakdown of the work remaining before we can release to PC Steam Early Access.
This list is not yet complete. I will continue to add to it over the next week or so and then post once it is considered a complete list.
Bugs to Fix - These bugs must be fixed before release.
Count: 24 [fixed 42] [new 32]
Low Priority Bugs - These bugs can be fixed after release.
Count: 36 [new 12]
Build P2P networking solution using Steam networking.
Finalize default NPC dialog.
Finalize default behaviour for free spawning NPCs (passive and aggressive).
Fix NPC free spawning logic.
Finish key textures.
Ensure gamepad can be used to fully control new GUI screens.
Add virtual keyboard for gamepad users.
Convert from XNA to PC.
Ensure lost graphics device is properly handled.
Scalability and RAM:
Deal with scalability issues.
Perform a full RAM profile.
Continue expanding the TM Modding API. This work is not critical to release.
You can browse my test mod projects here: https://github.com/cmartin99/TotalMinerMods
Because XNA only supports 32bit, some have asked why not just port to MonoGame straight away (MonoGame supports 64bit).
For those that don't know, the primary benefit of 64bit is the RAM address space. While the game is running on a 32bit process, it can only get about 1GB of RAM from Windows, and due to how XNA virtualizes GPU objects on the PC (a copy is kept both in GPU RAM and System RAM), it's not much more RAM than we have on the Xbox 360 (the 360 only needs one copy of GPU objects).
However in 64bit mode, address space is practically unlimited and so the game should be able to get all the RAM it reasonably needs (several GB).
Back to the original question. I tried porting to MonoGame about a year ago, and after a days work, it became clear that it is not simply a straight forward process of recompiling the game using MonoGame assemblies instead of XNA assemblies (DLLs). MonoGame does not support a lot of little details that XNA does, and even the ones it does support, the implementation is completely different and so many little bugs and graphics glitches manifested under MonoGame that are not there with XNA. So it will take some time to work through all the little bugs/glitches and make work arounds for XNA features that MonoGame does not directly support.
TL;DR Porting to MonoGame is not straight forward. It will probably take several weeks of work. And because I'm still unfamiliar with it, I'd rather get the PC port working under XNA first, then look to MonoGame once the PC version is released and stable.
And the PC port proper begins..
Legend: yellow = item complete
Task #1 - Replace XNA / Xbox networking.
Remove all references to Microsoft.Xna.Framework.GamerServices
Remove all references to Microsoft.Xna.Framework.Net
Create minimum replacement types (15) for Microsoft.Xna.Framework.GamerServices - bare bones - mostly stubs
Create minimum replacement types (21) for Microsoft.Xna.Framework.Net types - bare bones - mostly stubs
Be able to compile and run the game with replacement types (no references to Microsoft.Xna.Framework.GamerServices)
Be able to compile and run the game without XNA Game Studio installed on computer.
Be able to start a new local world with replacement types (no references to Microsoft.Xna.Framework.Net)
Be able to load an existing world with replacement types.
Complete all replacement type functionality required for the correct execution of a local game.
Be able to start a networked world with replacement types.
Complete all replacement type functionality required for the correct execution of a networked game.
Task #2 - Keyboard, Mouse, Gamepad support.
General support for keyboard, mouse and gamepad.
Support for custom bindings.
Save custom bindings.
Cleanup all input.
Task #3 - Multiple Resolution support.
General support for multiple resolutions.
Save settings and use on restart.
Cleanup all screen element positioning / scaling.
Task #4 - Replace XNA Xbox file handling with standard windows .Net file handling.
Task #5 - Multi-line text input support.
The last couple of days I've been merging the NPC behaviours code seen here (http://totalminerforums.net/index.php?topic=3053.msg167225#msg167225), here (http://totalminerforums.net/index.php?topic=3053.msg167061#msg167061), here (http://totalminerforums.net/index.php?topic=3053.msg166790#msg166790), here (http://totalminerforums.net/index.php?topic=3053.msg166370#msg166370) and here (http://totalminerforums.net/index.php?topic=3053.msg165766#msg165766) into the main code branch. It's proven to be a tough job because the original code seen in those videos was developed on version that is very different to the current version plus it had a whole lot of no longer relevant PC code. The merge has taken almost 20 hours so far, and probably still another 4-8 or so remaining to complete everything.
This change merges NPC's and Mobs, so they are now one and the same. You control their AI using a custom built Behaviour Tree visual (graphical) editor. Control their actions / movements / behaviour, multi-level dialog and much more by assembling a graphical tree of pre built logic nodes or blocks. See here (http://totalminerforums.net/index.php?topic=15740.0) for docs.
I'll also be looking into using the same behaviour tree editor as an option for visually creating / writing / assembling scripts.
Over the next few weeks I'll likely post some images of the user interface I'm working on. See end of this post.
So any of these images I post, by default assume they are work in progress, place holder graphics / colors, not final layouts etc, and will likely change before release.
Feedback is welcome, that's part of the reason for me to share the images.
I will be trying to take the best parts of the Destiny user interface and suit it for TM, give it our own flavour. They main reason is the interface works well on PC's, Consoles and Tablets, all platforms really, so it means I won't have to completely rewrite the interface if the game does get on to platforms other than PC.
A GIF: https://gyazo.com/7f7a4825bd9deec81ed1ef4dab657133
The last couple of days I've been merging the NPC behaviours code seen...Mostly done, just some fixing up to do now. And improve the UI.
This weeks goal is to get some kind of basic Peer to Peer networking up and running.
I've put networking aside for the moment.
Mouse / Keyboard support with custom bindings mostly completed.
Support for multiple resolutions is next.
In an effort to minimize the time for transitioning to PC, particularly for the community faithful, we are considering the following:
Perform the absolute minimum work required to get the game playable on PC. So no new features (apart from what is listed above). Just the essentials.
Put the game into steam early access.
Once in early access, spend the next 6-9 months ironing out most of the glitches, polishing what we already have, and adding the features we feel are essential for a full game release, such as animated avatars.
Then release the game proper and continue with new features.
Multi res support added:
Now have support for multiple custom input profiles.
New shop/inventory UI coming along quite nicely
AlienizdPixel just made the first ever TM supported mod.
And it looks like The Gold Knight is the first non tester indirect TM modder
Dryym #2 - And I'll leave it at that for now.
It's now time to get this game released on PC.
So from next week I will replace the OP with a detailed breakdown of everything that needs to be completed to release.
No more new stuff. Only essentials and bug fixes.
And I will check them off as they are completed.
It will serve as my todo list, and some transparency for you guys to know where we're at.