Code Monkey home page Code Monkey logo

generalsgamepatch's Introduction

Super Aurora - Generals Game Patch

This project aims to fix and improve the original video game title "Command and Conquer Generals: Zero Hour" from Electronic Arts (EA).

An original copy of the game title with version 1.04 is required to use this Product. It does not function as a standalone Product.

Note: EA has not endorsed and does not support this product.

Core objectives

  • Fix game crashes, exploits, bugs and performance issues
  • Fix major gameplay, visual and operability issues
  • Stay true to the original content, design and art direction of Generals Zero Hour

Additional objectives

  • Build new tools to simplify access and use of Mods, Addons and other optional game content
  • Retain best compatibility and accessibility to original Game version(s), Mods, Addons and Custom Maps
  • Improve Game AI
  • Improve Menu operability and visuals
  • Improve Control Bar operability and visuals
  • Fix and improve models, textures and audio
  • Fix and improve Official Maps
  • Add new Language(s)

Change Logs

Version 1.0 (work in progress)

Community Surveys

External Discussions

Issues & Tasks

How we approach core objectives

In our first survey we asked the community what they think about addressing bugs that affect gameplay: More than 90% of players want bugs to be fixed. Based on this result and also our discussions and experiences in the developer team, we decided to tackle changes and fixes with the following approach:

  • Changes are created and tested in isolated development branches. If a change has severe controversial, but potentially positive effects on gameplay, then it will be reviewed and tweaked before it goes into the main branch.
  • Changes are merged into the main development branch, so they can be tested in a combined setting. No changes are cemented: Tests, reviews and tweaks may be necessary to adjust changes further to fit them together well. If a change causes negative consequences that cannot be tweaked in a satisfying way, then it may be reverted entirely to the original state.
  • Changes require input from players for accurate evaluation. Ideally changes are looked at in test environments and real matches to gather accurate data and impressions. It is worthwhile to know and consider which other controversial changes exist within the same game setting, as they can influence each other.
  • Changes may be subject to a matter of preference that require the community to give input on. In such cases we will include related questions in new surveys and evaluate and apply the results accordingly.

CONTRIBUTE

How to contribute

LICENSE

GPL v3 License

Electronic Arts & The Super Hacker Terms

DONATE

Donation info page

generalsgamepatch's People

Contributors

alanblack166 avatar commy2 avatar generalcamo avatar jundiyy avatar mavrogada2 avatar mtking4 avatar stubbjax avatar xamorish avatar xezon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

generalsgamepatch's Issues

Menu improvements master topic

We need to get an overview of what we can and want to change in the game menus. There is a lot of room for improvements, because the original game menus are not well polished.

Potential action items:

  • Fix ui element position errors
  • Reorganize ui element positions
  • Remove obsolete ui elements
  • Add hidden ui elements (for example AA setting in Options Menu, player list in LAN Lobby)
  • Add text elements to help explain functionality, such as "Alternative Mouse Setup" in Options
  • Improve textures (for example Zero Hour logo looks bad, score screen does not show accurate faction icons)
  • Improve functionality (for example increase list box sizes and limits)

I suggest to take a look at all menu windows and note down all high level action items that become apparent.
We can also look at various other Mods to get inspiration for potential improvements.
We can also check if there is a Mod with menu changes that is suitable to use as a starting point.

Implement simple patch loader in GenTool

Implement simple patch loader in GenTool. It must be generic and possible to configure it externally, where mod names and associated .big files can be defined. Then in GenTool menu patch entries can be selected, and loaded by pressing ENTER button. Game will close, enable mod, and restart.

Original version option is always available, regardless of configuration, but may not work correctly, IF configuration does not specify other installed mods correctly.

Decide whether or not Patch104p will always take priority over Original Patch, as to where a user, if just using regular generals.exe and not any special boot launcher (such as GeneralsProxyLaucher), must select Original Patch in GenTool menu and auto-restart game once to run it.

There may need to be an option to set no Mod preference, if an external boot launcher needs to be supported.

