Skip to content

Repository files navigation

Neon Warfare

Neon Warfare is a co-op top-down bullet hell built on Godot and C#, where every session is short but demands real coordination between players: the enemies in a fight are different every time, and the tactics have to be worked out on the fly. The game is an indie project with a free version, and runs on Windows/Linux/macOS.


Documentation

Foundation — read for any task

Document What is inside
Scene tree NodeContainer, "calls go down, events go up"
Dependency injection Di.Process(this), [Child], [Parent], [SceneService]
Code style conventions Namespaces, RPC pairs, serialization, .editorconfig

Area-by-area design — read when the task touches that area

Document Read when you touch
Networking RPC, spawning, Net.IsServer() / IsClient(), DoServerClient
Data and saves Persistence / Temporary, MessagePack save format
Services Services.*, global and world services
Startup flow RootStarter, GameStarter, the four session modes
Shutdown Autosave on exit, killing child processes
Entities Character and its subsystems: controllers, stats, status effects
UI PagesProvider menu stack, MenuGameSettings, HUD
Chat and commands IChatMessageInterceptor, ICommandProcessor
Localization Tr(KEY), Assets/Locales/*.po

References and environment — consult as needed

Document What is inside
Command-line arguments All flags, Scripts/Content/CmdArgs/
Repository structure What lives in each folder
Stack and dependencies Godot and .NET versions, libraries, KLUDGEBOX_SRC
Quick start Environment setup, Rider run profiles
Testing The approach to tests, dotnet test, what is covered
Smoke testing Running the real game from a test, GODOT_EXE

What to read for a task

Task What to read
Add or change an RPC NetworkingConventions
Add a field that goes into the save Data and savesNetworking (the initial world snapshot)
Add a world service ServicesScene tree (node naming without the World prefix) → DI
Add a game session mode Startup flowNetworking (process roles)
Add a command-line flag Command-line argumentsStartup flow
Add a chat command Chat and commands
Add a menu page or a setting UILocalization
Add a stat, a status effect, a character subsystem EntitiesNetworking
Add player-visible text Localization
The code behaves differently in single-player and over the network Networking (IsServer / IsClient) → Startup flow
Add a test or figure out what is tested at all TestingSmoke testing
[Child] / [SceneService] came out null DIScene tree

Code entry points

Path What it is
Scenes/Root/Root.cs The process entry point, lives for the whole application session
Scenes/Game/Game.cs A single game session: Network, World, Hud / ServerHud; created anew on every entry into the game
Scenes/World/World.cs The world root, IServiceProvider, the world service registry
Scenes/World/Data/PersistenceData/WorldPersistenceData.cs Data that goes into the save
Scenes/World/Data/TemporaryData/WorldTemporaryData.cs Data of the current session, does not go into the save
Scenes/World/Tree/WorldTree.cs The game tree, switching locations
Scenes/World/Tree/Surfaces/Safe/SafeSurface.cs The peaceful hub — the first of the two locations
Scenes/World/Tree/Surfaces/Battle/BattleSurface.cs The battle zone — the second of the two locations
Scenes/Entity/Characters/Character.cs The character (RigidBody2D) and all of its subsystems
Scripts/Services.cs The global service registry
Scripts/Consts.cs Global constants, Consts.TransferChannel
Scripts/Content/CmdArgs/ CommonArgs, ClientArgs, DedicatedServerArgs
Properties/launchSettings.json, .run/ Rider and Multi-Launch run profiles

About

Multiplayer 2D top-down coop hardcore arcade shooter

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages