Updates Weekly Updates for Metal Renegades: Refining Gameplay

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Here is my weekly forum post thread for this GSoC 2020 project! Much like my project last year, forum posts done here will be a quick summary of progress during the week, and a meeting summary. There will be accompanying blog posts as well which provide more detail than the forum posts here. In general, the forum will have quick updates intended for people who already know a bit about the project, where the blog is made for anybody to read.

My project this year is an extension of last years Metal Rengades projects, focusing primarily on gameplay over deep technical features. I plan to improve the Metal Renegades gameplay in three ways. First, new goals and challenges will be added to the game, to greater engage the player. Second, the game environment will have unique elements inbedded, to breathe personality into the world. And finally, major gameplay-disturbing bugs will be addressed.
 

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week -1 (pre-gsoc): May 18th - May 24th:
  • What have you achieved in the last week?
    • This week was mostly organization for the project. A trello project board was created and a meeting time was scheduled, among other things.
  • What are you currently working on?
    • The cards on the current trello board are very sparce, but dense. These cards need to be split up into their component parts.
    • The Metal Renegades game requires game assets, so a starting list of assets will be produced so that community artists can tackle some of them.
    • Two difficult tasks in the project: pathfinding and performance optimizations, will be looked into over the week.
  • What problems are you currently facing?
    • Most problems stem from versioning roadblocks discussed below.
  • Is anything blocking you from making progress?
    • There has been some module performance refactoring done recently, so I have been experiencing a few versioning issues preventing MR from running.
Meeting Summary:
First topic of discussion was the basic project setup/method of delivering updates. Project updates will be delivered weekly through the forum post and on my blog. Last year I found that my blog post updates were often taking time away from the project itself, and mentors agreed that the amount of writing put into these updates should be tweaked over time. This week, cards on the trello board will be split up into more detailed parts.

The rest of the meeting was spent discussing three major tasks for this week:
  • First, the idea of making a detailed asset list for the module was discussed. Required assets such as textures, models, structures, sounds, music, etc. will be put into a Github project board, so any artists wanting to contribute can jump right in. I've never actually used sound assets in a module before, so player damage and MusicDirector will be used as references.
  • Second, the issue of Pathfinding was discussed. The possibility of using FlexiblePathfinding was discussed, along with using a similar approach to Master of Oreon.
  • Finally, game performance optimizations were discussed. One major performance issue was identified as the block buffer in DynamicCities. This could be fixed by tweaking the buffer itself, or lowering city growth rate. This grew into a larger discussion about using DynamicCities/StaticCities. The determined ideal solution would be a version of StaticCities where the generated cities would grow further over time. For now, switching to StaticCities was recommended. Other possible performance issues were Behaviors related. Casals brought up that in order to save and then unload an NPC, the behavior tree needs to run through completely from a base state, greatly slowing down performance with more complicated behavior trees. I brought up an issue that I found, that character needs are checked much too often, potentially slowing down performance with multiple characters.
 

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 0 (pre-gsoc): May 25th - May 31th:
  • What have you achieved this week?
    • The latest development build of MR is working for the first time since module refactoring began
    • Cards on the project board have been expanded to approx. 1-2 per week
    • Investigation of DynamicCities performance fixes, such as reducing city growth rate, reducing buffer outflow, and swapping in StaticCities
    • Investigation of potential pathfinding solutions, such as FlexibleMovement
    • Google Doc of game assets for MR has been created, as well as a stub Github project board.
  • What are you working on next week?
    • Modifying other aspects of DynamicCities, such as tweaking building ratios and preventing cities in the spawn area.
    • Tweaking the hardness (how easy it is to break with tools) of blocks in the game world.
    • Adding the Google Doc asset entries to the Github project board.
    • Make PRs for performance & pathfinding discoveries made this week.
  • What problems are you currently facing?
    • NPC character models are currently invisible in-game, which makes it very difficult to work on pathfinding/behaviors.
    • For the github asset project board, I'm finding it very difficult to have greater descriptions of each asset, since MR doesn't have a particular theme/mood yet. The module needs a specific theme to ensure that the gameplay feels 'consistant'.
    • The adjustable city growth rate in the culture prefab doesn't actually impact city growth directly, but population growth. This makes it really hard to gauge what this should be set to.
