Giter VIP home page Giter VIP logo

Comments (13)

rpdelaney avatar rpdelaney commented on July 17, 2024

If this is added to promod, will it still track games played with other configs?

from promod.

MatthewClair avatar MatthewClair commented on July 17, 2024

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.

Attano avatar Attano commented on July 17, 2024

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:

  1. Adding more stats: server IP, hostname, health bonus, distance, server tickrate and probably more.
  2. Adding sql table queries file to the repository.
  3. Creating a public web interface for viewing the collected stats.
  4. 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.

MatthewClair avatar MatthewClair commented on July 17, 2024

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.

rpdelaney avatar rpdelaney commented on July 17, 2024

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.

MatthewClair avatar MatthewClair commented on July 17, 2024

That information becomes obsolete with any config changes however. It is also a lot harder to try to parse it.

from promod.

MatthewClair avatar MatthewClair commented on July 17, 2024

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.

rpdelaney avatar rpdelaney commented on July 17, 2024

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.

MatthewClair avatar MatthewClair commented on July 17, 2024

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.

Stabbath avatar Stabbath commented on July 17, 2024

Let us know when you've fixed that last issue and it'll be added to pm

from promod.

rpdelaney avatar rpdelaney commented on July 17, 2024

All right. You're at third normal form. good enough :)

from promod.

MatthewClair avatar MatthewClair commented on July 17, 2024

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.

MatthewClair avatar MatthewClair commented on July 17, 2024

I lied.

from promod.

Related Issues (20)

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.