tdauth / tenet Goto Github PK
View Code? Open in Web Editor NEWTenet-style prototype map for Warcraft III: Reforged
Tenet-style prototype map for Warcraft III: Reforged
Multiple games have shown that there are some issues:
Host the map multiple times to get much more input.
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:
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
TIMER_PERIODIC_INTERVAL could be 0.50 or even 0.80.
This will reduce the number of recorded change events, time frames and restore calls massively.
Concept:
Missing features of time inversion:
Optimizing the time line updates:
Custom models:
When the turnstile machine is conquered, it should first unload all units.
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.
Maybe find a different model or use different colors (white troops like in the movie).
There seems to be an issue when the time goes backwards that all units from the beginning are hidden too early.
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:
hero stuff:
Add some parameters like:
Item stuff:
We could post the snipped here: https://www.hiveworkshop.com/forums/submissions.414/
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.
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:
Neil:
Ives:
Volkov:
Try to embedd them into github.
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.
https://www.hiveworkshop.com/threads/humvee.48319/#resource-21280
One unit has to be in in it to make it moveable (like the train should be).
Look at the metal.
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!
Time objects should be watchable. If you choose a time object to be watched you should get all information:
These information could be shown in a multiboard as well.
We need the following commands:
These commands etc. will help debugging.
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.
With https://github.com/khalv/mdl-exporter we can create our own models. Doodads and buildings are easier than units.
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.
The "unload" order can only be used with an order with a target location.
Only "unloadall" can be used without location.
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:
Buildings have to be recreated. If landmines and vehicles cannot be resurrected, then just recreate them as well but the spell should work for them as well!
Add the death sounds inverted for landmines and buildings etc.
Initial code exists and stand is detected. However, the change event is not added properly.
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.
The XP events are not available. We could use recordChanges for units of the hero type by default and store the XP.
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.
There are too many time frames and change events for the objects!
I have issues using a custom limit for multilple structs: https://www.hiveworkshop.com/threads/custom-struct-size-with-three-extending-structs.330434/
The supply limit should be reduced a bit as well as the possible time to invert time.
Besides, discarding events before this time might help.
The time can be inverted for a maximum duration of 30 seconds.
All changes recorded before this time do not need to be stored constantly.
Hence, flush all time frames before that time.
This should improve the memory usage for a longer game.
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.
Use this video for higher resolution images: https://www.youtube.com/watch?v=mHAtrgoq76w&ab_channel=quint
Try a higher resolution for the model.
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.
Protagonist, Volkov, Neil and Ives need hero glows.
Besides pictures from the movies as icons would be better.
When a unit is hidden since we go after/before its creation in time, check if it still uses supply.
If so we should prevent it!
Sator's troops should get white colored uniforms (snow colors).
Tanks:
Vehicles:
Airplanes:
Helicopters:
Missiles:
Doodads:
Initial AI script: https://github.com/tdauth/tenet/blob/master/ai/Sator.ai
Check for errors.
It should allow him to build a base and to fight. Sator's AI should be more defensive!
Using buildings or tanks is a problem!
We could add a custom script in which computer-controlled units enter vehicles whenever it is possible. Look at AIs which use goblin zepelins.
This issue has a rather low priority.
They should be unconstructed by the workers.
Support all different types of construction:
Tutorial: https://www.hiveworkshop.com/pastebin/913bd439799b3d917e5b522dd9ef458f20598/
Just create a basic frame UI with the timeline of an object (horizontal scroll bar) and change events to learn how the frame UI natives work.
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:
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.