Meeting Summary:
  • DynamicCities performance tweaking was the first major topic discussed. Reducing the buffer outflow worked very well to increase game performance, almost eliminating the performance hit from buffer outflow entirely. The last major performance impact comes from the city growth cycle, which occurs about every 10 seconds. All settlements are processed at once, so the game may freeze at times. To reduce this, it was determined that the growth cycle should be split up into zones, rather than all at once. Reducing the city growth rate from the city culture configuration helped as well, by lowering the growth of the city population. The way that population relates to city growth is a little confusing; this relation needs to be better documented. Swapping StaticCities into DynamicCities was also attempted, but this would likely result in a lot of changes to the world generator. This changed was deemed as beneficial, as StaticCities provides many gameplay performance benefits.
  • Pathfinding was the next major topic. After getting the new game build to work, there was a bug where characters are invisible. This will likely take 1-2 weeks to fix, so no NPC character features will be worked on until then. (this works out fine with the schedule) SUHAS brought up that they plan to work on a better pathfinding algorithm. We concluded that SUHAS should work on a better algorithm, while I work on a behavior node that actually uses a created path. I noticed while taking screenshots of the invisibility bug that the character is visible when the player stands in the same position. This indicates that maybe the model is rendering "inside-out", where it can only be seen on the inside looking out.
  • Finally, the project asset board was discussed. While making this board, it was very clear that the game needed a defined "art direction". A good direction that we decided was a steampunk/old western idea. The robots and player would have access to modern technology, but with an older twist. For example, a modern GPS would be in black and white. This works well for music assets particularly, as we can use older public domain ragtime pieces. All assets will focus around this style. It was brought up that Stefania Mak could come in to give the UI/UX a sleek treatment in this style.
 

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 1: June 1st - June 7th
  • What have you achieved this week?
    • Applied DynamicCities performance tweaks discovered last week
    • Greatly modified generation of MR cities, slowing down city generation and adjusting building type ratios.
    • Added a city spawn "deadzone", so the player must adventure through the spawn area to find a city.
    • Added some proper tasks to the github asset project board.
  • What are you working on next week?
    • Tweaking block hardness (how easy it is to break with tools) of blocks in the game world.
    • Changing some thirst mechanics, such as thirst reduction rate, and methods of gathering water.
    • More optimizations of DynamicCities
  • What problems are you currently facing?
    • Other than invisible characters holding up pathfinding/behaviors work (already discussed last week), nothing that I can think of right now!
  • Pull Requests/Issues
Meeting Summary:
  • The meeting this week was much shorter than the last two weeks. All achievements this week were discussed, and the plans for this week were confirmed.
  • The biggest discussion surrounded StaticCities/DynamicCities. It was noted how much Metal Renegades depends on core DynamicCities features, and how difficult it would be to convert this over to StaticCities. The performance difference between static/dynamic shrunk by a lot, especially since city growth rate was decreased greatly. As well, looking at how city locations are chosen indicates that it would be much simpler than anticipated to pre-determine. Overall, it seems like it would be easier to adapt DynamicCities than fully switch over to StaticCities.
  • Other than the above conversation, there wasn't nearly as many issues to discuss than previous weeks :D
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 2: June 8th - June 14th
  • What have you achieved this week?
    • Changed water well behavior so interaction will no longer give a water cup. Instead, wells can be drunk from directly, and empty cups can be filled in the well for thirst quenching on the go.
    • Empty cups have been added to the marketplace, making the marketplace essential for long-term survival.
    • Many pull requests relating to block breaking time balancing.
  • What are you working on next week?
    • Giving hunger mechanics the same treatment as thirst mechanics, adding more food items and balancing hunger rates for better gameplay.
    • Characters are now visible again, so behaviors optimization and pathfinding research will start here.
    • Cleaning up loose ends from block break time PRs and thirst system PRs.
  • What problems are you currently facing?
    • The thirst PR has two issues which I don't know how to fix:
      • There is supposed to be a limit to how many refills a single water source block can support, but the variable inside the water source component is not changing/saving properly.
      • Each well should have a tooltip upon hovering over the water block that shows how many refills remain, but this tooltip doesn't show up.
    • The marketplace is having transaction issues. The player can buy an empty cup from the shopkeeper, but no money is removed from the player's account.
  • Pull Requests/Issues
