Code Monkey home page Code Monkey logo

tttreborn's Introduction

TTT Reborn - Trouble in Terry's Town

Discord

MOTIVATION

TTT Reborn is aimed to be the spiritual successor of TTT but developed for s&box. Our first goal is to perfect the vanilla TTT experience. Then, similarly as we did for TTT2, create a framework that will allow users to extend the gamemode (i.e roles, weapons, etc).

CONTRIBUTING

If you'd like to contribute, please check out our document which runs through the process of how to setup and contribute to our repo.

DEVELOPMENT

TTT Reborn is under active development. We are slowly trying to finalize some of the core systems found within TTT. If you'd like to track our progress, feel free to checkout the progress updates we post in the Discord.

You can also find additional information from our TTT Reborn Facepunch forum post.

tttreborn's People

Contributors

alf21 avatar amastryukov avatar fullstack0verfl0w avatar gravitywolfnotamused avatar histalek avatar krzyska-filip avatar matekdev avatar samcadams avatar sanny-io avatar siasur avatar theclonker avatar theplatinumghost avatar timgoll avatar travh98 avatar websaid avatar ziperr 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tttreborn's Issues

Spectator Camera

Add multiple spectator camera types:

  • First-person spectator camera (shows player's perspective)
  • Third-person spectator camera (allows camera rotation centered around a specific player)
  • Free-style spectator camera (allows flying around using WASD keys)

No weapons on round start

Prerequisites

Summary

Some players (most of all, connected players (not the hoster)) do not receive the start weapons not can pick dropped weapons up in some cases.

Steps to reproduce

Unknown

Last player on the leaderboard does not show

image

Add a bunch of bots, probably like 16+. Kill a bot, and ID them, notice on the leaderboard their name is not showing. If you kill another bot, and ID them, then one of the bots does appear whereas the other one is still missing.

Missing in Action

When players are dead but their bodies are not discovered, they should appear to spectators as MIA (Missing in Action).

Sprint

  • Disable by default
  • Add stamina system

Damage Overlay bugged

Prerequisites

Summary

Some s&box update broke the damage overlay. Opacity with background image interaction seems to be bugged.

Steps to reproduce

Just receive damage in-game. The damage overlay should look like sh*t.

User Interface Rework & Unification

When interface elements are overlayed or when they are displayed over other things, their transparency causes some issues with visibility. The C4 Controls below show how obstructed the controls look when the player is interacting with the C4 Entity:
image

Additionally, creating new interface elements is a pain because there is no basic stylesheet from which to inherit and base your work from. As a result, there is a ton of code and stylesheet duplication and inconsistencies in the look and feel.

We need to rework the interface and unify the existing elements under the new system.

Bug: Inventory selection deletes when a person joins the game

Prerequisites

Summary

[Event("tttreborn.player.spawned")]
private void OnPlayerSpawned(TTTPlayer player)
{
    DeleteChildren();
}

Due to this event, the entire inventory selection gets deleted whenever a person joins the game. You can try bot_add.

I added this initially because a player could complete a round w/o dying, and so the inventory selection stuff would remain on screen.

Expected behavior

Inventory selection shouldn't disappear on player join.

Actual behavior

Inventory selection stays on screen.

Steps to reproduce

Spawn in, go into a "in-progress" round, add a bot.

Spectator UI

Add a spectator UI that displays additional information about players and the game.

  • Name sync
  • Weapon sync
  • Ammo sync
  • Health sync

PlayerStates

Add an enum to check for Alive, Dead, MIA and Confirmed

Suicide

  • Discuss with team whether suicide functionality should be available
  • Implement suicide mechanic

Hammer-spawned weapon and ammo entities do not respawn when round restarts

Prerequisites

Summary

If you create a map and place down any TTTWeapon or TTTAmmo derivative, they will not respawn once the round is restarted. They just get deleted during cleanup.

Ideally, these locations need to be cached once the map has been loaded, so they can be deleted and then respawned.
My proposed solution would be to expand on TTTMapSettings (once map-entities is merged) and have Game store a MapSettings struct that contains relevant content (such as custom player models or clothing), as well as lists for all locations of TTTAmmoRandom, TTTWeaponRandom and all ammo/weapons that spawn in by default.
This problem does not occur with the random entities as they do not get deleted, Preround calls Activate on them, which spawns a random TTTAmmo or TTTWeapon derivative.

Expected behavior

They respawn.

Actual behavior

They don't.

Steps to reproduce

Create a map with those entities (such as ttt_smg and ttt_ammo_smg) and they will not respawn.

Make New Players Spectators

When players join the game, don't spawn a body.
Instead, make them automatically a spectator until the next round begins.

Team rework

File based Teams (no dynamic support for now)

Health Indicator

Add a damage indicator to UI when looking at players (Healthy, Injured, Near Death)

Ingame Menu

  • Base Menu (Resizeable, Draggable)
  • Page Navigation
  • Home Button
  • Switcher Component
  • Drag and Drop Component
  • Dropdown Component
  • Keybindings
  • FileSelection Component
  • Tabs (Could use PanelContent) Component
  • Radio / Multi-Choice Buttons Component
  • Slider Component
  • Tutorial
  • Settings
  • Description
  • Changelog

If a player connects mid round, they are stuck in free camera.

  1. Start the round
  2. Connect on your client mid round
  3. You are stuck in free camera

This is because if a person joins mid round, we never set their lifestate to being dead.

  1. Either set it to dead in MakeSpectator
  2. Or call our OnPlayerKilled method somewhere

Third person spectate camera inspect label

  1. Die and go into free cam view
  2. Position your free cam such that the nametag UI pops up (the name and health of a player when looking at them)
  3. Hit space to go into third person view
  4. The label stays and doesn't go away

Ammo System

Ammo should be stored based on type, and new types should be easily added if required (e.g. a special purchasable weapon that uses a type of ammo that the players cannot acquire in any other way and that is not shared with any other weapon).

Remove `PlayerScore.Entry` from `Scoreboard`

Currently, PlayerScore.Entry does not support client-based syncing (just broadcasting). This doesn't makes a lot of sense in TTT, so data syncing should be handled manually regarding scoreboard information.

Chat improvement

  • Add tag in front of the player's name to display the current chat (team, dead, global(
  • When in chat, allow to scroll through old messages

Score System

Implement a score system that updates and maintains the players' scores based on the actions they perform.

Requires #73

Nameplates: Adjust the TTTPlayer.IsLookingAtType method to be more precise

Summary

The TTTPlayer.IsLookingAtType method needs to be more precise:
image

This is especially a problem when someone is behind a player like here:
image
Apu is not the player im aiming at here.

Expected behavior

Should only have small space around to the player which triggers its nameplate.

Actual behavior

There is a too big box around the player where the nameplate gets triggered to show.

Inventory System

The inventory needs specific restrictions to the types of weapons, ammunition and equipment the player is able to carry (e.g. only 1 primary, 1 secondary, 1 melee, multiple grenades, multiple gadgets)

  • Add Primary slot
  • Add Secondary slot
  • Add Melee slot
  • Add Grenade slots
  • Add Equipment slots

Adjustable HUD

  • Own panels to support overlay priorities
  • Repositioning
  • Scaling?

Voice chat

TTT needs a working voice/text chat that
a) separates alive players from dead players
b) allows team chatting between players of the same team (Traitors)

