Beleriand status

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • Quirk
    replied
    Originally posted by Pete Mack
    Quirk--
    I don't think you are aware of how much the Angband codebase has improved, post 3.0.5--it doesnt look anything like NPP anymore, by and large.
    A lot of duplicated code is just gone, with loops and/or function pointers replacing case statements.
    I'm sure it has, but I was talking about the Sil code, which has undergone a lot of messy evolution on top of the copy and paste.

    My brief impressions last I looked at the Angband code were that it had been very much improved. Unfortunately though, moving Sil across to a newer cleaner framework involves parsing the existing tangle first.
    Last edited by Quirk; January 12, 2022, 23:44.

    Leave a comment:


  • Pete Mack
    replied
    Quirk--
    I don't think you are aware of how much the Angband codebase has improved, post 3.0.5--it doesnt look anything like NPP anymore, by and large.
    A lot of duplicated code is just gone, with loops and/or function pointers replacing case statements.

    Leave a comment:


  • Nick
    replied
    Thanks, that helps my thinking along. We'll just see how it goes, I guess.

    One of the benefits of doing this is that it has the potential to highlight places where the Angband code could be better written or organised - in fact, this has started to happen already.

    Leave a comment:


  • Quirk
    replied
    Originally posted by Nick
    That's essentially what I'm doing - the aim is to get the gameplay of Sil in a codebase that looks like it's been forked from current Angband. I have made decent progress with modernising the data files, and also making changes to support that (parsing, etc). It's going to take a while, but I'm currently feeling it's doable.
    Doable yes but probably months of full-time effort.

    The fiddly stuff to rewrite around geometric calculations you probably already have from Angband, so this makes things much easier and you are probably the best placed to do this. The sound dispersal (for stealth/song) and morale system are probably the only interestingly algorithmic bits needing ported across.

    However, reading and understanding the existing code will be a substantial time cost and there are many elements that will still need design work after a reimplementation e.g. the level generation, which is currently following a terrible algorithm not guaranteed to terminate in a viable level, will still need to handle forge placement after an improved version is written.

    If you have the time and are interested in doing this, why not?

    Originally posted by Nick
    Whether you would ever want to redo Sil-Q on top of the finished product when it emerges is a whole nother question. The advantages would be better tile, UI and front end support; the disadvantages are obvious
    Unfortunately my own time is at a premium right now as I flit between continents and the day job ramps up. I was substantially restricted in my ability to make even simple improvements because the codebase dysfunction made them rather less trivial than they should have been.

    I am likely to pause Sil-Q development for quite a long time. If you wanted to use it as a basis for the refactoring I would have no issues with this - a lot of Sil bugs were fixed over the period I worked on Sil-Q - but I haven't made any significant attempts to clean the code up so it would be no easier as a starting point.

    Leave a comment:


  • Nick
    replied
    Originally posted by Quirk
    If I were implementing a new version of Sil and prepared to invest enough time to refactor it properly, I would not refactor it but would start from scratch. There is a good deal which is not fit for purpose which should be simply thrown away - in particular, anything related to level generation or item generation. A good deal of the codebase is simply dead code.
    That's essentially what I'm doing - the aim is to get the gameplay of Sil in a codebase that looks like it's been forked from current Angband. I have made decent progress with modernising the data files, and also making changes to support that (parsing, etc). It's going to take a while, but I'm currently feeling it's doable.

    You're quite right about dead code.

    Whether you would ever want to redo Sil-Q on top of the finished product when it emerges is a whole nother question. The advantages would be better tile, UI and front end support; the disadvantages are obvious

    Leave a comment:


  • Quirk
    replied
    Originally posted by Nick
    [*]Incorporating the code to do this looks like a massive exercise, so I have decided that the "easiest" way to do this is to actually rewrite Sil to use current Angband code (modernising stuff like datafiles and parsing, modularity of effects, UI separation, etc) first.
    If I were implementing a new version of Sil and prepared to invest enough time to refactor it properly, I would not refactor it but would start from scratch. There is a good deal which is not fit for purpose which should be simply thrown away - in particular, anything related to level generation or item generation. A good deal of the codebase is simply dead code.

    Of the rest, it's sprawling and disorganised and repeats itself in far too many places. There is a lot of magic global nonsense going on. The interfaces for the tiles are limited in the extreme and I had to institute some very dirty hacks to make various overlays work. Anything related to the UI is a royal pain.

    Attempting to keep too tightly to the existing codebase risks inheriting its many and severe limitations.

    Probably the only thing worth studying in depth before reimplementing would be the monster AI - it's not horrendously complicated, and doesn't sprawl too badly by Sil standards, but it's non-trivial. Much of the rest would be faster and better implemented from scratch to modern coding standards.

    Leave a comment:


  • Nick
    replied
    Originally posted by clouded
    "After the refactor" is just classic Nick.
    Well, when you put it like that...

    Leave a comment:


  • clouded
    replied
    "After the refactor" is just classic Nick.

    Leave a comment:


  • Nick
    replied
    Originally posted by HugoTheGreat2011
    Is there any way you can provide a preliminary alpha version for gameplay testing on webserver or elsewhere?
    It's actually being autobuilt like V and FA here, but most of the changes are downstream updates from those, and the actual "game" is mostly non-functional, and the bits that do work are slated to be replaced by other bits. So if you're prepared to be completely misled, go right ahead

    Leave a comment:


  • HugoVirtuoso
    replied
    Is there any way you can provide a preliminary alpha version for gameplay testing on webserver or elsewhere?

    Leave a comment:


  • Nick
    replied
    Latest

    Some progress, but also some scope creep.

    I have pretty rudimentary (and buggy) map generation going. I have changed the scale again to make the map even bigger, with each game grid having an in-game width of 2 metres. I have played a bit with the idea of a zoom function, so the player can see a bigger area while moving, but my current implementation has some performance and other issues.

    I then decided to leave the map for a bit and move on to gameplay. My intent from almost the beginning has been to use Sil-style skill trees, and the current Sil competition has led me to go in and look at Sil mechanics a bit more. This has led me to two conclusions:
    1. I really want to incorporate a large part of Sil - monster behaviour, probably combat, singing to replace magic, smithing, ... - so Beleriand is starting to look to me like a Sil variant;
    2. Incorporating the code to do this looks like a massive exercise, so I have decided that the "easiest" way to do this is to actually rewrite Sil to use current Angband code (modernising stuff like datafiles and parsing, modularity of effects, UI separation, etc) first.

    This is a clearly ridiculous course of action, so maybe I will change my mind (it's not like that never happens). But at this point it looks like I am taking on preparation of an unofficial version of Sil to go with maintaining Angband and FAangband and preparing Beleriand. Please feel free to tell me how stupid I am being - I am literally asking for it.

    Leave a comment:


  • EugeneLesnov
    replied
    Oh, sounds amazing. May the bless of Valar be with you

    P.S. To be honest, I'm burning with impatience

    Leave a comment:


  • Nick
    replied
    Originally posted by EugeneLesnov
    I'm going to speculate a little, if you please
    I am far from decided, but you've hit fairly close to my current plans.

    The plan is to set the game after the third kinslaying, with all the major elven strongholds destroyed and the land overrun by servants of Morgoth. So there should be a feeling of walking through the broken remains of everything the Noldor and the Sindar had created.

    I also plan to have a fixed timeline, so if the character survives long enough the Valinorean host should arrive in preparation for the War of Wrath. I'm leaning toward that being the end of the game, but am not sure what the player should be trying to achieve by then.

    I'm just trusting that I can make it up as I go along

    Leave a comment:


  • Mondkalb
    replied

    Leave a comment:


  • EugeneLesnov
    replied
    Originally posted by Nick
    The foundation of the game is the map
    I wisely started with a map..(c) J.R.R. Tolkien

    Originally posted by Nick
    and I don't really have a clear picture of what you might call a win condition
    There is something to think about here..
    I'm going to speculate a little, if you please
    Also, I'm going to take as a basis the maximum closeness to Tolkien's lore.

    There are 6 major battles of Beleriand:

    1. The First Battle was fought before the Noldor arrived, and was fought by the Sindar, Laiquendi, and Dwarves of the Blue Mountains.
    2. The Dagor-nuin-Giliath, or Battle-under-Stars, fought by the Noldor following Fëanor and his Seven Sons.
    3. The Dagor Aglareb, or Glorious Battle, which led to the Siege of Angband.
    4. The Dagor Bragollach, or Battle of Sudden Flame, in which Ard-galen burned and many Noldor, including King Fingolfin, were slain.
    5. The Nirnaeth Arnoediad or Battle of Unnumbered Tears, in which the Union of Maedhros was utterly broken by Morgoth.
    6. The War of Wrath, which defeated Morgoth, ended the First Age of Arda, and destroyed most of Beleriand.

    For me personally, Beleriand is associated with the War of Wrath, so..It seems that the ultimate goal should not be to kill Morgoth.
    As a result of War of Wrath, Morgoth was sent as prisoner to Aman, where Mandos judged him, and the Dark Lord was "executed".

    The main quest probably should not be to kill Morgoth as I said above, but it could be to help the allied forces against Morgoth's armies.

    In accordance with the principle of "Divide and Conquer", let's divide this quest into subquests like:

    * Destroy Balrogs
    * Slain Ancalagon the Black
    * Kill some orc commanders
    * Descend into the Angband dungeon
    * Weaken Morgoth to bound him with chain Angainor (Gameplay feature of using quest items?)

    As we know, the devastation caused the war left Beleriand mostly destroyed. We can use this fact for gameplay purposes..After each subquest, part of the map may "disappear" as a result of the war (It might be randomized?).

    According to "The Tale of Years" War of Wrath lasted for more than four decades (F.A. 545 - 587). It seems natural that some territories changed hands.
    To make the war feel "real", we can divide the large map into "zones" that might be occupied by allied forces, might be neutral or might be under the control of the enemies.
    This will give us a basis for calculating the "danger" level for the current zone the player is in.

    Sorry if this seems sketchy. I just wanted to start brainstorming...Maybe some ideas might come in handy.

    Leave a comment:

Working...
😀
😂
🥰
😘
🤢
😎
😞
😡
👍
👎