Giter Site home page Giter Site logo

insurgency-sandstorm-mod's Introduction

insurgency-sandstorm-mod for checkpoint co-op

Description

Insurgency: Sandstorm is a tactical first-person shooter with a short time to kill. Depending on the weapon used, players and AI die within 1-3 shots. The co-op checkpoint mode consists of about 7 checkpoints depending on the map, and players must clear the first checkpoint of all bots before standing on it for 30 seconds, which "captures" it, and either a 1m30s counter-attack wave occurs or players proceed to the next checkpoint. Repeat this process until the last checkpoint is complete with at least 1 player alive.

Problem

Rushing the objectives and "run 'n' gunning" feels like a solo effort where the only team aspect is not having to deal with a whelming amount of bots because your teammates are doing the same. Capturing an objective without clearing the area of bots results in some bots attacking you from behind. Secondly, leaving your teammates in the killzone with enemies still wandering around while the new wave of enemies spawn is also detrimental to the success of each checkpoint.

Some players aren't as skilled at first-person shooters, so they play a lot slower; some like the teamwork aspect. Playing as a team, covering a teammate's back, and capturing objectives together--on command--helps make it a more enjoyable experience and can contribute to the overall success of completing the map.

Solution

Part of the Insurgency Sandstorm 1.4 updated introduced the ability to set game mode properties via rcon. This means we can adjust these game parameters in real-time. By adjusting the capture timer variable, we can simulate locking an objective. Locking the objective for a specific time helps give admins the time to react to players that violate the server rules when no objective rushing is enforced.

Alongside an appropriate title, intermittent rules displayed in chat, and admins that remove offenders, it is one way to form a server identity, which in turn help attract like-minded players and encourage teamwork.

Features

  • Objectives cannot be captured until round timer reaches ~12:30. Each capture resets timer to 15:00, so it'll be locked for about 2 and a half minutes after each objective is captured. This locking feature isn't available on the caches because the game doesn't have a variable that controls the ability to prevent a cache from exploding. The idea of locking objectives was not known to be possible until I visited Cassandra Confluvium servers.
  • Chat announces who joined or left the server and is logged on the server.
  • Chat messages are logged on the server.
  • Server periodically displays rules/messages in the chat. Automatically detects empty server and slows the messages to decrease rcon connections (RCON bug that causes zombie threads, which can cause rcon freezes, high cpu usage).
  • Various scripts to get player name and associated Steam IDs, server info, server player count, and convert steam IDs to names.
  • Script that sets a minimum and maximum bot count based on specific players that enter the game, whereas the default bot count would be too difficult.
  • Simple kick and ban scripts that provide a reason to the player kicked as well as outputting the kicked player's name and reason in the chat.
  • Announce 3 messages as an alert to new users to read chat
  • Allow priority players to join past the listed server slots. Currently 2 additional priority players can join even though the server shows 6/6 for example. This can be expanded up to 16 slots.
  • Chat rules only output if the game shows activity (helps decrease rcon zombie thread build-up)

Notes

  • As of this writing, modding tools are not released. New World Interactive, the game's developers, can break this mod really easily by limiting the log file output. On the otherhand, releasing more info like logging players that destroyed a cache or stepped on the objective (because this triggers camping bots to move towards the objective) can really help enforce no rush, team-oriented servers. Modding tools are said to be in the next update.
  • Since the timer countdown is decoupled from the in-game round timer, it's not always in sync. I could refactor the code more or rebuild it in JavaScript or Python, but I'm concerned it will affect the countdown further as it's already sometimes off by 1-2 seconds. The rcon bug that spawns zombie threads also causes desync, but a server restart resolves this.
  • I experienced a lot of problems refactoring global vars to one file or one file containing environmental variables. I believe it is due to shells and subshells. Running scripts in background while already in the background also caused issues.
  • It's all working, but it's not really efficient as it requires running each service in its own terminal. This does help with being in the experimental phase because I can immediately test an idea; fix, or improve something during a game with players, and it won't affect other areas of the mod. Migrating this to Node.js or Python would be a fantastic project, but could potentially be for nought depending how NWI moves the game forward with its mod tools.
  • A web interface to tie all of this would be really cool.

Required

Future additions

  • Add smart chat rules: Turn off chat rules if all players in game are regulars/admins to declutter the chatbox.
  • Enable admins to enter a command command to adjust the game settings like bot count or AI difficulty ("!minbots 5" or "!maxbots 12").
  • Build player profiles so users/admins can see in chat when a player enters if they're a regular, times kicked, rushers, new and non-new players.

insurgency-sandstorm-mod's People

Contributors

heyjames avatar

Watchers

 avatar  avatar

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.