The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall

User:00zX/GameDex Framework (UT3)

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

GameDex: Framework (UT3)

Status: ReAlpha 8 (testing)

Repository: GameDex @ GitHub --00zX 09:07, 24 April 2010 (UTC)

Download Alpha 4 Packaged: GameDex_AllGDP_DodgyAlpha_150909.rar
Download Alpha 4 Source: UT-GameDex-Src-150909.rar

Description

  • Not being a fan of the one class/mutator does everything approach, I like to keep things modular and interconnecting, I noticed inherent problems with Unreal Engines mutator system (as you all would have at one point or another) so I went about starting to hook through it and creating a new system which could actually replace the system especially now we have the UDK at our disposal.
    • The initial ideas and concepts from this project came about while I was working on the Newtators mutator pack and Attrition gametype, eventually these projects and some of the major functionality was rolled into Gamedex as it provided a more modular approach and allowed me to reuse alot of said functionality easier.
  • Since the new system is totally reliant on Object's I suspect that its better on system performance and will be dealt with by the internal garbage collection system. These objects can be initialized at any time and for any number of actors, for instance since all damage is hooked through one function one can prune the unwanted actors rather than searching for the specific actors you want to apply a rule to. The rules are meant to be simple as in the vampire mutator, which gives players a portion of the damage they deal back in health. Any number of players could be affected by this, for a duration or globally for the entire match. Mutators dont really allow this kind of control, they can but I believe the front end for interfacing with this system would be much more intuitive.
  • This is where I hit my first major hurdle as I wanted to provide a UI similar to 2k4's for adjusting mutator settings, maybe even extending that to allow server admins to interface with the modules on the fly whilst connected to their server.
Aspect-Oriented Programming
Cross-Cutting Concern
Modularity
Concern
Component-Based Software Engineering
Event Driven Architecture

Future Directions

basically it abstracts game event flow out of actor classes and into objects
the idea is to be able to build a gametype solely out of subobjects
ofcoarse theres bound to be incompatibilities with modules but it could allow for more compatibility then mutators/gamerules currently offer
as you can hook through pawn/controller layer as well as gameinfo
thats where the udk version will go
well it works, theres no issues with networking at the moment hey :P
all functions are hooked through actors
oh you have no idea, its not just compilicated because it reroutes the flow of events but theres a whole new stacking system (no more linked list) which will be harder to follow then the previous method
theres some pretty tricky mathematics in the core classes and database work like factory/item replacement
thats just in what Ive got in the core, thats none of the more complex things in the pack after the base text package
whats sweet though is say, I'll let alittle info out, is that if I were to use my random factory in my own project (one where I had full provider sets and auto generation for new classes) its very powerful
you can use it for something like parked cars in GTA for eg where one time there will be a parked car there thats green, next time its a purple hummer, next time theres nothin there
well Im getting to the next lot of tests now, Im pretty happy with how solid it is atm and its been compiling fine for sometime
Ive actually dropped the filesize rather dramatically
see what I can do with this other method, whilst I cant save objects I can save a group of classes, create objects and pull in their defaults for modification. Maybe add those to a dynamic array of each type.
nope cant do that, grrr unrealscript why u have to be so limiting to my thought process
i need a better thought bubble :P ((foreach variable in class{ find variable type; add variable type to array;} return true;))
~added some dribble, updated core modules, starting to look like something, nsis script and installer packaging almost final, test suite and beta testing on the way


Core Modules

Dummy Module
This is to display a message for assign new GameRules modules.
Damage Conversion
This modifies damages passed to it by distance and percentages.
Global Damage
This modifies damage received or taken globally for vehicles, players, bots, etc.
Info Attachments
Allows you to add Info controls for actor properties.
Replacer
Item Replacer
This replaces an Item (weapon, vehicle, health) with any other Item, this allows per map or global settings.
Factory Replacer
This replaces factories with any other factory, this allows per map or global settings.
Remover
Will remove any navigation point/s of class from a map.
GameRules Group
This allows you to store user preset groups of UT_MDB_GameRules. (but not user options for those objects)


Naming Convention

The over all name for the project Gamedex was a play on words, being part nod to UnCodex and extension from my Noir Highlighter theme code named Redex, which inturn was inspired by Epic/DE's use of Redux in UT2k4.
Basically I see it as a 3rd full revision, with Newtators and Attrition being the first two. Upon closer inspection you'll see it says 'Gamed-ex' :)
It actually took me awhile to settle on a naming convention for these packages and classes.
Eventually I settled on appending UT_ as a prefix to designate that it was a modification for UT3.
The MDB is just an acronym to set the project apart incase I ever have other projects where I have similar named classes.
The beauty of using an acronym for projects is you can have multiple versions/branches of the same project on the same tree without conflicting class names.
Not only that but you can also develop classes and diff/merge the results based on the requirements for such projects.
As in Epic's base source code all classes have fixed names, so while you might be using 1 version of GameRules if that class changes you might get errors which cascade.
With this system you can work from one class say MDB as in the example, yet develop another which we'll call MDA all while keepin on the same class tree.
The UT_GDP designates any package which requires UT_GameDex and UT_MDB.