In any case, Original version must always remain accessible for user when using GenTool natively.

Fix USA Sentry Drone attack issues

When ordering one or more Sentry Drones to attack an enemy unit, they often just don't attack at all. Or move straight to the enemy unit without firing at the first possible chance.

Aurora Alpha Bomber uses incorrect cameo (or model)

The current cameo for the Alpha Aurora Bomber (SAFulArAurora and SAFulArAurora_L) is the cameo that was intended for the Hypersonic Aurora bomber. It should be using (SAHypAurora_L and SAHypAurora) instead.

This was a change introduced in 1.03, and may have been accidentally flipped by EA. If this is determined to be the case, the model should be changed from AVAuroraSW to AVAuroraAG.

Relevant code can be reviewed in SuperWeaponGeneral.ini, starting from line 1420.

GLA Worker may still walk to supplies or supply center after given an order to build a structure

GLA Worker may still walk to supplies or supply center after given an order to build a structure.

When you put a rally point in a GLA supply center and produce a worker in it, then try to build a building with this worker, then it just puts the scaffold and runs to the nearest resources (if there are no resources, he runs to the supply center). And this scaffold is considered "occupied" and can not be completed by other workers.

Maps improvements master topic

New patch is the only opportunity ever to touch any of the official Multiplayer maps. Replays of this patch will not be compatible with Replays from original version 1.04, regardless of what happens to Official Maps.

