Giter Club home page Giter Club logo

tiltedevolution's People

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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tiltedevolution's Issues

In game UI

There is currently an open pull request for the in game UI (https://github.com/tiltedphoques/TiltedOnline/pull/111). According to the PR's description, a bunch of features are already implemented. The UI still needs to be integrated into the main repo. The checklist of features on the PR's page is rather vague.

Handle player death

Player death currently has a bunch of issues, like reloading an old save instead of respawning somewhere. Also, for that matter, loading screens are somewhat problematic (which also occur on death) since the player still maintains control over the actors.

Scripting API

The server needs a scripting API first. The client could eventually use a scripting API as well. Below are some ideas of what a server side scripting API could contain:

Functions:

  • GetTime(), returns the in-game time, format to be decided.
  • SetTime(time), sets the in-game time, format to be decided.
  • Kick(id, message), kicks a player from the game and sends the kick message to the client.
  • SendTextMessage(id, message), send a chat message to a player.
  • SendPayload(id, mod_id, message), sends an arbitrary payload to a client, payload will only be accessible to the mod_id specified.
  • GetPlayer(id), returns a player associated with the id, returns a Player object.

Classes:

  • Player: This class should give access to the player's properties such as cell hosting, level, health, mana, location, rotation... The class should also have methods to kill the player, set the health, change inventory, equipment etc.
  • Npc: quite similar to Player, except this is also controllable by the script meaning it can be removed from the world.
  • QuestLog: Contains all completed quests and currently active quests as well as their stage, also allows the scripts to start/stop a quest, set the quest's current stage and complete quests.
  • Inventory: Contains all the items in a NPC/Player's inventory along with equipped status. Allows the script to change the content of the inventory and equipped status.

Events:

  • onNpcAdded(client_id, npc_id), called when a client requested a npc to be added to the world. Canceling the event should prevent the npc from being added and should also delete the npc client side.
  • onNpcRemoved(client_id, npc_id), called when a client requests the removal of an NPC, canceling will leave the NPC in the world with no host (we need to figure out a way to make server hosted NPCs).

Systems:

  • Database system, a single database per mod would make it easier for mods to store information across restarts.

Adjust imgui overlay

Make number field limited to a smaller width so the text gets displayed earlier and the box width is smaller.
image

Cancellation of animation actions

Currently, any triggered animations are sent to the server and forcefully executed on the remote clients. In game, these actions can be cancelled locally, but they will still execute remotely. One example is spamming left mouse button when holding an empty weapon in Fallout 4. The local client won't shoot anything, but the remote client will execute that player's shots.

Slow time shout bug

If a remote player in the same area shouts "Slow Time", the effect is applied on the local client too. The local client seems to keep the effect going for twice as long as it should. The set duration is the same, but the elapsed seconds elapse twice as slow.

Interrupt spell casting

Spell casting can be interrupted, and concentration spells can be dropped. This needs to be synced.

Power armor

Power armor does not seem to fully sync yet. The armor seems to duplicate.

Sync player idles

If player A is sitting in a chair, and player B enters the cell, player A appears to be standing on top of the chair on player B's screen, but player A is still sitting on their own screen. This also translates to other idles too, such as leaning on counters or sitting cross-legged (when using emote mods). If player B is already in the cell and player A sits or does any other idles, it syncs just fine.

Equipment sync

The equip manager is not yet reversed and implemented for Fallout 4 like it is in Skyrim. I laid some ground work for it a few months ago. I figure that it should be easy enough to implement.

Fix sync of un/equip event

Copied from Dragonisser's description on the issue on TiltedOnline:

Equipping or unequipping an weapon or armor doesnt get synced. Both get only synced on initial spawning of an actor.

This actually seems to work. There might be some cases where it doesnt work at all or partially. Requires testing.
I did noticed something tho:

  • If you unequip everything, you need to equip 2 things to make is show both pieces
  • As well if you have a weapon equipped for the first time joining, unequip everything and then equip one item the weapon vanishes. If you then equip another item the weapon shows again as well as both items
  • After changing the weapon once, the weapon always stays visible but the bug with the armor stays

Magic projectiles

Consistent projectiles coming from fireballs, ice shards, shouts, etc.

Part of #1

Disable game pausing while in menus

At the moment, the game pauses while in menus.
It would probably be better to unpause the game while in menus, similar to what the F4SE plugin Fallsouls (https://github.com/kassent/Fallsouls) or the SKSE plugin SkyrimSouls (https://github.com/kassent/SkyrimSouls) does.

Beware that unpausing the game while in menus might trigger some bugs. For example, the revive command does not properly execute when the game is unpaused, leaving the revived actor sliding on the ground.

Enhanced server console

  • Autocomplete for commands (similiar to how minecrafts chat work)
  • key up/down for scrolling through entered commands (command history)
  • /players command to list players on server (maybe with steamid if we have that)

Partly related:

  • Show which version of tilted online a user tried to connect with

[2022-02-07 16:45:13.392] [info] New player 8aa6868c tried to connect with Tilted Online [email protected] - Version Mismatch

Death sync broke

Dealing the final blow to a remote actor doesn't seem to kill it anymore. Investigate the ActorValueService to solve this problem, death sync code is in there.

Interpolation

There have been complaints of interpolation not working properly for player movement. Needs to be investigated.

Magic sync

  • Magic projectiles (#2 )
  • Concentration spells (#3 )
  • Magic effects (#4 )
  • Interrupt spell casting (#5 )

Load skse64_1_6_xxx.dll

As of now we don't load SKSE which isnt directly a huge issue, but certainly something we want to.

Debugger system

  • ECS overview debugger window
  • DebugService parent class with child classes for specific debuggers

Launcher UI

The launcher needs a UI. This might be integrated with the in game UI.

Magic effects

Sync and apply magical effects like burning damage, paralyzing, etc.

Weather

We need to synchronize the weather for cells/worldspace (to be determined which makes more sense).

Weather sync must also sync the progress of weather and transitions.

Force has more insight on how to implement weather.

Weapon draw sync is sometimes bugged

I recently added a new feature that made it so that the initial state of weapons being drawn was synced. This mostly works, but it seems to be bugged at times. Testers found that half the NPCs in Whiterun had their weapons drawn on remote NPCs.

Projectiles

Generic projectiles need to be synced, like arrows, bullets, grenades etc. Spell projectiles probably fall under this too, but it might be handled differently (#2 ).

Grab steamid of user for further usage

Might come in handy for security related things or simply banning people by steamid (having something like a global ban list for those who want to use it).

Actor value sync broke

I'm not sure what the extent of it is just yet, but dealing damage to a remote actor seems to regenerate it quickly, or doing damage is just not at all possible. Look at health sync, and check actor value sync, in the ActorValueService.

Animation variable names sometimes slightly differ in upper/lower case

For some reason, some animation variables sometimes have a single letter that varies in upper/lower casing. This can be consistently reproduced by loading a save file into different areas. This is problematic because we use the variable names to generate a CRC that is used as an identifier for the animation graphs.

The solution is fairly simple: calculate the CRCs again, making them all lower case first.

Headtracking

Headtracking is currently not synced. This is especially apparent with dragons, who have the most wide range in terms of headtracking, and whose heads are a major part of combat.

After some initial research, it appears that the Actor and AIProcess classes expose functionality for setting headtracking targets. I suggest starting there. Headtracking could potentially be synced by having the local client relative to the actor in question broadcast the headtracking target, and having the remote clients apply that target using said functionality.

An alternate solution would be to synchronize the LookAtLocation coordinates forcefully. This is potentially less invasive, since we would not have to interfere with the scheduled processes. When ownership transfers back to remote clients, they might be able to recover more easily. The downside is that this is more expensive in terms of network traffic.

Inventory system overhaul

This overhaul allows for more (server side) control over inventories, less bugs, and drastically fewer crashes. Would be ideal if we could add and remove items individually, instead of reapplying the whole inventory on one change.

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.