Project Package Tree

UT_MDB- This package contains buffers (empty classes to keep the tree clean) and classes which extend UT3's for things like bNoDelete=true spawning.
\- UT_GameDex - Main package containing all the base functionality classes.
   +- UT_GDP_Newtators - Is one of my mutator packages.
   \- UT_GDP_Mutatoes


Project Class Tree


Initial Prototypes

Newtators (Mutator pack)

Download: Newtators-v1.9e

Description: Well this started out as just a way for me to make some stuff that I would have liked in UT3 such as a few remakes of Epic's classic muts included across other UT games, acouple were taken from options also. It grew into something much larger, the idea has always been to keep the pack as small and tight as I can providing quality mutators with compatibility between them all.I ended up adding a few customs things after I got done with a few of the remakes and things evolved from there, alot of stock assets have been reused and remixed to create some extended gameplay.

Mutators:

Agile - Adds dodge-jump, wall-dodge-jump and removes the delay on jumps, dodges or jumps with smaller falls.
Bloodlust - Replaces the UDamage with a Red Vampyric version which allows you to suck health from damaged enemies. You are not allowed to pickup health while using this powerup but you can get up to 199 from sucking enemies health.
Booster - Replaces the Berserk Powerup with a new Booster Powerup. It gives the player health every 10 seconds, it raises the health cap to 199/299 and allows you to pickup health to reach the cap quicker. Once it has depleted your health will slowly drip back to normal levels
Dual Enforcers - Gives you dual enforcers on spawn.
Energy Leech - Leeches a percentage of the Shields/Armour from damaged players or vehicles and gives it back to you. (UI)
Extra Self Damage - Players take more damage from their own shots.
Fast Weapon Switch - Weapons switch faster.
Hardcore - Like UT's Harcore option this raises all damages to 125% of their original.
Hoarding - Lets you choose which items players can pickup and which they cant when they already have the maximum. (UI)
No Double Jump - Removes double jumping and adds a single higher jump, wall dodging is still enabled, also allows you to walk so you dont activate the jump boots when single jumping much like UT.
No Health Pickups - Removes all health pickups from the game.
No Super Weapons - Removes all super weapons from the game.
Quad-Jump Boots - Spawns new jump boot pickups which gives the user limit charges to perform quad jumps. This allows you to do many jump combinations like wall-dodge-double-jumps.
Speed Boots - Spawns speed boot pickups instead of jump boots. When picked up these boots increase the players speed dramatically for 30 seconds.
Strong Vehicles - Makes all vehicles stronger vs most damage types. Vehicles are still similarly damaged from crashes and falls.
SuperBots - Will make Bots deal more damage to Human players.
Translocator - Will add the Translocator to Deathmatch or Team Deathmatch.
Vampire - A percentage of damage done to enemies will be given back to you in health. This health is shown on the screen so you know how much you have received. This also allows the option for vehicles to take a percentage of damage from other vehicles. (UI)
Vehicle Replacer - Allows you to choose which vehicles to replace and with what. It also has an option for per map settings which is accessible from the config files. (UI)
Vehicle Team Swap - Allows you to set Red/Blue to use Necris/Axon vehicles regardless of the map defaults. It also has an option for per map settings which is accessible from the config files. (UI)

Attrition (Gametype)

Download: Attrition-v0.5pb.rar

Description: The idea behind this gametype was a war of attrition so everything featured is geared towards that. To win though you have to make a kill with every weapon once, you start with all weapons and they are removed from your inventory as you make a kill with them. Suicides will return a weapon back to your inventory unless it is already full. There is a catch, you have unlimited ammo and all pickups are removed except, Jumpboots, Vials, Armour, Shields and the Keg.

In this gametype frags dont really matter a great deal, except they are a way to get rid of your weapons!

This gametype is best suited for lower player counts, around the 2-4 range is really good but anywhere between 2-8 should make for good matches as it really does depend on the size of the map and how many rounds you want to play.

Features:

Health/Armour Degen - after these are picked up they start to wear in, then over time they wear out and break down. Wear only occurs over 100 health and always on armour.
Round Based Play - at the moment it only supports winning the match by getting to the rounds won, so if you win 3 rounds, in any order first, you are the winner. More victory conditions are on their way though, like playing out an amount of rounds no matter what and the player with the most wins at the end is the winner.
Anti-Camper - This was put in because of the unlimited ammo, keeps people moving and makes the matches faster especially 1 on 1 matches. Since there is no time limit this was almost a requirement.
Tweaked Music - To give more of an action feel the music was tweeked so it ramps up alot more.
Tweaked HUD - Alot of the excess text was removed from the hud as well as tweaking to make it fit with the gametype. I will be updating this so people can customize alittle more and reallow acouple of the default options.