SoA wishlist/suggestions/roadmap

  • Hi,


    TL:DR


    I am in the process of reviving and fixing of the SoA source - as mentioned in another thread - to enabled more people to easier get into using the code.


    Bear with me not writing in German (you can reply in German) and even worse not having completed the game or modded it or having a full overview of the internals of the assets. My focus is very much on the source code and fixing that - and bring that to the table. So my plan/idea is utilize the benefit of having the source available for the game.


    My intention/road-map of my fork on GitHub repo:

    1. Ensure that everyone can compile the original source with the newest free Delphi CE - which actually make it bearable to work with the source. DONE
    2. Clean up the source - remove rot. And different separation, to help move code to cross-platform. WIP
    3. Add the fixes, enhancements done by the great people who have gritted their teeth on the code previously
      • HD/FullHD support - but I think that should be optional (also keeping the original 800x600) - so either add a "launcher" or re-organizing the "Options"
      • Add a character/sex selector - again probably re-organizing the "Character Creator" dialog - Character in the center - male/female choices.
      • Mod selection - more DLC style - extendable instead of destructive copy/paste exercises.
      • Better multi-language support in the released source - right now it is crippled, like other parts of the UI code.
    4. Add documentation on the assets file-formats used.
    5. Evaluate the tools - maybe redo/merge them - and include them in the repository.
    6. Replacing DirectX - with what makes better sense (SDL2 woulld be easiest) - might include the DDraw fixes in code as first step (getting rid of DDraw.dll).
    7. Cross-platform - that could be Windows, macOS, (Linux) and tablets (Android/iOS) - would need control overlays. Lowest priority since - clean code makes the rest easier.

    So any comments, ideas? I would like to get input, ideas and pull request (when the code is in a cleaner state ;))


    I haven't read all posts in all threads yet - but there seems to be some gold hidden in there - that could also be compile and added in some form to the repo. Sorry but I am very much in favor of having "asset" information/documentation close to the source code - so if no-one minds I would grab/revise (with reference of cause) some of the documentation and include in the repo?


    Would this be helpful in any way - or am I just interfering and raving :lol:?

  • 2. Clean up the source - remove rot. And different separation, to help move code to cross-platform. WIP

    I just skimmed through the code in a quick manner but man that'll be one hell of a work to do.

    Kudos to you for even trying!


    Evaluate the tools - maybe redo/merge them - and include them in the repository.

    If ChaptEd would be existing in a state where it doesn't crash every 2 missed clicks it would be far more useful for sure.



    One of the things I got in mind for a while now is porting the game's code to something like Unity. It would get rid of many issues the games has. The cross-platform support would be easy to achieve with that too. Re-using the assets would be a little work since Unity works a little different tho.

  • I just skimmed through the code in a quick manner but man that'll be one hell of a work to do.

    Kudos to you for even trying!

    LOL - I have been doing this for a living for many years - and the code is by no means the worst out there :) But there are a lot of things in there that I would do differently - nowadays. I would say that is the trivial part of the road-map - might take a bit of time - but it is just like eating an elephant - bit by bit - pun intended.

    If ChaptEd would be existing in a state where it doesn't crash every 2 missed clicks it would be far more useful for sure.

    If the source code is available everything can be fixed - but it might not make sense - rethinking and redoing can also be an option.


    Since I am only into the code for two weeks (for a couple of nights) and in the forum for 3 days - I still need to get acquainted with the various modding tools, what is need/used and for what purpose.


    Redoing a game on a different platform is not trivial - the cross-platform thing does not worry me - when the code cleanup and feature-fixes are completed, especially if replacing with something that has an abstraction layer. Have to pull the Windows-ism out of the code first.


    How important is cross-platform, compared to a working stable "customizabel" game - that then goes cross-platform? And which platforms? Is a poll needed - nice to have or need to haves ;)

  • Hi, thank you for your effort!


    According to your name I first assumed you were Steven Davis but now I assume you are not because he already implemented some of those features but unfortunately never provided us with his source code or any way to mod the game after the patch.

    I agree with you, that a lot of the problems SoA has on modern Computers come from the DirectX implementation and the crashed from ddraw.

    Concerning the mod support it would be amazing, if one could easily add elements to the fast travel map, for example for the Peasants Bailey and all the other parts of Avalon that appear on the map but are not used as of now.

    It would also be cool if there was any way to completely remove the registration feature (copy protection) since it still leads to some crashes. Not sure how that would be concerning the legal side though but since it is already open source I doubt it would be a problem.

    Also to have some graphical settings like brightness that could be set during the game in the Options instead of having to restart the game would be awesome, especially when switching from the dark villages to the bright castles.

    An easy way to add spells would also be awesome, the way it works right now in the Sourcecode I do not think it would be too complicated to just have a folder full with configuration files for the different spells that could be added to.

    Mod selection - more DLC style - extendable instead of destructive copy/paste exercises

    I really love this idea, especially if one would be able to add new Items by just adding another database file like Items_mod.db in the folder would be amazing.

  • I agree with you, that a lot of the problems SoA has on modern Computers come from the DirectX implementation and the crashed from ddraw.

    Yes - and DirectDraw has been deprecated by Microsofts for years - so it needs to go eventually. Opening for a cross-platform graphics lib sooner than later.

    It would also be cool if there was any way to completely remove the registration feature (copy protection) since it still leads to some crashes. Not sure how that would be concerning the legal side though but since it is already open source I doubt it would be a problem.

    Yes I stumbled upon this in the code - and thought this makes no sense anymore - but did not remove it at that time - 1 day with the code - because that var not the focus to possible break something I had no clue if had any purpose - but it will go. It is with code under source control, if you do not use it remove it.


    Just a heads up: posted a blog post to keep my blogging quota: :D http://fixedbycode.blogspot.co…ege-of-avalon-lifted.html


    Happy to hear the positive reactions so far, see if I can get the 535 warnings in the code removed this weekend - then we are ready to rumble :party:

    • Offizieller Beitrag

    Actually there is a "Starter"/launcher for 3 different resolutions (800x600, 1280x720, 1920x1080). It's the standard-executionfile to start the Mod Ashes of Avalon. You can find the code down under my post. All in all: A really easy solution.


    Fliwatt

    Der "Registrationscode" ist im aktuellen Source Code mittlerweile schon "auskommentiert". D.h. er ist steht noch drin, kommt aber nicht zur Anwendung.

    Der Schnellreisebildschirm ist eh schon in Bearbeitung für weiter Burgbereiche. (Für Händlerhof und Hafen).

  • Nitemare - I am down to 0 warnings ( I did set the compiler to ignore the 335 non-critical "Implicit string cast" :D) - they should not be fixed by the bit of casting hell I added. I will redo the file-routines, honoring the file-format of cause.


    Did fix a few other things - and did a bit of cleaning - as Rucksacksepp said, the "Registrationcode" was not used - so I removed a reference and now the file is gone. I am in big favor of throwing unused code away.


    ChangeLog from the latest push: https://github.com/SteveNew/Si…/blob/master/CHANGELOG.md

    • Offizieller Beitrag

    I've read the changelog and found something that i have to mention:

    If screen resolution should be available in options you have to add some more code. There is a property for characters called "vision" in every AI.pas-File. Vision stands for noticing the player. This has to be adapted to the current screen resoultion as I did with the titles "AoAHD" and "AoAFull" to adapt the AI if a new game is started.

  • Rucksacksepp - thanks, yes I noticed in your changes. There also seemed to be other nice adjustment - but I have really not looked at the detail on what was bug-fixes you had added, and what was enhancements. Great of you to mention - and I hope we can collaborate on this - if you do not mind.


    I have a lot to learn about the assets, the game and the code - so bear with me.


    I have opened up for creations of Issues on GitHub - so I will probably use that as a to-do list - others are welcome to add.

  • I do not have any intention on rewriting AI - or breaking the original feel or idea of the engine - that would then be a whole different project.


    There is a fair amount of natural code rot, and doing a lot of file I/O on stringlist-driven streams was how it was done. So the AI we should live with - might do adjustment to hp/xp ratios like of things - but I guess since people liked the game - it is balanced well enough.


    Coding is just a craft - the knowledge about the game and the assets is what counts to make it work. If you can specify - something that I can understand (this might be the hard part :D) - then it can probably be done.


    Is/was there a changelog with the patches/fixes for 1.4 or 1.7? Just to check on the code which issues where fixed?

  • I do not have any intention on rewriting AI - or breaking the original feel or idea of the engine - that would then be a whole different project.

    Changing how the AI perceives the player from tying it to a reasonable detection radius instead of the viewport shouldn't really affect the feel of the game imo. Changing the resolution to game the game, i. e. change the detection radius to circumvent detection is a weird design decision. Making the detection radius as big as the detection runs on the lowest resolution should ensure the same look & feel for all the other resolutions.


    But sure that'd be another project but still a part of re-engineering the game.


    Nice work on the warning tho.

  • An update, if anyone is interested.


    I am almost done adding at least three options based on the work done earlier by Rucksacksepp, that should enable to both play the "Original" and the great work that was done with the HD/FullHD (and HitPoint/Party controlled properties) - so when I later this week commit the code, these 3 are added to the INI settings (no UI - yet):


    ScreenResolution=FullHD (Original, HD or FullHD)

    AdjustedPartyHitPoints=true

    PartyOfFour=true


    These are non-pretty hacks - but all the old 2003 code is very messy - so my hack is an improvement ;)


    Rucksacksepp I did PM you last week - do you mind if I include your HD and FullHD assets in the Repo? Or should I just point to the post here?


    The plan is to afterwards - spring clean the the whole repo - keep only a single source directory (since everything is included/merged as options) - and then further heavy refactoring - to clean-up all the nasty copy-paste code.


    From there I guess a "Final" DirectDraw release - and then onto SDL - well at least a plan for now.

    • Offizieller Beitrag
    Zitat

    PartyOfFour=true

    -> Don't forget to add this code because I think this is truely an improvement:

    Code
    //character.HitPoints := ( ( player.Perception * 2 ) {* NPCList.Count} ); <-thats the old Code
    if NPCList.Count > 1 then
    character.HitPoints := ( ( player.Perception * 2 ) * ( NPCList.Count / 2 ) )
    else
    character.HitPoints := ( ( player.Perception * 2 ) );

    (perception is for apprentice, for hunter it's coordination and for squire it's strenght)

    For me all enemies were unbalanced (had to much life) if you hade some party members with you. So I "nerfed" it. Especially with 4 party members, so the hitpoints were fivefold.

  • Rucksacksepp Thanks - yes I have included the AdjustedPartyHitPoints setting to either use the "original" (there seems to be two version - the oldest multiplies by NPCList.Count - which is further commented out in your example above) - or your more balanced way.


    Did the original not always have max 2 party members? So 4 would only be for HD/FullHD. I also did reply on PM.

    • Offizieller Beitrag

    I've just had the thought about a problem if you set the number of partymembers in the siege.ini. You can change the number with scripts in converstaions and so on. So maybe this shouldn't be set in the ini-File.


    There weren't more than 2 party members available in SoA. Well you can have a look at the Interface where you can see just 2 Slots... 4 are not directly for HD and FullHD-Support. It's for the mods.

  • You are right - for now I will let the number of slots on the UI control the max number of party members - and concentrate on the basic game/engine.


    Then you that have been doing the mods - could come forward with what changes you want to see in the engine - either as permanent fixes, or optional settings to support additional features. Otherwise I will do too much guessing based on my too little knowledge about the game it self.


    Will add the Language selection in the Option, as was intended - English/German/Spanish based on the existing assets.


    Thanks for the feedback and helping me out.

  • I have now removed the "PartyOfFour" setting, and let it be controlled by whether there are room for 2 or 4 slots on the UI. As pointed out - the HD/FullHD assets done by Rucksacksepp where styled for AoA, so I have done a SoA styled in HD, and FullHD will follow before I commit the whole HD/FullHD build. I also noticed that the german Interface\text.ini included is incomplete - will fix as well.