Meeting Summary:
  • For the first part of the meeting, three issues regarding the new thirst/well updates were discussed:
    • First, each well source block inside of a well is supposed to have a usage limit which is stored inside of the block's WellSourceComponent. The variable for the number of well uses left doesn't save for some unknown reason, so the wells can be used infinitely. The reason behind this couldn't be determined in the meeting.
    • Second, there is supposed to be a UI tooltip on each source block (similar to the ones on characters) that displays the number of usages left for the well. This tooltip does not display, despite using similar code to the characters. I assume this is due to block tooltips working differently to entity tooltips. This issue also couldn't be solved during the meeting.
    • Third, empty cups bought in the marketplace wouldn't charge the player. This was determined to be an issue with creating the empty cup entity inside of the market logic. A solution to this issue was found during the meeting, and will be integrated into a PR very soon.
  • Next, the work over the next week was discussed:
    • Since players are visible now, behavior/pathfinding fixes will start to be researched and implemented. It was discussed how with the fixes to DynamicCities, NPC related items are likely to be the next big performance issue to tweak.
    • Hunger will be given the same treatment as thirst, with changes such as more food items and marketplace integrations to be made. It was discussed if these foods should be historically accurate or not. We figured that we should try to be somewhat accurate, but ultimately a world full of robots can bend the rules a little bit :D
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 3: June 15th - June 21st
Meeting Summary:
  • The farm changes made this week were discussed. These changes integrate heavily with the market, and has highlighted some changes/improvements that can be made to the market system. For example, since every city has a local crop, it would be fantastic to have non-local crops sell at a premium in the markets. This enables food trading across different cities. Another idea brought up during the meeting: it would be very nice to have prices automatically fluctuate based on supply, that way a player cannot make money off of one item alone.
  • The refactoring of old test characters was also discussed. These characters are completely unused, so it was suggested that these characters should be removed from the repo completely. I suggested that maybe these characters could be used in Tutorial Behaviors, with corresponding wiki entries attached.
  • It was brought up that some of the work this week actually resolves some of the issues currently in the Terasology triage board (specifically that some berries couldn't be eaten). It would be very good to go through this list again and see which bugs have been fixed. As well, it may be useful to consider the overlap between JoshariasSurvival and Metal Renegades, to see which bugs exist in both.
  • This week I mentioned how FlexibleMovement/FlexiblePathfinding might work as a good reference to fix some pathfinding issues. It was discussed how it may be a good idea to merge the Pathfinding & FlexiblePathfinding modules, to have one central location for pathfinding features.
  • The water well component saving issue from last week remains unresolved. However, this may be connected to an issue in JS, where components attached to blocks only works correctly upon reloading the world. This has not yet been tested.
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 4: June 22nd - June 28th
  • What have you achieved this week?
    • Characters are now given generated wild west names on spawn. As well, the size of each character is also randomly changed, so all characters are distinguishable from each other.
    • Progress in behavior optimizations:
      • FindNearbyPlayersSystem was decreasing performance, this has been improved.
      • The SkeletonRenderer significantly decreases performance (2-3ms per frame) with lots of characters in the world. To address this, character/deer spawns have been halved.
      • The citizen behaviors have been modified to perform unimportant actions significantly less than before (not yet in a PR)
  • What are you working on next week?
    • Cleaning up loose ends from the first month of the project:
      • Addressing the issue with water well components. If a solution cannot be found, strip this feature from the PR and merge.
      • Merging remaining pull requests
      • Further work on optimizations and pathfinding (in collaboration with SUHAS)
  • What problems are you currently facing?
  • Pull Requests/Issues
Meeting Summary:
  • The achievements made last week were discussed:
    • On the proposal, it stated that slight colour differences would be included as part of character spawns. I had this implemented, but it didn't look good on the character models, so it was scrapped.
    • Performance has been improved significantly since the beginning of the project; normal running performance is now comparable to the performance of JoshariasSurvival. There's only really two areas that large performance improvements can be made in MR at this point:
      • DynamicCities still suffers from lag spikes during large operations, such as creating a city, or in a city update cycle. These spikes should be eliminated by better optimizing these operations.
      • In the debug profiler, rendering operations are by far the largest contributors to performance delays. These rendering operations are Terasology-wide, so any improvements made at a higher level will in turn help with MR performance.
    • When changing the citizen behaviors as stated in the weekly update, character movement becomes much more unstable. This may be because a selector behavior node will run a child node until a success or failure, while a dynamic behavior node can be interrupted in the middle of processing if a previous node status changes (If a child node hangs, this will be interrupted with a dynamic behavior node but will completely stop the character itself with a selector node). This behavior indicates issues in the core movement nodes inside Behaviors.
  • The work scheduled for this week was discussed:
    • Pathfinding progress completed by SUHAS must be confirmed. It is possible that they have already completed the pathfinding tasks in my project. If this is the case, pathfinding-related tasks will be replaced by one of the stretch tasks.
    • One replacement task discussed in the meeting is the addition of cross-city interaction. Having characters travel from one city to another to trade and interact would be a very interesting gameplay feature that would be made possible with better pathfinding. Characters that a player sees in one city would be able to interact with the player around the entire game world.
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 5: June 29th - July 5th
Meeting Summary:
  • The fix behind the water well system PR was discussed. The problem came from the WaterWellComponent not saving when attached to a block entity. This was avoided by attaching the well component to the well entity rather than the water block itself.
  • In the original proposal it stated that all items will be removed from the default inventory, so the player needs to gather or buy these items from the shop. It was brought up that some items should be provided on spawn, like a pickaxe and some torches. This way, the player is encouraged to mine for resources.
  • I added a point to improve the marketplace, since it is becoming such a large part of the core gameplay. An issue from last year was brought up, where the marketplace does not work on multiplayer servers. It was then brought up that multiple features of the game cannot be accessed on multiplayer. It was proposed that before Sunday afternoon of this week, a multiplayer test session should be done, where my fixes made this week for multiplayer issues will be tested.
  • One goal that I have this week is to do a deeper dive into the character movement nodes. Character movement seems to be unstable at times, so taking a look at how this movement is actually performed may outline some possible stability improvements.
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 6: July 6th - July 12th
Meeting Update:
  • While working on the multiplayer updates this week, this pull request ended up with a lot of changes. This was because any market changes would stack on top of each other. It was discussed how self-dependent changes like this could be addressed. It was concluded that larger changes like this should be added in a branch on the main repository, and not on a pull request from a forked repository. Then, any dependent changes can be done to the repo branch, and not against develop.
  • In the original proposal, it stated that random valuable items (such as jewelry, gems, and other items) would be added to the game. It was discussed how it would be a more compelling gameplay feature to have items that can be upgraded/crafted. For example, combining a bunch of gemstones together can make a more valuable piece of jewelry, that can sell for more money.
  • This meeting had a gameplay test (with people across large distances), where the following bugs were found/things were observed:
    • Lag spikes within the game (usually due to DynamicCities) instead shows itself as either game client freezes, or rubberbanding.
    • There is a current issue with the wallet system that prevents money from changing upon a transaction.
    • The trading screen needs some work, with GUI input being very confusing for the player. Offers seemed to be accepted/rejected at random, blocks cannot be sold properly, and the selection of multiple items does not work properly.
    • Marketplace citizens would stray far away from the marketplace, which made them hard to find. As well, a market is based off the settlement, so if the citizen leaves the settlement than transactions would not work. At one point in the test, the only market citizen in the city left, crippling the economy.
    • The minimap seems to cause some unexpected lag, with NUI rendering being one of the top tasks taking up frame time.
    • Minimaps would also act weird in the client-server model, with the host having full view of all overlays, but clients having limited features visible. Things such as settlement overlays wouldn't appear on clients.
    • Scrolling through the player's inventory seems to be server-sided. This was apparent when scrolling from my client would lag (with a 110ms ping connection)
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 7: July 13th - July 19th
  • What have you achieved this week?
    • Addressed issues found in last weeks play test
      • Transactions were malfunctioning due to an issue in DynamicCities, which has been addressed.
      • Marketplace citizens would move far away from their markets, their straying is now restricted.
      • The UI for market/trading now update with item quantity values more often.
      • The trading system now allows blocks in trades.
      • A trade is now more likely to be accepted if the prices are almost equal.
      • The reason for accepting a trade is now sent, such as if the item prices are too different, or the probability check fails.
    • The market system has been cleaned up a little bit:
      • Prices are now defined through external prefab files rather than directly in the MarketItemBuilder class.
      • Display names for items are also defined in the same way.
  • What are you working on next week?
    • Creating/adding discoverable places to the world generator, such as treasure chests, small buildings, abandoned houses, etc.
    • Mapping out the operations of the quest system, to more effectively make it work in multiplayer.
    • The market system/trading system do not work with items of different quantities very well, a UI solution will need to be made for this.
    • Looking into the minimap, in terms of multiplayer issues and performance issues.
    • Characters do not appear when the game is reloaded, this must be investigated.
  • What problems are you currently facing?
    • None at the moment!
  • Pull Requests/Issues
Meeting Update:
  • A common issue with the market/trading UIs discussed in the meeting was the difficulty when dealing with multiple items at a time. This is very apparent in the trading system, where trades of only one item with one other item is allowed. This was brought up as a potential spot for collaboration with Stefania's UI-based project.
  • The rejection of trades in the trade system was cleaned up a bit this week, but there's still a few places for improvement that were brought up. Right now, the system doesn't account for the combined values of multiple items very well, leading to some confusions. As well, a trade only accepts if the prices of both items are about equal, meaning that the other character will reject a trade that is in their favour.
  • Discoverable places are planned to be added in this step of the project. One major part of these places is the GPS feature that is scheduled for the last month. An item would be added that could track the position of a nearby item, using the world generation data. In the meeting it was discussed that this feature is not really necessary in the current state of the project, and it would be better to spend time of different tasks instead.
  • One of these tasks that could use this time instead is a potential structuring/rewriting of the tasks system. Trying to convert this system into multiplayer has proven very difficult due to the way that server-side systems store task status. This should be changed to a more component-based approach, but this restructuring will take up a large chunk of time.
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 8: July 20th - July 26th
  • What have you achieved this week?
    • Applied review changes to earlier multiplayer PRs
    • Major restructuring to the tasks system, to include a PlayerQuestComponent that holds current quest status.
    • Added hidden chest generation. These chests spawn all over the game world, and hold useful items for the player.
  • What are you working on next week?
    • Investigating creating structure templates upon worldgen, to hopefully have a larger selection of discoverable places.
    • Add valuable items to the game such as jewelry items, for selling into the economy.
    • Investigate minimap operations to see where there are multiplayer issues and where performance can be improved.
    • Dealing with item quantity issues within marketplaces and trading
    • Investigating character loading issues when the game is restarted.
  • What problems are you currently facing?
    • Fixing the quest system has recently become a large timesink. Quests took up a majority of this week's work (mostly testing/finding issues), and it still does not operate as intended.
  • Pull Requests/Issues/Branches
Meeting Summary:
  • After a lot of time and effort, and after putting in almost two weeks into making it work, the trade system is still non-functional in it's current state. The original system architecture as a whole was just not intended for multiplayer, and every bug fix seemed to spring up more bugs. This week I restructured the system so the tasks are stored on component attached to each player rather than to systems, but even with this, the collection of items from multiple players are combined into one. This system will not be ready for the playtest, and as well, I'm going to be taking a week off from working on the tasks system to focus on other items.
  • The majority of the meeting was focused on restructuring the trello board for the remainder of the project:
    • The remaining tasks in the "In Progress" and "Month 3" lists were organized based on what can be completed, what will not be completed, and what requires more information.
      • Two tasks were designated as non-completes for two different reasons. The Addition of Pathfinding task was removed, since this will be addressed in agent-q1's project. The Prospectors GPS was also removed because of a discussion last week, where this task was deemed non-essential to improve the gameplay. The time spent here can be better spent on other features.
      • Two tasks were designated as tasks that require more information. Completion of Add Discoverable Places on World Generation requires an investigation into if Structure Templates can be generated on worldgen. If they can't within reasonable time constraints, than this task is a non-complete, but if they can be generated easily, then this task can certainly be completed. Task System Improvements as stated earlier has been a massive time sink over the last few weeks. This task may require too much work for the project time limits, but it still is very essential to the core gameplay. It would be very difficult to justify removing completely.
      • All other non-stretch tasks have been designated as completable. Two more tasks have been added to this catagory: Multiplayer Improvements and Marketplace/Trading Improvements. These tasks are expected to be complete before the end of the project.
    • There is a regular Terasology playtest this weekend where the features of Metal Renegades will be tested. It was discussed that smaller stability changes should be made before this test, such as minimap issues, character movement issues, and market/trade system issues.
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 9: July 27th - August 5th
  • What have you achieved this week?
    • Investigated how to generate structure templates on worldgen. There is currently no way to have the template generate precisely when the world is generated, but specific blocks can be tagged with components that will be replaced with the template when the player gets close to them (similarly to how hidden chests are tagged to be filled when the player approaches them)
    • Three different types of gemstones have been added to the game, which can be found in hidden chests and sold at the market for high prices.
    • An issue containing research about DynamicCities multiplayer minimap issues has been posted. In investigating this, I also found that the minimap doesn't update dynamically at all when on a client. Performance issues were also investigated, and the minimap doesn't seem to be a significant contributor.
    • Citizen move_to minimum distance was increased, which should avoid many issues with characters spinning in circles.
    • Modified hidden chest item filling so the chest is guaranteed to have at least one item.
    • Fixed some smaller UI issues in the trade system, such as using the same display names as the market.
    • Made issues in MetalRenegades and DynamicCities about nametags, specifically under what conditions in multiplayer that they are visible/invisible.
    • Prepared the game module for gameplay in the end-of-month playtest!
  • What are you working on next week?
    • The chest generation system defines item generation values inside the code itself. This will be given the same treatment as the market, where these values can be defined externally.
    • Work on swapping out chest position generation for discoverable structure template generation, to allow for larger discoverable structures instead of just chests.
    • Modifying character needs reduction rates to be more balanced (during the play test characters seemed to always be hungry, this will be adjusted)
    • Start on the final major new system of the project, the nighttime enemies system. This system will spawn dangerous enemies outside the city at night, to "encourage" players to stay in cities at night.
  • What problems are you currently facing?
    • I've been having significant issues with getting the game create an MR world consistently on my local branch. At this point this is only successful 50% of the time, so when testing features most of my time is spent closing and relaunching the game rather than actually testing the feature itself (this turns something simple like taking screenshots for issues into a much larger process)
  • Pull Requests/Issues/Branches
Meeting Summary
  • The topic of generating structure templates on worldgen was first discussed. My original idea for achieving this was similar to how hidden chests are currently filled. Places where templates should go would be marked by components, and then these components would be replaced by structures in real-time. ktksan came into the chat and brought up a better way to do this, by generating the structure templates fully when the world is created. This new solution will be used instead.
  • A few meetings ago it was discussed that having more valuable items in the game opens the door for some complex crafting functions. When the player gathers a bunch of valuable materials, it would be good to have a character at the blacksmith that could take these items and turn them into more powerful/more valuable items. In general, now since the market system works, it's a good idea to think about other characters that can be added to settlements to perform different functions (farmers, blacksmiths, mayors, etc.)
  • The issues surrounding nametags were expanded on in the meeting. It seemed like there was a system-wide issue with nametags: that nametags other than player name tags wouldn't show up after the game is restarted, or if a client leaves and rejoins. After looking into the way that nametag components are handled in the engine, we discovered that internally, nametag components are used to create a floating text component that actually contains the nametag information. Floating text components are not replicated from client to server at all, so looking into how these are created/allowing these to replicate may fix many nametag-related issues.
  • For the nighttime enemies system, the enemy models that will be used come from two different places. The gooey enemy from Terasology/MawGooey will be used, along with skeleton models from CombatSystem.
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 10: August 6th - August 12th
  • What have you achieved this week?
    • Modified the chest generation system to use configurations from external prefab files. This allows other modules to integrate with Metal Renegades and put items into the hidden chests.
    • Worldgen structure template generation now works for the discoverables generator!
    • The AI needs system now varies the needs values for each character, so characters will require these needs at different rates than every other character.
    • The AI needs system now also accepts external configuration for needs, so the values can be changed more easily, or in an external module if necessary.
    • The nighttime enemies system is complete, with mawGooey enemies spawning around characters that move outside the city at night. These enemies spawn around the player and will attack the player if they get too close. They get destroyed if the player kills them, the enemy moves into a settlement area, or the game turns to daytime. These enemies are also visible on the minimap much like how city citizens are visible.
    • Changed deer spawning values in WildAnimals for stability purposes.
  • What are you working on next week?
    • This week consisted of a few very large PRs, so next week will consist of a lot of review changes/adjustments to these larger systems.
    • The discoverables generator is operational but doesn't have any hidden chest buildings to use, so making those will also be done this week.
    • Some form of UI danger indication will be added to the player UI, to notify them if enemies can possibly spawn.
    • Returning to the issue of the tasks system, to try and get the system (or a suitable replacement) working in multiplayer!
  • What problems are you currently facing?
    • None at the moment!
  • Pull Requests/Issues/Branches
Meeting Summary:
  • The AI needs system changes made this week were made to use a prefab-based configuration. Unlike every other system so far that have been changed to allow prefab-based configurations, only one needs configuration can be used for each different need. Because of this, a priority value was included, where only the highest priority configuration would be used in the module. It was pointed out that this could be better managed with an override or delta prefab, so this will be investigated.
  • It was discussed that the current structure for AI needs configurations is not documented anywhere, this must be changed.
  • Enemies currently disappear when they enter a city area. It was suggested that this should be changed to the characters taking damage, or avoiding walking into the city altogether instead.
  • Enemies are currently spawned in the area directly around a player when they move outside a city. It was discussed that this should be swapped out for a spawning system that randomly spawns enemies in areas outside of cities. This way, the characters don't totally restrict nighttime travel and are a lighter threat.
  • I tried to add skeletons to the list of enemies that can be spawned at night, but the models caused too much performance loss with 10-20+ models at once (likely due to all the details in the different bones)
  • This is the last week of the project that tasks will be attempted, if the system doesn't work by tomorrow then the task as a whole will be moved to the outbox.
 
Last edited:

AndyTechGuy

Member
Contributor
GSOC/TSOC 2020
Week 11: August 13th - August 19th
Meeting Summary:
  • When enemy characters currently enter a city, they disappear from view. I attempted to replace that this week with a behavior that would make the enemies run away if they enter city boundaries. However, when using an action node to check if the enemy is inside city boundaries, the game throws a StackOverflowError when loading the behavior. This results from the action node using SettlementEntityManager.
  • Enemy spawn logic was changed to spawn characters across all loaded chunks outside of cities, instead of just directly around the player. This way, the enemies are easier to find and avoid for the player, leading to some combat potential.
  • The quest system changes task in the Trello board has been moved to the outbox, and I'll write an issue about ideas/current progress.
  • One review on MetalRenegades#92 said that usages of Region3i should be switched to a non-deprecated type. When attempting to switch to using Rect2i instead, the world generator throws out of bounds errors. This bug will be fixed this week.
  • A major character stability issue that I will fix this week is an error with FindNearbyPlayerSystem. The enemy characters don't seem to be scanning for player positions fast enough, so their movement is erratic. This can be fixed by adjusting the speed that character player info is updated.
 
Last edited:
Top