No announcement yet.

Reimagining of Greed [BluePrint]

  • Filter
  • Time
  • Show
Clear All
new posts

  • started a topic [PROTOTYPE] Reimagining of Greed [BluePrint]

    Reimagining of Greed [BluePrint]

    The following GameMode is in beta state, this means that it's feature-complete.
    Unintended behavior and glitches may still occur during play, but it should work as intended, most of the time.
    It has been heavilly optimized and has done away with most, if not all, the hacky/workaround methods.
    The code will still be always improved upon, and balance tweaks might happen from time to time, to ensure smooth gameplay.

    • The GameMode is played on CTF maps. Once launched, flag bases will be replaced by team conduits.
    • Scoring is done by capturing enemy skulls at your base's conduit.
    • Each skull contains color information about what team it belongs to.
    • Skulls have a lifetime of 60 seconds before they get automatically destroyed.
    • When players have picked up enemy skulls, skull-shaped particles will start orbiting around their player model. Players carrying many skulls can be easilly identified as high value targets.
    • When players get killed, they drop their skull and any other skulls that they might be carrying.
    • Any friendly skulls that are picked up, award points and get destroyed, effectivelly denying them from the enemy.

    ConduitDamage Mode:
    The game, by default, is played with ConduitDamage enabled. If you wish to disable it, please refer to the "Game Customization/Variable Explanations" section of this post. This mode affects the game in the following ways.
    • Conduits can receive damage, but are otherwise indestructible.
    • Conduits can only receive damage from enemy players.
    • When a conduit receives a set amount of damage, over a set amount of time. It can drop between a set amount of minimum and maximum skulls. (If not enough damage was done before the timer expires, it will reset)
    • The amount of dropped skulls are subtracted from the team's score. So it's to your best interest to also pay attention on your defence!
    • The skulls dropped by the conduit, can be picked up by friendly players and put back in. Attackers have to actually touch them, to be able to deny them.
    • If the GameMode is played with more than 2 teams, the skulls dropped by the conduit will be randomized. You never know what you might get, if you are lucky enough they might be skulls of another team that you can capture!

    Game Customization/Variable Explanations:
    You can customize the GameMode (to a degree) to fit your needs, even without any blueprint knowledge.
    • ConduitDamage (Boolean, Default=True): Controls whether the conduits can be damaged to drop skulls or not. "True" enables the damage mechanism, "False" disables it.
    • ConduitDamageAmount (Float, Default=100, Range >0): The amount of damage an enemy player will have to deal to the conduit, before it drops skulls.
    • ConduitDamageTimer (Float, Default=2.5, Range >0): The amount of time (in seconds) that an enemy player has to deal the ConduitDamageAmount in, before the conduit drops skulls. If the enemy player fails to deliver the damage in time, the accumulated damage will reset.
    • ConduitSkullDropMax (Integer, Default=3, Range >0): The maximum amount of skulls that the conduit can drop when damaged. (The number of skulls dropped is a result of a random value between the Max and the Min)
    • ConduitSkullDropMin (Integer, Default=5, Range >0): The minimum amount of skulls that the conduit can drop when damaged. (The number of skulls dropped is a result of a random value between the Max and the Min)

    To override any of the GameMode's variables listed above, all you have to do is append the corresponding variable name, along with the desired value, into the GameOptions string.
    Here is an example: ?GoalScore=50?TimeLimit=20?ConduitDamageAmount=120?ConduitDamageTimer=2.8
    Do note that any variables that have been set incorrectly (e.g. letters where you are supposed to enter a number), set out of their allowed range, or haven't be set at all; will be assigned to their default values. The algorythm has been designed to be case insensitive, so it doesn't matter which capitalization you use.

    Known Issues:
    • If the HUD is turned off via the "showhud" command, the UMG overlay will not be hidden. (Relevant discussion can be found here)
    • The skull-shaped particles are not displaying for players that have picked up enemy skulls. (Probably one of the recent builds must've broken the particle-system replication)

    Reporting Issues:
    To report any issues/bugs that you've found with the GameMode, post in this thread, after making sure of the following:
    • You are running the latest version of Unreal Tournament and the latest version of Greed.
    • You do not have any previous versions of Greed in your "\Documents\UnrealTournament\Saved\Paks\DownloadedPaks" folder. (As it can cause conflicts when installing newer versions of the GameMode)
    • You are not playing the GameMode with bots. (Bots are not supported. Their behavior cannot be controlled through blueprints and no logic has been coded for them yet, as a result, they will yield undesirable behavior)
    • You have to be able to reproduce the issue in a consistent manner, and also provide a detailed explanation on how you did it. (Please also include your GameOptions string, your mutators/configuration, and any logs that you might have)
    • You have read carefully the existing issues, on the first post, and the one you faced is not already listed in it.

    • Q: Help! I do not understand how to play.
      A: If you have questions on the gameplay mechanics, take a look at the "Objective/Rules" section of this post. A tutorial video which explains how to play, will come at some point.
    • Q: Can I play this with 4 teams?
      A: Yes and no. The GameMode can support any number of teams. However, the core game does not offer any skins, announcers or scoreboard/HUD resources for anything other than the Red and Blue teams.
    • Q: Can I play this with Instagib?
      A: Yes, Instagib is fully supported. All you have to do is include it in the mutator list.

    Roadmap for Upcoming Features and Optimizations:
    • Include primitive bot support, so bots can at least pickup and capture skulls. (The more skulls carried, the more the urgency to do so)

    Wail: Assisting with the debugging process, during the early playtests.
    vlad.serbanescu11: Being involved in tight collaboration with me, providing me with crucial fixes (in the earlier versions), latest advancements, and debugging assistance needed for this project.
    TimEh: Assisting in the debugging process.
    knepleyp, Frost: Assisting in locating and resolving game-specific crashes.
    frez: Providing the art for the GameMode badge that's used by the HUB UI.
    Zaccubus: Showcasing the GameMode during the 03/23/2016 UTea Forecast steam.

    Download and Cooking Instructions:
    You can grab the latest available blueprints/source from here.
    The archive also includes a test map, which I was using, to quickly test the game's logic.

    To cook it: Extract the above archive into your "\UnrealTournamentEditor\UnrealTournament\Content" folder. From there on out, you can:
    1. Open any of your maps and select "Greed" as your GameMode Override setting (located in World Settings), then proceed by hitting Share > Share This Level. This will bundle Greed inside your Map Package, and can be found under your "\Documents\UnrealTournament\Saved\Paks\MyContent" folder, once cooking completes.
    2. Open up a terminal, and then navigate to your "\UnrealTournamentEditor\Engine\Build\BatchFiles" folder, then issue the following command:
      RunUAT.bat makeUTDLC -DLCName=Greed -platform=Win64 -version=3525360
      This will produce a package, which will contain only the GameMode, and can be found under your "\UnrealTournamentEditor\UnrealTournament\Saved\StagedBuilds\Greed\WindowsNoEditor\UnrealTournament\Content\Paks" folder, once cooking completes.
      WARNING: Do note that if you go with this method, you will have to modify the -version argument to correspond to the network version of the currently available build.
      The paths and the commands might also differ, depending on your OS configuration and setup.

    A cooked version of the GameMode along with it's MD5 checksum, for those who can't or don't want to cook it, can be found here.

    Installation Instructions:
    • For single player usage:
      Place the cooked package under your "\Documents\UnrealTournament\Saved\Paks" folder, and then launch or restart your game. From there on out, you can:
      1. Start any CTF map from the game, with Greed as the selected GameMode. (This is faster, but will use the default GameMode configuration)
      2. Bring up your console and execute an open command.
        Here's an example (you can also squeeze in any of the GameMode customization variables here):
        open CTF-Face?Game=/Game/Greed/Greed.Greed_C?GoalScore=50?TimeLimit=20?MinPlayers=2?MaxPlayers=8?BotFill=8
    • For dedicated servers:
      Place the cooked package under your "\UnrealTournament\Content\Paks" dedicated server folder, and then edit your server execution line/script accordingly.
      Here's an example (your binary may differ, based on your server configuration and setup):
      UE4Server-Linux-Test UnrealTournament CTF-Face?Game=/Game/Greed/Greed.Greed_C?GoalScore=50?TimeLimit=20?MinPlayers=2?MaxPlayers=8?BotFill=0
      WARNING: Do note that the ability of the dedicated servers to transmit packages that do not contain maps, is unknown at this point of time. Therefore it's safe to say, that if you want to avoid any complications, the players which wish to join your server will need to have the package installed prior.
    • For hub servers:
      Place the cooked package under your "\UnrealTournament\Content\Paks" hub server folder, and then edit the corresponding files accordingly:

      Add the following lines in your Rules.ini
      	"uniqueTag": "Greed",
      	"categories": [ "TeamPlay" ],
      	"title": "Greed",
      	"tooltip": "A new take on Greed!",
      	"description": "GameMode created by FrostbyteGR.\n<UT.Hub.RulesText_Small>Report any issues on the forums!</>\n\n<UT.Hub.RulesText_Small>TimeLimit : %TimeLimit% Minutes</>\n<UT.Hub.RulesText_Small>GoalScore : %GoalScore% Skulls</>\n<UT.Hub.RulesText_Small>Maximum players : %MaxPlayers%</>",
      	"displayTexture": "Texture2D'/Game/Greed/GB_GD.GB_GD'",
      	"gameMode": "/Game/Greed/Greed.Greed_C",
      	"requiredPackages": [ "Greed-WindowsNoEditor" ],
      	"gameOptions": "?TimeLimit=20?GoalScore=50?MustBeReady=1",
      	"minPlayers": 2,
      	"maxPlayers": 10,
      	"bTeamGame": true,
      	"bCompetitiveMatch": false,
      	"mapPrefixes": [ "CTF" ],
      	"defaultMap": "/Game/RestrictedAssets/Maps/CTF-Face",
      	"customMapList": [
      	"optionFlags": 65535,
      	"bHideFromUI": false
      Add the following lines in your Game.ini
      	RedirectReferences=(PackageName="Greed-WindowsNoEditor", PackageURLProtocol="<URL_PROTOCOL>", PackageURL="<HTTP_PATH_TO_GREED_PACKAGE>", PackageChecksum="<GREED_PACKAGE_CHECKSUM>")
      NOTE: For proper redirecting/auto-download of the GameMode package from the hub to the clients, you need to:
      1. Replace <URL_PROTOCOL> with the value that your fileserver uses, https or http.
      2. Replace <HTTP_PATH_TO_GREED_PACKAGE> with the url that the Greed.pak will be downloaded from.
      3. Replace <GREED_PACKAGE_CHECKSUM> with the MD5 provided above, or generate your own MD5 checksum if you did the cooking yourself.

      NOTE: You can also use the "-run=UTGenerateRedirects" commandlet, to automatically generate the redirect references for you.
      NOTE: For further customization of the rulesets and hub configuration in general, please review this thread which was kindly provided by RZE and JoeWilcox.

    Version History/Information:
    10/28/2015: Initial version.
    10/31/2015: Version 1.1 Changelog.
    03/08/2016: Version 1.2 Changelog.
    06/02/2016: Version 1.3 Changelog.
    03/11/2017: Version 1.4 Changelog.
    07/22/2017: Version 1.5 Changelog.
    07/23/2017: Hotfix 1.5.1 Changelog.

    Any sort of footage, testing, suggestions, feedback are more than welcome!
    Last edited by FrostbyteGR; 07-23-2017, 08:02 AM.

  • replied
    Hotfix v1.5.1 Changelog:

    • The HUD Overlay is now displayed during Warm Up.
    • Left over skulls from Warm Up are now cleaned up when the match starts.

    Leave a comment:

  • replied
    Greed v1.5 Changelog:

    • The GameMode is now compatible with the 3525360 build.

    Warm Up:
    • Added support for the Warm Up game mechanic. The following subsystems have been affected (report bugs if you find any):
      • Skull depositing

    Last edited by FrostbyteGR; 07-22-2017, 06:57 PM.

    Leave a comment:

  • replied
    Greed v1.4 Changelog:

    • The GameMode is now compatible with 4.15-based builds.

    User Interface:
    • The HUD Overlay is being properly displayed again.
    • Improved the HUD Overlay visibility code.

    Leave a comment:

  • replied
    Greed v1.3 Changelog:

    • The GameMode is now compatible with 4.12-based builds.
    • Code improvements for better readability and compactness of the Blueprint.

    • Added attenuation settings to the sounds for the alarms, pickup and deposit of skulls, so they can no longer be heard across the map. Please give me your feedback on the current radius.

    Rushbase appears to be down at the moment, I will supply temporary download links from my HUB, until the situation gets addressed.
    Last edited by FrostbyteGR; 06-02-2016, 02:53 PM.

    Leave a comment:

  • replied
    In case you missed it, the GameMode has been showcased by Zaccubus during the UTea Forecast of the 03/23/2016.
    You can view the full VoD here.

    Many thanks to Zaccubus and to the participants of the stream, for taking the time to play and review it!
    PS: Excuse my bad english, as it's not my native language. Some presentation errors were made and my train of thought was lost many times in the process, as I was trying to play and explain at the same time.

    Leave a comment:

  • replied
    Similar, but not quite. There's a breakdown on the GameMode's rules on the first post.

    Leave a comment:

  • replied
    So this is basically Harvester gamemode from Q3TA? I have rarely had a chance to play it because it was quite unpopular for some reason. Keep up the good work, maybe you'll be able to revive it.

    Leave a comment:

  • replied
    New Version v1.2 Changelog:

    • The GameMode has now reached beta state.
    • The GameMode is now compatible with 4.11-based builds.
    • Added GameMode badge texture to be used by the HUB UI. (Credits to frez)

    GameMode Customization:
    • Made changes to the allowed range of some customization variables:
      • ConduitDamageAmount, ConduitDamageTimer, ConduitSkullDropMax and ConduitSkullDropMin are no longer allowed to be zero or less.

    • Slightly optimized the performance and bandwidth of the GameMode by improving a few functions.
    • Dropped skulls now have 60 seconds of lifetime until they get automatically destroyed, to avoid performance regression and cluttering.

    • Kills will no longer award any personal score to the players, in order to encourage them to play the objective. (Suiciding will still subtract a point from the player's personal score, to prevent exploitation)
    • Players capturing enemy skulls to their team's conduit, will now be awarded 2 points worth of personal score, per skull.
    • Players denying friendly skulls by picking them up, will now be awarded 1 point worth of personal score, per skull.

    • The GameMode now properly handles the Overtime and EndGame states, and will always select the correct winner.
    • The EndGame code prioritizes the last scorer, if there is a tie in score between teammates, when selecting the match winner.

    • The particle system which indicates how many skulls a player is carrying, is no longer visible to the owner, so the player's view is no longer obstructed by it.

    Download links will be available as soon as I resolve my technical difficulties uploading stuff into rushbase.
    EDIT: I added temporary download links from my HUB, until the situation with rushbase can get resolved.
    Last edited by FrostbyteGR; 03-08-2016, 05:35 PM.

    Leave a comment:

  • replied
    New Version v1.1 Changelog:
    • Fixed the particle system to update properly.

    Leave a comment:

  • replied
    Relics mutator for instance (or RelicMadness or how the latests versions are called). Just an example for a mutator which uses PreventDeath. It's just a matter to support it .

    PS: That's why a mutator and a gametype . The gamemode will have some features the mutater wouldn't have (or as separate mutator). I like the game mode that was a big reason why I created it besides the reason that I wanted a non official, trivial and non existing gamemode to work on Blueprint support (through pull requests).
    Last edited by RattleSN4K3; 10-29-2015, 04:24 PM.

    Leave a comment:

  • replied
    Originally posted by RattleSN4K3 View Post
    The are several reasons why mutators (of any type, custom or official) aren't supported. The main reason is that you expect exactly one case. For instance, the damage check which includes scoring. You cannot assume that "ReceiveAnyDamage" is the final damage and will kill the player if the damage is greater or equal than the health. A mutator can prevent death. Also, there isn't a need to replace the character class (which also limits mutator support in some way). There are several other reasons.

    PS: You guessed it -
    True, but there is really no sense in playing this with a mutator that overrides a basic mechanic such as death.
    There are always things that we can and can't do. Not every GameMode will be compatible with every mutator out there. At least for me, it makes sense.

    PS: I was originally planning a third Greed mode that was exactly like Kill Confirmed, but I decided to ditch it. I felt that it didn't differentiate itself from TDM all that much.

    Leave a comment:

  • replied
    The are several reasons why mutators (of any type, custom or official) aren't supported. The main reason is that you expect exactly one case. For instance, the damage check which includes scoring. You cannot assume that "ReceiveAnyDamage" is the final damage and will kill the player if the damage is greater or equal than the health. A mutator can prevent death. Also, there isn't a need to replace the character class (which also limits mutator support in some way). There are several other reasons.

    PS: You guessed it -

    Leave a comment:

  • replied
    Originally posted by RattleSN4K3 View Post
    I just meant to be official. If C++ or Blueprint is actually irrelevant (but I think the devs prefer C++ for obvious reasons).
    I'm not sure if something which originally belonged to an expansion pack (and we usually know that most of CBPs were community made back in 2k4), can be classified as an "official gametype". And all the more when we saw in the past, that Epic's intentions were to have DM, TDM, CTF and Duel and some slight variations of those, as the basic core-gameplay. After that initial stance, the only thing that was ever heard about other gamemodes, was for Domination, Assault, BR and Invasion, and basicly what they said was "if you want it, code it yourself, because we don't have time". Maybe there wasn't a mention of Greed because it's official integration for UT3 was something that was pretty recent, compared to all those other gamemodes which the majority of them have been around since UT99.

    Originally posted by RattleSN4K3 View Post
    If such official gametype is in the core game, many mod authors don't have to rewrite code. Also, mutators for specific gametypes (such as Greed or Freezetag) can only be done these are official.
    The rewriting of code is always subjective on what you want to do with the mutator. Because if you want to alter a behavior which is part of the gamemode, you will be rewriting it.
    I'm not sure where you are seeing that mutators are not compatible with my gamemodes. Lowgrav, instagib and so on, work just fine with it. If we are speaking for custom mutators, the problem is that one of the crashes that prevented the gamemode from being playable in the game (although it worked fine in the editor), was caused by the constructor of my pawn making a call to the parent function.

    Originally posted by RattleSN4K3 View Post
    Extending Blueprint assets would also cook the original gamemode assets. Versioning won't be possible. That's also the case for maps which do include the cooked gamemode/mutator. Once cooked with a gametype/mutator and by updating the original gamemode/mutator, the map has to be updated has well only to "include" the used gamemode.
    Yes, but that's a problem that concerns Assault primarily. The assets that I'm using, most of the cases have dynamic placement and coloring. They don't require new maps to be made, they adapt to maps that are meant for other gamemodes. It'll take drastical changes, or terrible map design in order to break it.

    Originally posted by RattleSN4K3 View Post
    Also, source code versioning is more suited for text based programming ^^.
    I agree, pretty much, here.

    Originally posted by RattleSN4K3 View Post
    I know. But limited. And also way slower to develop complex non-content gamemodes/mutators.
    Indeed they are limited and hacky. And when you raise complexity (like with FreezeTag) it can take months to even reach a playable state (most of the time being, waiting for features that you need, to get implemented).
    But that's the approach that Epic wants too, I'm afraid. They are concerned with security risks, so you can't just simply write C++, you will just receive zero testing/playtime.
    Basicly, what they ideally want is what happened with Domination. TimEh started with a blueprint version, Epic saw that it was playing well, and they asked him to convert it into C++ so it can be integrated into the core. They want gamemodes to be prototyped in blueprint and then tested from a gameplay perspective. Then if they work well, and they decide that "hey we want this into the core game", they will bother looking for a C++ version of them.
    At least one thing that I give to the blueprints, is that they are hella easy.

    Originally posted by RattleSN4K3 View Post
    There is a reason why Bot support is not existing in Blueprint .
    Because Mysterial said it's impractical and non-efficient. But I believe that they could at least make some simple core functions in C++, that we could control over blueprint. I mean come on, how hard can it be to turn the AI on/off?
    Another solution is what we discussed in the past, having a C++ plugin work in tandem with the blueprint. Since the AI controller never gets transmitted to the clients, we have no issues, it's a win-win workaround.

    Originally posted by RattleSN4K3 View Post
    You'll see. Just a teaser. It will have Bot support, supports all existing gamemodes (only officials are tested), comes as gametype as well. Similar to Greed but without bases (planning to work on a algorithm for symmetrical/asymmetrical CTF maps). Started on 13th October with the main intention to see how to improve Blueprints.
    Hmm, I smell kill confirmed.

    Originally posted by RattleSN4K3 View Post
    I just checked your code, there are several gamemode concepts you could use instead. Also, there are missing checks to support mutators etc.. The code could use a bit of improvment . This is out of the scope for this release thread.
    I'm not entirelly sure of what I could use, and what I'm missing. So, by all means, feel free to contact me.
    I'm usually on IRC most of the time, and you can also have my IM information, if you'd like. I believe it's not only myself, but Vlad and Wail can also benefit from any additional information you can offer.

    Originally posted by Megasporwic View Post
    FrostbyteGR this is great news! Finally we have Greed! Thank you so much! I just loaded this on the Mega--Chicago Hub under the MegaMode Tab. It took all of five minutes! Feel free if anyone wants to try it! I Played two matches against the bots..and it was fun. I was a bit lost at first til I realized I had to cap skulls at my own base "guess I should have read the instructions first " I will be testing this more tomorrow! Thank you again for your hard work and dedication to this game!
    Much appreciated that you went through the trouble to host it on your hub.
    And yeah, you have to capture them back at your own base. After all, it's not a 1:1 copy of Greed, it's a reimagination of it.

    Originally posted by RattleSN4K3 View Post
    Because of that, I would suggest to rename it (to "Harvest" ) or change the game mechanic.

    Greed is generally encouraging players to attack while this iteration would result into a camp fest. Once a team scored, they can defend their conduit/base. Every incoming player (while they trying to attack the conduit or kill player) will either fail and getting killed, resulting into another score for that camping team, or being succesful in killing the enemy. But after killing such camping players, they still have to manage to get from the enemy base to their own base while not being killed by the respawning enemies or the ones who are still camping.

    I've also justed tested/played it (before I was only checking the source and assets). There are issues with it by playing it offline:
    - No visible skulls
    - Particle effects
    - No conduit base

    Most of the functions you are using are only replicated and not working offline. As said before, the code could need some re-work. Let me know if you need some guidance or help.
    True, original Greed had you score at the enemy conduit. And it would also give you AMP each 10 skulls you collected. (which I think is a bad idea, because you're just making the strong guy even stronger)
    The thing is, while my iteration can promote camping as you said, the other way around might promote spawnkilling and baserape, which is something that I don't particularly want either. At least with this iteration, and the ConduitDamage toggle, camping can backfire. A well organized attack can wipe out the entire defence and leave the conduit exposed to damage. I could also introduce respawn delay, but I'm not sure if that would alleviate or worsen the problem at hand.

    The offline scenario that you mentioned, can happen on listen servers and is only exclusive to the host. The conduits and bases are there and they are fully functional, the problem is that the colors depend on replication, and therefore everything is colored black. If you set it not to replicate, then you will have colors when you do a listen server, but you won't have colors in any other scenario. I would indeed like some advice on how to tackle this, because I haven't faced such an issue before with FreezeTag.

    About the particle system, it's basicly driven by a RepNotify variable. Everytime your SkullInventory fluctuates, I have an accumulator (which is fed to the particle system's spawn module) that calculates how many skulls you are carrying in total, and for some reason this updates correctly half of the time.
    In my previous iteration I would just have an integer variable that would represent how many skulls a player is carrying (that's what I use in Avarice) and that value would be fed stright to the particle system's spawn module. However I didn't like that, because whenever I had to spawn enemy skulls, I would have to do foreach loops to find the enemy team index and color information, and it wouldn't support 4+ teams. I'm not sure why it doesn't update properly, but I will think of a workaround to make it consistent.
    Last edited by FrostbyteGR; 10-29-2015, 01:41 PM.

    Leave a comment:

  • replied
    Now there's a flip... usually my projects works fine offline. And doesn't replicate online LOL

    Leave a comment: