Giter Club home page Giter Club logo

tenet's People

Contributors

tdauth avatar

Watchers

 avatar  avatar

tenet's Issues

Make map more playable

Multiple games have shown that there are some issues:

  • Player colors. Enemy should have not red and blue. Use white and black?
  • Don't invert players or units from the beginning.
  • Only allow full shared control if a player is not present.
  • Don't change the owner of inverted units but mark them with some special effect attached.
  • Limit the time of inversion by the Turnstile machine and give it a cooldown (improves performance and less confusion).
  • Increase the map size a bit. Otherwise, enemy will attack too soon.
  • Decrease supply limit to 50 per player.
  • Increase gold costs of vehicles.
  • Decrease training and upgrade time (the whole game only lasts about 30 minutes).
  • Move the Algorithm and fake Algorithm locations to the center of the map (otherwise too hard to conquer).
  • Decrease the damage of the airplane's nuclear strike.
  • Add an ability to conquer vehicles (kicks out the unit).
  • Add a small intro video which lasts about 2 minutes maximum and explains the game and the turnstile machine.
  • Add chat commands like "-players", "-kick X", "-zoom XXX".
  • Revive heroes in the container not the barracks.
  • Add separate shop buildings.
  • Add different icons for units (very confusing for vehicles and buildings turrets etc.).
  • Add upgrades which improve armor and damage etc.
  • Add hero abilities, see #25
  • Remove the invert ability from containers.
  • Remove the clock item as long as it does not work.
  • Add some more useful items to the shop for heroes.
  • Start the train automatically in the beginning with some unit in it (so players see how it works?).
  • Fix missile start position for tanks.
  • Add some more terrain looking like Stalsk-12 (urban Doodads). Houses which can be conquered like Orc burrows and belonging to player Vehicles.
  • Add a text message when entering the red room: "Stay here to get inverted!".
  • Invert spells: rockets, stinger, healing, repairing etc. (all custom spells??).
  • Limit number of buildings: Container could be limited to 1 and give 50 supply? 2 barracks, 2 factories?
  • Protect the Algorithm by some creeps in the beginning.
  • Update loading screen according to the changes. Explain inversion in a simpler way. Only relevant information on the screen.

Host the map multiple times to get much more input.

Add Turnstile machine models

See https://www.hiveworkshop.com/threads/turnstile-model.328761/

It should support team colors and colors for the blue and red entry and the following animations:

  • Stand
  • Spell - Rotates once to invert the units
  • Death

Here it looks like he uses the same model for both entries: https://youtu.be/oblIuZnZrVM?t=457
Basically we have to create only one single model, create two units for player red and player blue.

Blender:
https://www.hiveworkshop.com/threads/mdl-exporter-for-blender3d.308138/
https://www.hiveworkshop.com/threads/exporting-models-from-blender-using-the-mdl-exporter-plugin.308012/

For the room we need also blue and red lights (team color again) and some walls with glass.

https://www.hiveworkshop.com/threads/heroglow.129462/#resource-27312

Improvement of concept and features

Concept:

  • What happens if I kill an inverted unit and go forward again? Is it missing forever? In the movie it seems that when the villian is killed in the past, it is not his latest time line?
  • Multiplayer: There has always to be one protagonist which controls the current time direction (player 1). If there are multiple players then they can only control units going in the same direction as the protagonist and are at a point where the time has not been defined yet. Other than that we could allow special units to be changing their time line and let only NPCs or past versions of the heroes have a fixed time line.
  • There could be some skill to invert stuff while running around which would make the game more fun. Something like an inversion gun?

Missing features of time inversion:

  • Reversing the animations, special effects and missiles. This probably needs modified wc3 models.
  • Reversing revivals. It will only be possible for heroes or with a dummy spell of resurrection. What about buildings and destructibles?
  • Reverse the sky/sun. Is it possible to make the time go backwards? There is the native 'SetTimeOfDay', so we can set it in the periodic trigger.
  • Reverse picking up and using items.
  • Reverse ingame sounds. This would require that all sounds are played manually and a native to play a sound backwards. Probably not possible, so add reversed files?
  • asked on hive: https://www.hiveworkshop.com/threads/reverse-stuff.328500/

Optimizing the time line updates:

  • Store only change events on units not every position/facing etc.
  • Add a flag or list check if any change event happened at all.
  • If no change event happened to a unit, we don't have to call any function.

Custom models:

Support inversion of a spell

As example we have to support the inversion of one single spell. For example, the healing spell from a healing potion.
You have to store the source item/item type/inventory slot and the effect/healed life.
Ideally, in the future this can be done by a healing/mana inversion system.

4 vs 4

  • Two players for each team but not separated by inverted/non-inverted
  • Both players start with units from the red team and control some units of the blue team
  • When the Protagonist becomes inverted it should still belong to player 1
  • Otherwise, player 2 will be bored all the time

Fix hiding units too early

There seems to be an issue when the time goes backwards that all units from the beginning are hidden too early.

CopyUnit/CopyItem

We need CopyUnit to clone a unit when entering a turnstile machine.
Look for an existing vJass library:

The following stuff has to be copied:

  • facing
  • owner
  • unit type
  • life
  • max life
  • mana
  • max mana
  • damage (for safety)
  • defense (for safety)
  • abilities
  • ability cooldowns
  • buffs
  • inventory items (add CopyItem)
  • transported units

hero stuff:

  • XP
  • level
  • unused skill points
  • hero abilities
  • hero ability levels
  • strength
  • intelligence
  • agility

Add some parameters like:

  • copyItems
  • copyTransportedUnits
  • new location
  • new owner

Item stuff:

  • charges
  • cooldown?
  • invulnerable or not
  • life
  • pawnable or not
  • dropable or not
  • owner

We could post the snipped here: https://www.hiveworkshop.com/forums/submissions.414/

Fix clock spell and Time.toTimeDelayed

Make all units/objects invulnerable to make sure that nothing can change during the time.
Fix #29 so the units will continue with their previous orders and time can be repeated but differently.
Pick all units with the item and apply the cooldown automatically.

Add hero abilities with inversion

First add inversion of hero XP, hero level ups, getting skill points and hero skills. Can we actually unlearn hero abilities or at least change their level?

Protagonist:

  • Disarm: Hostile unit cannot attack for some time.
  • Close combat: Hits a number of units in close combat.
  • Speed run: Increases the movement and attack speed of the Protagonist
  • Ulti - The Protagonist - everyone has to act according to the Protagonist's plan. Takes over the control of several units for certain time. Inverted effect. The units are simply restored and change the owner?

Neil:

  • Lock/unlock doors - Should work on destructable gates to close or open them.
  • Driver - When he is in a vehicle, the vehicle moves much faster and has more defense?
  • Medic - Heals units around him.
  • Ulti - Cavalry - Calls soldiers from the future. Inverted: invert the timed life effect backwards.

Ives:

  • Commander - Command aura.
  • Information - Gets information from the blue team about how things will turn out.
  • Soldier - passive effect which increases armor, attack rate etc.
  • Ulti - Artillery Strike: Calls in an artillery strike.

Volkov:

  • Booby trap: Creates a massive booby trap.
  • Headshot: Kills a unit with a fatal head shot.
  • Instructions: Gets instructions from Sator. Increases attack speed etc.
  • Ulti - Gold bars: Gets gold bars from the future

Add Gold Transports player

Inverted gold transports are constantly spawned from the future and can be captured and used when inverting time.
The player can be a computer player or a human player. It does not matter.

It gives the players more motivation to invert time.

Improve predefined path of inverted units

  • There are two blue teams from both player forces.
  • The blue teams have a predefined path until the mission ends since the have been there from the beginning.
  • Add a small battle between the inverted teams (with some dead units which are respawning)
  • When the time is inverted, the predefined path will stop. Maybe think about a new concept where the inverted restored units will be restored even if they are not inverted to the time until one changes their path by ordering them to do something else. Then all restored stuff which was caused by them won't be possible anymore.

Fix TimeFrameImpl.flush

The issue is here:

public stub method flush takes nothing returns nothing
        loop
            exitwhen (this.getChangeEventsSize() == 1)
            call this.changeEventsHead.popBack().destroy()
        endloop
        call this.changeEventsHead.clear()
        call this.changeEventsHead.destroy()
        set this.changeEventsHead = 0
endmethod

The exitwhen condition can be always false since changeEventsHead can be 0 and hence the size will never be 1.
The crashes and lags come from this call!

Update README

  • Replace words Hydralisks.
  • Improve the description of the scenario.
  • Improve the description of the concept of time inversion.
  • write "A Tenet-style prototype map for Warcraft III: Reforged."
  • Add screenshots like for the Coronavirus map.
  • Link to a playlist with all YouTube videos or embed previews to the videos.

Improve debugging single objects

Time objects should be watchable. If you choose a time object to be watched you should get all information:

  • name
  • creation time
  • inverted or not
  • time frames (0, 4, 3)
  • all change events per time frame

These information could be shown in a multiboard as well.

We need the following commands:

  • "-watch": Watches the currently selected object.
  • "-unwatch": Stops watching a timeobject/timeframe/event and shows the regular multiboard.
  • "-stop": Pauses time restoring and storing and all units/the game.
  • "-resume": Resumes the game.
  • "-timeframe X": shows all change for a specific timeframe of an object.
  • "-event X": shows the specific change event of the selected "-timeframe".

These commands etc. will help debugging.

Support inversion of footprints

You can see that footprints are shown for a short time in the HD version.
This should be disabled for inverted units and they should be placed inverted.

Create custom models

With https://github.com/khalv/mdl-exporter we can create our own models. Doodads and buildings are easier than units.

  • Turnstile machine: Already started, fix the texture and check the animations. The current version is okay.
  • Gate: Done
  • The Algorithm: Watch the move and add all parts? It is not that important to have this model.
  • The locked gate from the final battle.
  • The shaft where the Algorithm should be put in for the Future.
  • The entry to the cave.

Restore orders when stopping restoring the past

When time is inverted into the same direction as a unit it should continue with its previous order.
This prevents harvesting units from stopping harvesting and repairing units etc. etc. etc.

Add upgrades

  • Check if upgrades can be inverted (maybe not the progress but at least the level?)
  • Technology from the Future: The time the inversion takes by a turnstile machine is increased.
  • Improved weapons: Soldiers become stronger.
  • Improved vehicles: Vehicles become stronger.

Add some train/railway

It should go in a circle on the map. The wagon units should simply follow the next unit and have the same speed.
The first unit has to stop when the train stops.
Each wagon should be able to transport units.
Initially, the train should be indestructible.

Units should be allowed to cross a railway, but the wagon units etc. should not be allowed to move on a different pathing.
We need a pathing type which cannot be crossed by it. It cannot be a flying unit since then the helicopters cannot cross the railway, too.
It should be like water which can still be crossed by ground units and the train should be like a ship. Hence, ground units can cross it but the train cannot leave it!

Models:

Add function DurationToTime

function DurationToTime takes real duration returns integer

which returns the number of time ticks for the duration depending on the periodic interval.
This helps to specified times as real duration since we mostly use ingame time instead of ticks.

Support inversion of hero XP

The XP events are not available. We could use recordChanges for units of the hero type by default and store the XP.

Support inversion of load/unload events

When units are being loaded to a transporter and unloaded from it it should be inverted.
Note that when an air unit dies the units are unloaded and stunned for some time.
When a sea transporter dies or an air transporter dies over water, they die, too.

There are also transporters for corpses which do not receive the stop order when being unloaded.

Unload events require a custom system:
https://www.hiveworkshop.com/threads/transporters-system.329045/

If the implementation works, the cargo helicopters should be able to load/unload units in reverse.

Add Future player

For fun add another player who plays the future.
He can send stuff to the past and drop containers with stuff helping either side.

Maybe he should be inverted and lose gold until the end of the mission?
He could predefine paths for inverted troops or events like in the god maps.

Add landmines

In the final battle where the Humvee is driving mines are exploding in reverse. When you enable the subtitles one guy screams "mines!".
The explosion and damage effects should be invertable.

Add hero glows to heroes

Protagonist, Volkov, Neil and Ives need hero glows.
Besides pictures from the movies as icons would be better.

Add models

Support inversion of constructing buildings

They should be unconstructed by the workers.
Support all different types of construction:

  • Human construction: Multiple workers take part in it. The resources might be spent during the construction.
  • Night elf/orc construction: The worker disappears in the building.
  • Undead construction: The building is summoned.

Form the map as Stalsk 12

  • we need a tunnel and the location where the Algorithm is burried
  • there is a hill where the troops are picked up and the blue teams is picked up in containers (from their point of view landing) at the end of the mission.
  • the landing zone
  • some buildings which can be destroyed and where units can be placed inside (like Orc burrows)
  • some anti air guns
  • one turnstile machine down there
  • the train will be a small bonus
  • the circle in the middle where teams move around

Create an example mission with multiple global times

  • There should be different missions on one single map with different global times.
  • Each global time can be shown in the multiboard.
  • Each object belongs to one single global time.
  • Allow transfering events/timelines/objects between times.

First example mission

The first example mission should be a simplified version of the final battle in Tenet:

  • the protagonist

  • army of marines

  • army of zerglings

  • one holy item which is protected by the zerglings

  • the quest is to get an switch an item protected by the zerglings (similar to the artifact)

  • the protagonist as to invert himself at one point to move the item to a certain point when it is not protected due to the attack which goes forward and moves the zerglings away from it.

  • some zerglings will invert themselfes as well trying to protect the item from being switched

  • then he has to go forward again and pick it up, bring it to some point and complete the mission

reasons for failing the misssion:

  • runs out of time
  • the zerglings kill the protagonist in one of the time directions

After finishing the mission you have the knowledge how it works to make it easier.
This is different from the movie where you cant change things.
So you can go back as many times as you want into the exact mission and collect bonuses or help your protagonist in a different way.

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.