What could be fixed and improved in Maps?

  • Fix lightning, shadow and decal color issues
  • Fix water issues
  • Fix poorly placed or sized impassable areas
  • Remove holes in impassable areas
  • Flatten areas around supplies that cannot be properly built on otherwise
  • Fix civilian buildings that cannot be garrisoned properly
  • Fix garrisoned buildings that cannot be properly attacked out of
  • Fix garrisoned buildings that cannot be properly attacked
  • Fix path finding issues where units get stuck or drives poorly
  • Fix path finding issues where paths lead through impassable areas
  • Fix uni-directional way points (see #272)
  • Fix any other AI related issues that require attention in map (see #211)
  • Decrease object counts to help fix low performance maps
  • Fix unpleasant audio issues, for example crackling wind noise
  • Fix object placement errors, such as intersecting or floating object
  • Fix terrain paint errors, such as misplaced patches or non-blended borders
  • Normalize oil derrick rotations to show the flag on the front
  • Fix imbalanced player starting positions and supply docks (Multiplayer only)

NProject also touches maps and fixes multiple bugs in them. For example in Twilight Flame it fixes the AI path issue that lagged the game significantly. We need to figure out what we want to do. Some very popular maps like Defcon 6 will need to be handled with extra care, because any changes will have significant impact. On the other side there are also maps which are almost never played. Such maps could be treated more generously. In any case, we would need to come up with change rules, so that maps are processed consistently. Also all changes would need to be documented (changes can be compounded).

I would assume that over the years many creators have touched the original maps for fixes and improvements, so there might already be versions ready for us to pick up.

Multiplayer Map changes would need to become a core requirement of the game patch. It is not possible to distribute this as optional content. However, Singleplayer maps can be optional, because they are not relevant for Multiplayer compatibility. The patch size would increase as following (measured ZIP compression):

All Multiplayer maps ~13.5 MB
All Campaign maps ~8.5 MB
All Challenge maps ~2.5 MB

Map task list:
https://github.com/xezon/GeneralsGamePatch/blob/main/Patch104pZH/Design/Tasks/map_tasks.txt

Client camera can follow units into the fog

Using CTRL+ALT+SHIFT+T shortcut in game while selecting a single unit, will lock camera onto this unit and follow it. It will keep following it regardless of the Shroud/Fog. This is not good, because it can be abused to see where Air planes return and land. This should be a simple fix by simply stopping the unit follow as soon as its visibility state changes.

New Demo_SuperweaponRebelAmbush setup appears to be incomplete

New Demo_SuperweaponRebelAmbush setup appears to be incomplete. See comments added in INI code below.

  Command = PURCHASE_SCIENCE
  Science = SCIENCE_RebelAmbush1 ; Should this not be Demo_SCIENCE_RebelAmbush1 ???
  ButtonImage = SSGLAAmbush
  ButtonBorderType = UPGRADE
End

CommandButton Demo_Command_PurchaseScienceRebelAmbush2
  Command = PURCHASE_SCIENCE
  Science = SCIENCE_RebelAmbush2 ; Should this not be Demo_SCIENCE_RebelAmbush2 ???
  ButtonImage = SSGLAAmbush2
  ButtonBorderType = UPGRADE
End

CommandButton Demo_Command_PurchaseScienceRebelAmbush3
  Command = PURCHASE_SCIENCE
  Science = SCIENCE_RebelAmbush3 ; Should this not be Demo_SCIENCE_RebelAmbush3 ???
  ButtonImage = SSGLAAmbush3
  ButtonBorderType = UPGRADE
End

CommandButton Demo_Command_Ambush
  Command = SPECIAL_POWER
  SpecialPower = SuperweaponRebelAmbush ; Should this not be Demo_SuperweaponRebelAmbush ???
  Options = NEED_SPECIAL_POWER_SCIENCE NEED_TARGET_POS CONTEXTMODE_COMMAND
  Science = SCIENCE_RebelAmbush1 SCIENCE_RebelAmbush2 SCIENCE_RebelAmbush3 ; Should this not be Demo_SCIENCE_RebelAmbush1 Demo_SCIENCE_RebelAmbush2 Demo_SCIENCE_RebelAmbush3 ???
  TextLabel = CONTROLBAR:Ambush
  ButtonImage = SSGLAAmbush
  ButtonBorderType = ACTION
  DescriptLabel = CONTROLBAR:Chem_TooltipFireRebelAmbush
  RadiusCursorType = AMBUSH
  InvalidCursorName = GenericInvalid
End

CommandButton Demo_Command_AmbushFromShortcut
  Command = SPECIAL_POWER_FROM_SHORTCUT
  SpecialPower = SuperweaponRebelAmbush ; Should this not be Demo_SuperweaponRebelAmbush ???
  Options = NEED_SPECIAL_POWER_SCIENCE NEED_TARGET_POS CONTEXTMODE_COMMAND
  Science = SCIENCE_RebelAmbush1 SCIENCE_RebelAmbush2 SCIENCE_RebelAmbush3 ; Should this not be Demo_SCIENCE_RebelAmbush1 Demo_SCIENCE_RebelAmbush2 Demo_SCIENCE_RebelAmbush3 ???
  TextLabel = GUI:SuperweaponRebelAmbush
  ButtonImage = SSGLAAmbush
  ;ButtonBorderType = ACTION
  DescriptLabel = CONTROLBAR:Chem_TooltipFireRebelAmbush
  RadiusCursorType = AMBUSH
  InvalidCursorName = GenericInvalid
End```

Add new meaningful headers to HeaderTemplate.ini for all languages

Add new meaningful headers to HeaderTemplate.ini for all languages.

New Header(s) for SCROLLLISTBOX elements should be created, because these elements break if font is scaled too large for resolutions higher than 1920x1080.

See ControlBarPro addon for reference.

Implement feature to properly handle incompatible clients in Network (and Online) match rooms

Currently players in Network room cannot see whether or not other players are match compatible. If not all clients are compatible, then runtime mismatch can occur.

We need a feature to block game from starting when at least one peer client is not compatible with host client. Perhaps incompatible peers should be unable to join game room. On the other hand perhaps it is ok if all players can join any game room, and just show incompatible Icon/Hash/Version next to player name. This way players can still chat and communicate organizational matters at their own discretion. Originally, incompatible players are blocked from match entry in GameSpy Lobby, but not in Network lobby.

Technically, game needs to generate game hash from all relevant files - Code and Data. Game hash is expected to be identical across all clients using the same kind of game version install. (Caution: Different executable for different Operating System). Using a different Mod or critically modified INI, W3D will change hash. Hash can then be compared with peers.

Hash itself is not easily human readable. Generally, single hash can only be associated with local game version. To recognize peer hashes as game version names, we need database of hash to names relations. This perhaps needs Patch Loader support. Patch Loader can provide list of known mods to game process (Thyme). And game client can then recognize different remote hashes with that list. Or remote clients send sufficient metadata alongside client hash, then Patch Loader integration is not required.

GenTool: Implement game hash in Network Player Table to allow players to see whether or not other players are compatible for a given match session. If players's game hashes are not matching, then match session eventually will mismatch after match start sooner or later.

We need GenTool player table for network room and encode information about game hash. Then in turn we can read the game hash of other GenTool players and present it to user. For that we need to copy the String class implementation and everything related to that from Thyme to GenTool, because it would be a definite requirement to be able to allocate Game Strings.

The result should be ok enough to at least be able to see whether or not all players are compatible before pressing the START GAME button - IF these players use GenTool. So Game Host could kick all non compatible players which is very suitable for a Network like Hamachi or Radmin. In case of GameRanger, players would need to quit the game and wait for new players to join, which would be a bit more hassle, but there is nothing else we can do. Other mods would benefit from this implementation too in turn if kept generic.

USA Supply Drop Zone Cargo Planes are attackable

Supply Drop Zone Cargo Planes are attackable. This is annoying in late game where many cargo planes fly to enemy base and trigger radar warnings and sound messages. NProject addresses this by making planes not attackable. This has implications on gameplay however, because plane can no longer be shot down and also units no longer become occupied with these practice targets which weakens USA.

A more sensible approach would be to simply disable attack warnings for these planes, if possible.

Anthrax Bomb and Toxin Tractor Contamination can be cleared by enemy Poison and Radiation Clouds

When the enemy drops an Anthrax bomb, force fire the ground near with a Toxin Shell Scorpion or Nuke Battlemaster to delete it.

Proposal 1

Stacked poison no longer disappears.

Proposal 2

Stacked poison only disappears for ally attacks.

Proposal 3

Anthrax bomb spawns multiple puddles and requires more shots at different locations to be cleared.

Proposal 4

If exploit is removed entirely, then reduce Anthrax Bomb radius to mitigate impact on gameplay.

Proposal 5

If exploit is removed entirely, then reduce Anthrax Bomb poison duration to mitigate impact on gameplay.

Proposal 6

If exploit is removed entirely, then reduce Anthrax Bomb poison damage to mitigate impact on gameplay.

Proposal 7

Allow China to remove toxins with fire if we keep this mechanic to keep it consistent across factions.

Proposal 8

Anthrax Bomb puddle requires more damage to die. (Done)

Re-evaluate the removal of the Heat Haze Effect

We removed the Haze Effect from the Microwave Tank and GPS Scrambler to avoid having users run into rendering issues. There is valid critique that this beautiful effect is force disabled. Maybe we can leave it in but help prevent issue in other ways.

Patch distribution planning

We need to make a solid plan for distribution goals and the actions required. It is of little importance at the begin of the project development. This planning is very relevant as soon as we have a final (or near final?) product.

Likely action items:

  • When finalizing the patch, test all changes and all game features as much as possible to gain confidence that this is a stable product
  • Implement all required tools for easy and effective distribution, installation and usability (Patch Loader, Installer, GenPatcher, GenTool)
  • Before any final distribution takes place, try to embed Patch into major tournaments, leagues, challenges to put Patch104p into the spotlight of all major game presentations online (Streams, Articles, Replays)
  • Create accurate, simple but detailed overview of all patch changes
  • Create website to present the patch with images, how it works and offer user to download it
  • Translate change list and website into as many languages as possible, including the original game languages, Russian, Arabic
  • Decide on final rollout date and organize news publications on websites/forums that are relevant to educate accordingly
  • Roll out and enjoy amazing new game experience ๐Ÿ’ฏ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.