InspectMenu improvement

  • Add death indicator
  • Add hold items
  • Add time since death
  • Add distance to the attacker when died
  • Add "Killed by X weapon"
  • Click [E] again to toggle the mouse being able to inspect in detail

SettingsSystem

Server- and Clientsided vars, that can be modified by the client or admin.

  • Update settings if a settings file was loaded
  • Create Server- and ClientSettings separation
  • Integrate already existing settings into the settings menu
  • Convert ConVars into SettingsVars
  • Auto generate settings by json
  • improve json structure

`var == null` vs `var is null`

I saw you used is null earlier, we should probably just stick to one version unless there is some underlying difference. (which doesn't seem to be the case based on a quick google search)

I think we mostly do == null or != null is our codebase, but I could be wrong.

Originally posted by @mzegar in #189 (comment)

Flashlight

The flashlight should be available to players at all times regardless of whether they are holding a weapon or not, and should point at where the player is looking.

Known Issues:

  • Deleting a Flashlight entity doesn't seem to work (maybe has to be a server call?)
  • If not attaching to a bone (i.e. weapon muzzle) and setting position every frame, the flashlight position appears to stutter

Alive/dead voice chat you can hear yourself

Get multiple users to connect to a game, use voice chat +iv_voice and make sure to produce a sound (i.e use your mic), you'll be able to hear yourself. Another user pops up in the UI, but you hear yourself.

There might be extra details on how to repo this bug, which are unknown at the moment.

Full Shop

The second shop variant @WestSaid suggested in the UI preview mockup

Voice Chat Entries Turn Yellow Immediately When Players Die

Prerequisites

Summary

While players are talking, if they die, their voice entry at the top left corner turns the spectator color before fading away. This is a giveaway that they are now dead.

Expected behavior

The voice entry retains the regular player color until it fades out.

Actual behavior

The voice entry immediately changes to yellow spectator color before it fades out.

Steps to reproduce

  1. Join with 2+ players
  2. Have 1 player talk
  3. Keep an eye on their voice chat entry at the top left
  4. Kill that player while they are talking

Decide Coding Style

  • Discuss with team and decide which coding style to go with
  • Format existing codebase with decided codeing style

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.