Comments (13)
If this is added to promod, will it still track games played with other configs?
from promod.
It can only track if the plugin is loaded so if it is in plugins/optional
it wont run unless it is specifically loaded. It also doesn't log anything if ready-up is disabled since anything without ready-up generally isn't competitive. However the end goal is that it be included with all of the major configs since it specifically reports what config was running at the time (via l4d_ready_cfg_name
). The idea is it will let config makers see which maps are too easy or too hard to survive so maps that may require per-map tweaks can be found more easily.
from promod.
This seems good and all and generally I could help you out with this by installing on my servers. But you should consider some things:
- Adding more stats: server IP, hostname, health bonus, distance, server tickrate and probably more.
- Adding sql table queries file to the repository.
- Creating a public web interface for viewing the collected stats.
- Definitely it wouldn't hurt to announce on a forum or somewhere about this. How are you going to collect extensive stats if only a few people are aware of your intentions?
Overall the idea is good, I like it. Still, I would've used PHP+MySQL. This task seems rather trivial to implicate Python in it.
from promod.
I don't want to collect any information that can be used for any identification so collecting IP and hostname is something I definitely don't want. I'm planning on making a web interface but I don't want to have too much different data to play with at first. Adding more fields later isn't an issue, and the Python server can easily just enter 'null' for servers that haven't been updated to send new fields.
I don't really want people to try to update their servers because 90% of the comp L4D2 community is either too lazy to do it, or too dumb to do it. If it gets included in a major config it'll get a ton of usage. Once one config gets it, the others will probably add it too since they would likely want to compare stats.
As for why I used Python, it is extremely easy to create a single socket that just reads UDP packets. I don't need any of the extra RDT overhead of HTTP/TCP since all of the information fits into a single UDP packet. This way there is barely any extra computation on the server. As for a web interface, that will be done differently. As for SQLite3 vs MySQL, SQLite3 is nice and lightweight and is really easy to use.
from promod.
I should point out that I still have about six months of log files for a handful of the most popular servers that can be scraped for data. Doesn't mean this project should be abandoned, but if I were interested in this kind of information, I'd be interested in these logs.
from promod.
That information becomes obsolete with any config changes however. It is also a lot harder to try to parse it.
from promod.
Added health of each survivor, distance of each survivor (1/4 of map distance) and witch/tank spawn locations to the plugin. I don't think I'm going to bother adding anything else to what I track. I'll start looking into doing a web interface next. I'll probably just have options to do mostly pre-made queries and have an option to download the sqlite3 database for anyone that wants to do more advanced queries. Suggestions for that are welcome but you should put them in an issue on the plugin repo instead of here.
from promod.
You might want separate tables for logged events. Might save you some headache later when you're trying to separate "how many times was the config loaded" vs "how many times was the config loaded and the game played to completion" vs "how many times survivors made safroom on c4m3".
from promod.
That is what SQL queries are for...
SELECT count(*)
FROM log
WHERE mapname
IN
(SELECT mapname
FROM intromaps)
Assuming intromaps
is a table with all intro maps, that would tell you how many times the config was started on map 1 of a campaign. Divide by two since it counts each round.
The definition of "completion" is far from standard. Euros never play finales. NA used to play finales but not doesn't sometimes. However that would just be simple the number of times intro maps were played minus the number of times finales were played with a given configname
(assuming most people don't start part way and finales are included). Then divide by two to account for two rounds.
SELECT sum(alivesurvs), count(*)*4
FROM log
WHERE mapname = 'c4m3_sugarmill_b'
AND configname = 'Promod 3.1'
That gives the alivesurvs, max alive survs
for c4m3 and Promod 3.1 config.
I still seem to be getting some issues with false positives on some rounds so some rounds are getting detected twice so I'll have to look into that.
from promod.
Let us know when you've fixed that last issue and it'll be added to pm
from promod.
All right. You're at third normal form. good enough :)
from promod.
Everything seems to work now.
Here is some information from before I updated the table to have correct names and number of columns: http://pastie.org/pastes/6030651/text?key=9ggic1jetqgvpmrkqdf4w
from promod.
I lied.
from promod.
Related Issues (20)
- Tank should not take damage from hittables HOT 1
- Incapacitated survivor recovery should not be interrupted by commons pushing the good samaritan HOT 5
- Finale tank disconnect causes the stage to skip with the tank alive, meaning tank + horde HOT 1
- Updated l4d_weapon_limits HOT 1
- promod crash server HOT 4
- Missing l4d_spec_stays_spec source
- Error compiling HOT 3
- Path plugin HOT 1
- l4d2_godframes_control HOT 1
- tag missmatch not fixed :s HOT 1
- universal-item-manager HOT 1
- l4d2_drop_secondary.sp HOT 1
- Compilation error :s HOT 2
- Issue 39 HOT 3
- Bogus prints happen semi-often
- GPLv3 compliance HOT 1
- Tank HUD
- l4d2_m2_control.smx Entity error spam
- Plugin encountered error 30: Script execution timed out (item-manager.smx) HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from promod.