User avatar
Combo Commander
497 posts
Offline
Source now on Git: https://github.com/akrolsmir/AIBat

AIBat v3.1.jar:
(For some reason, Firefox saves '.jar' files as '.jar.zip'. If you get this, just remove the '.zip' portion to run AIBat properly.)

Image

No, this won't automatically rank your beatmaps :P . However, much like AIMod makes the life of human modders easier, hopefully AIBat will do the same for BATs, by checking things such as consistent tags/leadins/preview/timing, mp3 quality, catmull sliders, etc. This is still a work in progress. Source to be uploaded soon. This is for modders and mappers who want to save time looking at this stuff.

Please see the README to see what is currently in place.

Random Musings
To come.


NOTE: Source.zip, and OsuJavaApps.zip have not been updated recently; click on titles instead to install.

Beatmap URL Formatter:
collapsed text
So... managing a whole bunch of beatmaps in the forums can be a pain if you want to pothole correctly, get the proper artist name and song title, etc. Particularly for Beatmap Projects (such as mine) where the list of beatmaps can get really long.

So, I wrote a simple program to do the formatting. Since all that information is available from the page source of a Beatmap Listing page, the program asks you to copy that source and paste into the box, and generates the proper code.

(In the end it probably would have been faster to do it by hand. But hey, this was more fun!)

Image

Acquired Knowledge:
- Text Areas
- Scroll Panes
- Popup Dialogs

Future Direction:
I might want to try and get a better GUI for this- positioning the objects with a GridBagLayout. If I'm able to learn how to access the web through Java, I might be able to cut out the whole "paste in source text" thing. That will be a low priority, though, since this wasn't meant to be a particularly powerful program. Also, this was coded pretty inefficiently- I didn't know how to use Scanners at the time.


Osu Distance Checker:
collapsed text
This was actually a request made by someone- a program that would list out the various distance-spaces in one text, so one could quickly scan through for spacing errors. To do this, I consulted with ziin and lolcubes to decode the .osu file format for hitobjects, and played around with a few formulas to find out how spacing was calculated. It wasn't that much of a challenge, just a lot of coding work.

To get this to work, put the file into a song folder with .osu files, and run it.

Image

Acquired Knowledge:
- Specifications of the .osu file format and formulas used
- Better understanding of how to use inheritance
- Directory reading
- Scanners
- Decimal Formats

Future Direction:
This actually doesn't work very well, for one reason: sliders. I think it would work 100% efficiently if a map were only circles and spinners, but I still haven't figured out how to calculate the precise position and time of the end of a slider, particularly with things such as Bezier curves (There's a file there, but it's a copy of something I found by jomax on this thread, and it's unused). I went with using the position of the last node and approximating the time, but the latter might be 1 ms off due to rounding errors and the former can be completely wrong. So, the first priority would be to fix that. Additionally, this will calculate incorrectly on maps with multiple timing sections, or varying slider velocities.


If you actually read through all that long text, you're awesome. Comments/ questions/ suggestions/ problem reports are welcome. If something broke AIBat, tell me what file you were using, please.
Last edited by akrolsmir on , edited 22 times in total.
User avatar
Rhythm Incarnate
820 posts
Offline
User avatar
Rhythm Incarnate
526 posts
Offline
I can't run .jar file without .zip
User avatar
Combo Commander
271 posts
Offline
pretty handy tools :)
User avatar
osu!dev
3,457 posts
Offline
The second one is already provided by AiMod basically. It points out any incorrect spacings and you can see the spacing ratios in the top right corner when you select an object.
The first one, what does it actually do? Do you feed it a beatmapsetid and it retrieves the song title for you?

Also, in the future, please consider writing osu! support tools in C# in case they turn out useful enough to include inside of osu!
Gameplay, cosmetic, remark, badly applied mods, ranking guidelines.
Image
User avatar
Combo Commander
497 posts
Offline
lufi10 wrote:
I can't run .jar file without .zip


I'm not actually sure how to fix that, but I'll give it a try. Are you using Windows, and do you have Java installed?

Aqua wrote:
pretty handy tools :)


Hopefully that means these work for somebody :D.

mm201 wrote:
The second one is already provided by AiMod basically. It points out any incorrect spacings and you can see the spacing ratios in the top right corner when you select an object.
The first one, what does it actually do? Do you feed it a beatmapsetid and it retrieves the song title for you?

Also, in the future, please consider writing osu! support tools in C# in case they turn out useful enough to include inside of osu!


Yeah, I realized that- and AIMod is better at it. This is simply meant to be a complete listing of those ratios in the top right corner because AIMod doesn't show that spacing when you open it.

Also, I was wondering exactly how AIMod calculates which times are snapped and which aren't. From playing around with .osu files and the editor, it looks like there's an approximate error margin of about 1 ms from the true snapped time, which is the ticks the Editor shows you. I think those are calculated from intervals of 1/8th or 1/6th of the beat space time (that second number in an entry for a red timing point- I'm not sure what to call that decimal that is 60000/BPM) plus the starting time of that red point, rounded down if it's a decimal. However, this error margin doesn't seem to always work, so I think I missed something.

On the first one: you feed it the source code for a page of beatmap listing, and it will return a list of all beatmaps on that page, formatted for the forums like so:

52. Baby Alice - Pina Colada Boy (Nightcore Mix) ~ Mapped by osuplayer111

Obviously of very limited utility- I just happened to want the function for myself and posted it in case anyone else did too.

I will consider learning C#- thanks for the suggestion! It's just that Java is the first language I've learned and only one I know so far.

Thanks, everyone, for the feedback so far!
User avatar
osu! Alumni
3,196 posts
Offline
For your third program, you could basically include everything asked for in this thread ( viewtopic.php?p=399976#p399976 ) xD.

As for your already released programs, they not bad. Not sure where I would use them, but oh well.
Mangaupdates | MAL

New Queue: https://osu.ppy.sh/forum/t/137990 (closed for the time being)
User avatar
Combo Commander
497 posts
Offline
blissfulyoshi wrote:
For your third program, you could basically include everything asked for in this thread ( viewtopic.php?p=399976#p399976 ) xD.

As for your already released programs, they not bad. Not sure where I would use them, but oh well.


Yes, I was planning on doing that already and had looked at that thread for suggestions. Unsnapped endings should be easily added, song quality/ BG size might be feasible, and so should break warning. I"m not a storyboarder so I'm not sure how to check for a pulse/loop for an epilepsy warning, but I can throw in a suggestion to put one in if there is any kind of storyboard. Hopefully, this will be finished in a week.

Oh, and thanks for answering my questions about the osu file format way back when- that helped a lot in writing these programs!
User avatar
osu! Alumni
5,461 posts
Offline
This looks pretty good, i'll edit this post with some suggestions when i come up with some that arent already on the "To do" list, for now, check for storyboard elements that are on the .osb but have no code assigned to them? (Even worse when the images exist in the song folder as well, and arent being used yet they are included in the sprite library with no keyframes at all)
I bloom in spring
User avatar
osu! Alumni
3,196 posts
Offline
Nice job so far. I love the fact that I don't have to manually check for unsnapped notes now xD.

Other comments:
Inconsistent stack leniency is fine to have, so I probably won't bother warning about it.
You might want to post a warning about low stack leniency (0.2 and below)
You might want to also warn about numbers that are not achievable in the editor (I guess this only applies to stack leniency and circle size.....)

Oh well, will add more when I think of more.
Mangaupdates | MAL

New Queue: https://osu.ppy.sh/forum/t/137990 (closed for the time being)
User avatar
Combo Commander
497 posts
Offline
Sakura Hana wrote:
This looks pretty good, i'll edit this post with some suggestions when i come up with some that arent already on the "To do" list, for now, check for storyboard elements that are on the .osb but have no code assigned to them? (Even worse when the images exist in the song folder as well, and arent being used yet they are included in the sprite library with no keyframes at all)


Those are great ideas. Unfortunately, I'm not a storyboarder so I'll probably need some help understanding exactly how osu processes the .osb and [events] under .osu, to be able to check for this.

blissfulyoshi wrote:
Nice job so far. I love the fact that I don't have to manually check for unsnapped notes now xD.

Other comments:
Inconsistent stack leniency is fine to have, so I probably won't bother warning about it.
You might want to post a warning about low stack leniency (0.2 and below)
You might want to also warn about numbers that are not achievable in the editor (I guess this only applies to stack leniency and circle size.....)

Oh well, will add more when I think of more.


First two comments about stack leniency were both implemented. What are the acceptable ranges for stack leniency and circle size?

Thanks, Sakura and Yoshi, for the input and encouragement!

Also, bumped to say that v0.3b has been released, with a new feature to format all warnings for modding purposes! (i.e., it copies everything onto your clipboard in a BBCode-friendly manner)

For example:

AIBat Warnings
These warnings were generated by AIBat.

[General]
No problems found.

[Storyboard]
No problems found.

[All .osu Files]
Inconsistency in SkinPreference:
- [Hard] :
- [Test] : Ecchi
Inconsistency in uninherited (red) timing sections:
- [Hard]
Red timing points at:
00:00:536
- [Test]
Red timing points at:
00:00:536
00:05:678
There are no tags, consider adding some.

[Difficulty: Hard]
The spinner at 00:00:536 (1) is 42376 ms long, which is longer than 7500 ms.
The stack leniency is set to 0.2, which is below the recommended leniency of 0.3

[Difficulty: Test]
The start of the spinner at 00:06:154 (1) is unsnapped.
The end of the spinner at 00:06:154 (1) is unsnapped.
The start of the spinner at 00:19:958 (1) is unsnapped.
The end of the spinner at 00:19:958 (1) is unsnapped.
The circle at 00:36:491 (1) is unsnapped.
The circle at 00:36:652 (2) is unsnapped.
The circle at 00:36:812 (3) is unsnapped.
The circle at 00:36:813 (4) is unsnapped.
The circle at 00:36:973 (5) is unsnapped.
The start of the spinner at 00:39:060 (1) is unsnapped.
The end of the spinner at 00:39:060 (1) is unsnapped.
The circle at 00:44:357 (1) is unsnapped.
The circle at 01:09:878 (1) is unsnapped.
The circle at 01:16:620 (1) is unsnapped.
The inherited (green) timing point at 00:07:438 is unsnapped.
The spinner at 00:06:154 (1) is 12520 ms long, which is longer than 7500 ms.
The spinner at 00:19:958 (1) is 321 ms long, which is shorter than 750 ms.
The slider at 00:01:178 (1) is a Catmull slider, which is discouraged.
User avatar
osu! Alumni
5,461 posts
Offline
Ok just tried the program myself, and there's some stuff i'd like to point out:
- Not sure how useful exporting the whole thing to clipboard can be, it would be better if you can click on a warning and it copies the timeline minutes:seconds:miliseconds when clicking on timing section warnings or for notes/spinners/sliders minutes:seconds:miliseconds (combonumbers), so that it can be found faster inside the map when needed.
- It'd be better if the difficulties were arranged by star rating, rather than alphabetically, just like osu! itself does (when identical star rating, it then orders them alphabetically).
I bloom in spring
User avatar
osu! Alumni
7,369 posts
Offline
Identical star rating? Poor map design!
ImageImage
Twally Spocks is best pony ♥
Proud user of Etna Sliders.

You'll never pierce my admintium armour. Turns out, someone did!
User avatar
osu! Alumni
5,461 posts
Offline
I know, but so it doesnt break when checking for it

Edit: Or when there are multiple maps at 5.00 star rating (since it can't go higher)
I bloom in spring
User avatar
Combo Commander
497 posts
Offline
Sakura Hana wrote:
Ok just tried the program myself, and there's some stuff i'd like to point out:
- Not sure how useful exporting the whole thing to clipboard can be, it would be better if you can click on a warning and it copies the timeline minutes:seconds:miliseconds when clicking on timing section warnings or for notes/spinners/sliders minutes:seconds:miliseconds (combonumbers), so that it can be found faster inside the map when needed.
- It'd be better if the difficulties were arranged by star rating, rather than alphabetically, just like osu! itself does (when identical star rating, it then orders them alphabetically).


I think I should be able to implement the first, with HTML. It's a very good idea- in absence of AIMod's ability to transfer the clicked time directly to a certain note, this would be the next best substitute.

The second was something I also considered, but I'm unsure of how to determine difficulty stars. Apparently (according to the Term Glossary, if that's not outdated) difficulty is calculated with eyup's algorithm... and I have absolutely no idea how that works. Is this the kind of thing that'd be appropriate to contact Peppy for? Alternatively, I could roughly approximate difficulty with something like number of hitobjects- not a flawless approach, but reasonably functional.
Reply 326 posts jump | 1, 2, 3, 4, 5 ... 22  next

Users browsing this forum: None


Jump to: