mirror of
https://github.com/GameServerManagers/LinuxGSM.git
synced 2026-04-25 06:05:57 +03:00
[GH-ISSUE #886] Python implementation? #710
Labels
No labels
Atomic
Epic
cannot reproduce
command: backup
command: console
command: debug
command: details
command: fast-dl
command: install
command: mods
command: monitor
command: post-details
command: restart
command: send
command: start
command: stop
command: update
command: update-lgsm
command: validate
command: wipe
distro: AlmaLinux
distro: Arch Linux
distro: CentOS
distro: Debian
distro: Fedora
distro: RedHat
distro: Rocky Linux
distro: Ubuntu
distro: openSUSE
engine: goldsrc
engine: source
game: 7 Days to Die
game: ARMA 3
game: Ark: Survival Evolved
game: Assetto Corsa
game: Avorion
game: BATTALION: Legacy
game: Barotrauma
game: Battalion 1944
game: Battlefield 1942
game: Black Mesa: Deathmatch
game: Blade Symphony
game: Call of Duty 2
game: Call of Duty 4
game: Call of Duty: United Offensive
game: Counter-Strike 1.6
game: Counter-Strike 2
game: Counter-Strike: Global Offensive
game: Counter-Strike: Source
game: Day of Infamy
game: Dayz
game: Death Match Classic
game: Don't Starve Together
game: ET: Legacy
game: Eco
game: Factorio
game: Factorio
game: Garry's Mod
game: Half-Life
game: Hurtword
game: Insurgecy
game: Insurgecy
game: Insurgency: Sandstorm
game: Just Cause 3
game: Killing Floor
game: Killing Floor 2
game: Left 4 Dead 2
game: Minecraft
game: Minecraft Bedrock
game: Mordhau
game: Multi Theft Auto
game: Mumble
game: Natural Selection 2
game: No More Room in Hell
game: Pavlov VR
game: Post Scriptum
game: Project Zomboid
game: Quake 3
game: QuakeWorld
game: Red Orchestra: Ostfront 41-45
game: Return to Castle Wolfenstein
game: Rising World
game: Rust
game: San Andreas Multiplayer
game: Satisfactory
game: Soldat
game: Soldier of Fortune 2
game: Squad
game: Squad 44
game: Starbound
game: Stationeers
game: Sven Co-op
game: Team Fortress 2
game: Teamspeak 3
game: Teeworlds
game: Terraria
game: The Front
game: Unreal Tournament 2004
game: Unreal Tournament 3
game: Unreal Tournament 99
game: Unturned
game: Valheim
game: Wurm Unlimited
game: Zombie Master Reborn
game: label missing
good first issue
help wanted
info: alerts
info: dependency
info: docker
info: docs
info: email
info: query
info: steamcmd
info: systemd
info: tmux
info: website
info: website
needs more info
outcome: duplicate
outcome: issue resolved
outcome: issue resolved
outcome: issue unresolved
outcome: pr accepted
outcome: pr rejected
outcome: unconfirmed
outcome: wontfix
outcome: wrong forum
potential-duplicate
priority
pull-request
type: bug
type: feature
type: feature
type: feature request
type: game server request
type: refactor
waiting response
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/LinuxGSM#710
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @jaredballou on GitHub (Jun 14, 2016).
Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/886
Hey guys,
I've been poking around at learning Python and using an LGSM build as a way to do so. I've not gotten a whole lot done, as I was mainly working on getting a solid configuration model for game data created. I also need a lot of help figuring out the best ways to package and deploy modules here, as I have never really built a Python framework before. I figured I'd post up my stuff here, and see if I can get some help with the design portion.
My goal with this was to make a simpler and more robust LGSM core that has a very well understood interface. For things like automation, scripting, and the web frontends, I wanted to be able to provide all functionality via command line arguments or configuration files, so that users can deploy it the way they see fit. I am planning to leverage a menu module to provide better user interactive input methods, and to be able to automate every menu or have settings to suppress or answer prompts without interaction.
The repo is at https://github.com/jaredballou/lgsm-python - basically, there are two Python modules in lgsm/modules for lgsmcore (the game script, including script config management and gamedata parser) and steam (installs steamcmd and will install/update games).
The game data is at https://github.com/jaredballou/lgsm-gamedata - they are in a tree where platform, engine, and game are all inherited and interpolated. I am only working on insserver right now since that's the game I care about, so a lot of the other YAML files are either broken or not even YAML (just renamed shell-based files from my LGSM fork). You can get the general idea of what I'm trying to do there to support games without code when possible. I want to be able to include modules from both my LGSM-Python repo and pip itself, any suggestions on how to do that best would be appreciated.
Right now, it's very barebones and basically filed with debug messages and busted functionality. This started out as just a POC to see about how a module might be laid out, and I ended up fleshing it out enough to start to show what I'm trying to do.
There are a few other projects that I a looking at, either from a script functionality standpoint or just having good features that I can leverage.
https://github.com/rzeka/QLDS-Manager - Has a modular approach and interesting way of adding commands and features at runtime.
https://github.com/Holiverh/python-valve - RCON and srcds query module
https://github.com/f0rkz/gameserver-daemon - this is actually a "bad example" I am looking at. It has a lot of hard-coded and duplicated items, isn't very flexible, and isn't very extensible. But it actually works, unlike my tool, so I guess I shouldn't be saying anything :D
https://github.com/Dasister/Source-Query-Class-Python - Simpler Source Query module
That's what I got for now, looking for feedback and help if anyone is interested. I'd be glad to give commit rights to any of you guys, my guess is this is still too newbie-ish to actually be the foundation of the finished product, but it's a good sandbox to prove out and solidify the design. Thanks!
-Jared
@jaredballou commented on GitHub (Jun 28, 2016):
More work done on the develop branch. I merged it all into one big Python module for now, and it load gamedata, displays the installer menu, and gets the appid in response. It also handles script and game config files intelligently, and isn't as recklessly clobber-ific as it was. Tomorrow I'm going to take a crack at getting the actual install/start/stop stuff working in SteamCMD, if anyone wants to take a peek at what I did and let me know what you think I'd appreciate it.
@dgibbs64 commented on GitHub (Sep 19, 2017):
LinuxGSM will not be developing in Python officially. However nothing stopping anyone from developing somthing
@lock[bot] commented on GitHub (Sep 19, 2018):
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.