Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Choice of language #23

Open
peppy opened this issue Jan 30, 2019 · 11 comments
Open

Choice of language #23

peppy opened this issue Jan 30, 2019 · 11 comments

Comments

@peppy
Copy link

peppy commented Jan 30, 2019

Doing good work here.

May I ask if you are locked in to the python language choice? It would be hugely advantageous (and immediately usable) if this was available as .net core (would easily slot into our existing systems without forking execution).

@trafis
Copy link
Contributor

trafis commented Jan 30, 2019

Hey Peppy, we’re all thrilled you like what we are doing so far. I chose python to start developing this mostly since it was the easiest language to write a proof of concept, and it took off from there with the addition of Tybug and Sam. If you are actually interested in using this to some capacity, we are absolutely willing to develop under c# instead, albeit it will take some time to transition.

What are you looking for in a project like this? We are not exactly sure how to move forward to provide something that osu! would actually use. We’d love to work with you to make this as usable and useful as possible!

@VINXIS
Copy link
Contributor

VINXIS commented Jan 31, 2019

If u did it in .net c# it could be integrated into osu

@trafis
Copy link
Contributor

trafis commented Jan 31, 2019

Yeah we understand that, we are aiming to have a stand-alone python release for osureport sometime this week and then once that is stable begin rewriting in .net c#.

We would just like some input as to what features would be the most useful or if a literal direct re-write would be sufficient.

@Gxani

This comment has been minimized.

@trafis

This comment has been minimized.

@peppy
Copy link
Author

peppy commented Feb 3, 2019

As discussed in another thread, here's a basic interface which I would expect to be available. It can of course be made available in addition to CLI invocation like you already have, but this is an interface I would be using to add to our toolchain:

public class Score
{
    public int ID;
    public DateTime Timestamp;
}

public class Match
{
    public Score Score;
    public Score Original;

    public double Likeliness;

    public Match(Score matched, Score, original, double likeliness)
    {
        Trace.Assert(original.Timestamp < matched.Timestamp);
        Score = matched;
        Original = original;
        Likeliness = likeliness;
    }
}

public class ReplayVerification
{
    public static IEnumerable<Match> CheckTopPlays(int userId)
    {
        ...
    }
}

/* simple usage */

IEnumerable<Match> results = ReplayVerification.CheckTopPlays(userId)
foreach (var r in results)
    Console.WriteLine($"Found match of {r.Score.ID} with {r.Original.ID}");

Let me know if you have any issues during implementation or any further questions (and thanks for your efforts here, it's great to finally see the community getting more involved again!).

@peppy
Copy link
Author

peppy commented Feb 3, 2019

If you are adding CLI, I can recommend using CommandLineUtilities like we have in osu-tools. We also have formatting of tables in there, if that's something you'd be looking at doing. The osu-tools project may help as a template for what you are doing. You could even just fork it and add your own additional project to it.

Still hoping to add more structure to the project to make it more easily extensible (and some of this has been done internally, but I can't release that just yet). If you wait another few days to a week there will likely be improvements here.

https://github.com/ppy/osu-tools

@tybug
Copy link
Contributor

tybug commented Feb 3, 2019

Seems easiest to add this to osu-tools, so that's probably what we'll end up doing.

Would database integration be useful/feasible? If osu's score dbs are formatted the same as the api response (with a b64 encoded lzma for the play data) then loading from there would probably be a lot faster than calling the api. We would of course provide both for users who aren't staff.

@peppy
Copy link
Author

peppy commented Feb 4, 2019

Using the API is fine for now. As long as you create model classes (using dapper is fine), we can easily switch out API for database in no time.

@tybug
Copy link
Contributor

tybug commented Aug 3, 2019

Just wanted to give a quick update on our current developmental status for yourself and anyone else following this thread.

We decided to focus on developing a program that would be immediately useful to a large amount of people (primarily the folks over at r/osureport, but obviously anybody with a particular penchant for catching cheaters) instead of a c# implementation. Although our recent gui release succeeds in making the program user friendly, there's still a lot of functionality missing before it becomes the goto tool for witchhunters, which is our end goal.

The familiarity myself and the other developers (@samuelhklumpers and @InvisibleSymbol) have with python and the ease of development means that we won't switch the project language to c#. We are certainly interested in writing a c# version of the codebase (sans gui), but unless another developer comes along that wants to work on porting it, our current focus is on creating a community tool more so than one used by osu!staff.

I'm sure you guessed as much given 5 months of silence, or have otherwise forgotten about this project entirely. We're still alive and kicking, I assure you, but can't justify working in c# yet. I will be sure to update this issue if that status changes.

@peppy
Copy link
Author

peppy commented Aug 3, 2019

no worries, do what it takes to keep things moving

@circleguard circleguard deleted a comment from rumoi Aug 3, 2019
@circleguard circleguard deleted a comment from Deallly Aug 3, 2019
@circleguard circleguard deleted a comment from jacksonisiah Aug 3, 2019
@circleguard circleguard deleted a comment Aug 3, 2019
@circleguard circleguard locked as too heated and limited conversation to collaborators Aug 3, 2019
@circleguard circleguard unlocked this conversation Aug 23, 2019
@circleguard circleguard deleted a comment from jacksonisiah Jan 3, 2020
@circleguard circleguard locked as off-topic and limited conversation to collaborators Jan 3, 2020
@circleguard circleguard unlocked this conversation Feb 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants