forum

osu!sdk (client SDK)

posted
Total Posts
57
Topic Starter
peppy
While this is still very incomplete, I thought I'd point out the existence of this project to see how much interest it gathers. The beginning of an SDK framework to allow external components to interact with the osu! client. Initial focus is on AiMod extensibility, hopefully bringing AiBat functionality into osu! and allowing much more as well.

http://peppy.github.io/osu-sdk/

For all those devs out there that want to help out or just show interest, watch/fork on github and post issues over there as to what you want to see in the SDK. Keep in mind osu! doesn't yet support loading external libraries, but I plan on adding this support (in the test build) this week.

Update: Added a guide which should get even a newbie setup and ready to make some awesomeness. View it on the github wiki.
palion
good to see this :)
Krzysiek
Stuff I'd like to see regarding SDK:
1. Obviously mouse/keyboard actions (movement & clicks). Will it be possible to output movement data like time<->kbd/mouse action? Current CtB auto-mod completely disregards velocity constraints and it makes it harder to debug created maps (it looked like auto motion is a set of time<->position elements not time<->kbd/mouse action items).
2. Support for other game modes (Taiko/CtB). Few examples:
- slider in standard is a pretty straightforward object (begin/end/loops/tick rate or something like that), but in CtB it's divided into beginning-ending fruit, small droplets and big droplets
- horizontal jumps create hyperdashes - the hyperdash speed must be somehow readable/determinable by SDK user
- spinners in CtB generate randomly placed fruit
Drafura
Pretty nice idea here,this could be really usefull for modders. And the minimum for ctb modding should be getting quickly the horizontal spacing of two objects without modifying the map as we have to do actually.
Topic Starter
peppy

Krzysiek wrote:

Stuff I'd like to see regarding SDK
None of this falls under the scope of this SDK.
nanashiRei
I'd love to see being able to easily read the currently playing song title for stuff like mIRC/kvIRC integration (Just like AMIP with Winamp and stuff). And i love that this is C# :D the only language besides php and python that i really understand :D
Sushi
Ohmy didn't see that, going to try it out tonight :D

I guess it's already in the scope but will there be something like a new tab in the menu bar like "add-ons" where we could add commands?
Eirene
ohgod... not gonna sleep until Ive done something cool with this ._.
YodaSnipe
So what exactly are we limited to with this SDK? Are there any specific rules to using this?
Topic Starter
peppy
At the moment you can implement AiMod modules, so it's editor-only for now. You can request more functionality/exposed APIs by filing issues on github. May I suggest that you start with AiMod just to get a feel for how things will work, and because it is a nice contained environment, before requesting more advanced stuff.
Yuugo
Man I wanna look into this, but I don't even know what I want to implement.. guess I'm just gonna start by reading through your code then and translate my java knowledge into C# syntax. Thanks for the opportunity peppy!
woc2006
No one care github issues anymore?
Topic Starter
peppy
I don't think you understand the art of waiting. I will get to it when I have the time.
Krzysiek
Didn't you mean le art of waiting?
Yuugo
So let me try to get this clear. Right now you are giving us access to a limited amount of code and let us play around with the AiMod. When we feel like we have a nice idea and are able to implement this through proper coding we can request more access where necessary? I'm not entirely sure what out possibilities are with this SDK. Could you clarify a little on this peppy?
Topic Starter
peppy
Yes, at the moment it lets you have access to beatmap content via AiMod. It is intended to eventually allow AIBat (amongst other potential projects) to enhance the editing and modding process.

At the moment the possibilities are:
* Reporting new information about a beatmap via AiMod.
* Editing basic elements of HitObjects.
emergist
Awesome! It makes me want to learn C#.
Marcin
Maybe you can make a list of function, which we can use ? (I don't have supporter so I don't know how it works.)
Topic Starter
peppy
You can view the source on github. You don't need supporter status to view it.
Marcin
BTW: Could you make writing addons in more friendly-user language (Lua, python, perl?), i've never started learning c++/c# because of it being really complicated. (or maybe I should learn, and make addon to sdk which would allow making addons in other languages... addonception)
Topic Starter
peppy
I do not see the need for a different language for this. c# is not much more complicated (if at all) than any of the languages you list, and allows for the tightest integration.
Marcin
Am I wrong or something?
Second is used at GMod (aka GLua language - edited Lua), now see how much they made with usage of this language which is in your opinion, less functionally
(There is even CPU in game)
Topic Starter
peppy
You are calling brackets and extra commenting more complicated? I never said "less functional".

Please do not start a language war in this thread; the osu!sdk will only be made available in c#.
Marcin

peppy wrote:

You are calling brackets and extra commenting more complicated? I never said "less functional".

Please do not start a language war in this thread; the osu!sdk will only be made available in c#.

I meant some senseless (for me not knowing this language) things like public override AiModType Type or protected override void RunAllRules(List<HitObjectBase> hitObjects) or even namespace AiModTestProject
Topic Starter
peppy
namespace keeps things organised.
the override is setting the type of your module.
the runallrules definition is providing you with every hitobject in the song (with r/w access).
i'm pretty sure putting a few hours into learning the language would teach you these things, though.
Marcin

peppy wrote:

namespace keeps things organised.
the override is setting the type of your module.
the runallrules definition is providing you with every hitobject in the song (with r/w access).
i'm pretty sure putting a few hours into learning the language would teach you these things, though.
Then, find me some books/ e-books with GOOD explained things, (not just mentioned, like almost 70 % of internet tutorials)
Btw: i meant those prefixes like protected, etc. not the functions names.
Topic Starter
peppy
As much as I'd like to, I'm not here to educate you, sorry. Maybe start a thread in General Discussion asking for help if you are interesting in learning a language. (personally i have never read a book and just learn from doing, so can't help here)
awp
if you're using the Visual Studio IDE to write stuff, some of their error code explanations provide some insight. Otherwise, scour stackexchange, it's a pretty good site for finding help
deathsign
It's really good to see this!
I'm implementing a OSU! on Windows Phone 7 using original resource package . I have finished main game logic.
But I have some problem with the storyboard....
Maybe you can write a document for the .OSU file format...
Soaprman


Might try some other stuff with this. Don't have any really good ideas though...
Marcin
Yey don't hate me but c# was pretty easy... /me runs FAR FAR FAR FAR away
And one thing bother me: it's limited only to AiMod, why don't you add functions for:
- Custom menus in editor mode <i mean those line with File, Edit, View etc., to be able to add one>
- Generating SB script <functions for adding SB _F, _S etc.>
- Adding custom panels <like osu!direct panel which appear on right>
Topic Starter
peppy
Custom editor modes may be supported.
Generating SB script can be added.
Custom panels will not be supported.

If you are looking for specific API additions, please file issues on github with examples of how they will be used.
Marcin

peppy wrote:

Custom editor modes may be supported.
Generating SB script can be added.
Custom panels will not be supported.

If you are looking for specific API additions, please file issues on github with examples of how they will be used.
Done, Issued on github.
RixTox
Why don't we just make OSU! an open source project?
GNU is always the best!~ 8-)
Even it's under Windows OS..
Topic Starter
peppy
Added a new method to get arbitrary slider (ball) position. After a short discussion about people working on their own star rating systems, I checked the SDK and this was basically the only thing missing to allow for most calculations.
Kert
I got a strange error:
Ошибка	3	"osu.GameModes.Edit.AiMod.AiModType" не содержит определение для "Errors"	e:\prg\peppy-osu-sdk-5be32ec\AiModTestProject\AiModTest.cs	17	36	AiModTestProject
Meaning there is no definition for "Errors"
VS2012

UPD: Used Meta as a workaround instead of Errors which doesn't exist.
Topic Starter
peppy
Fixed this, thanks. Let me know how you go with it, and if you need anything else added.
Kert
Thanks!
While fiddling around with it I just realised.. are there no methods for returning beatmap difficulty settings?
Can they be added too? This information is quite important for star difficulty calculation
show more
Please sign in to reply.

New reply