Page 1 of 7

[WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Tue Mar 29, 2016 6:02 pm
by Sulunia
Image
Image
BeatFever Mania is an open-source reimplementation of the "osu! game engine". The idea is to be able to develop your own gamemodes based off on osu's beatmaps, and also be able to bring satisfactory rhythm game experience to other platforms (the ones love2d can currently run in).

Image
BeatFever's current splash screen.

FAQ

Q: What's this? What's osu?

A: osu! (http://osu.ppy.sh/) is a rhythm game based on "Elite Beat Agents" released for the Nintendo DS. Currently it features 4 gamemodes, online scoreboards and has versions for android and iOs.
There is currently another open-source implementation of this game called "opsu!" released on github (https://itdelatrisu.github.io/opsu/).
Seriously, give osu! a go, it has solid mechanics and is very lightweight, impressive if we consider a single person developed most of it single handedly.
--

Q: If another open-source reimplementation of this game exists, why make another?

A: Well, first, because we felt like it. Secondly, because opsu! is written in Java, and covers only Android and PC platforms. Third, we want to make this an expandable game in the future, with users being able to easily develop their own gamemodes and include them in our implementation without having to worry about file parsing or music management.
I also dislike java. No offense guys.
--

Q: Will it have a included game mode?

A: Yes, we intend on implementing the Catch the Beat! gamemode from osu! as a "main" gamemode. Again, in the future, users will be able to create their own gamemodes aswell.
--

Q: What works?
A: Nothing. Currently it parses general information and sections of a given .osu file. Gameplay is mostly implemented, just enough to kill a few minutes at work (provided you have a decent computer at hand). But there is still things to implement here and there, such as spinner parsing.
Segfault also mentioned he will soon enough start working on adding storyboard support.

To play, use arrow keys and hold shift to run.
--

Q: Toaster support?

A: NO!
But we've been thinking of adding support for the SteelSeries Gamesense engine. (http://techblog.steelseries.com/2015/06 ... sense.html).
Overkill? YES! But it would look cool i guess.

--

General stuff
I'm developing this game along with a friend (https://github.com/danielpontello/). He's drawing and creating the graphical assets while i put everything together in love2d. We've been developing this sporadically for about 2 weeks only.
We could always use some help or suggestions! We're hosting the game files and stuff on github: https://github.com/Sulunia/beatfever
Feel free to mess around.

The main game song is called "Identity Part 4" by ShK. We don't own the rights, currently we're using this song as a placeholder to post it here, until i have the time to make a theme song myself.(!)
The version on github does not include this song (and potentially breaks since it's hardcoded to load this specific song file), so we don't get in copyright troubles.

To run this game, you'll need to download osu beatmaps.. A quicksearch on google should be able to return some links from where you'll be able to grab some!

After downloading a beatmap you want to play, run the game, go to the selection screen by pressing "Play" and then just drag and drop any .osz file on the game window to install it.

On the selection screen, double click a song to play it.

To enable ingame graphical debugging helpers, press Shift+F8 ingame and type "debuggingEnabled = true".

Any questions or rants, just post a reply below. Feedback is welcome!

Latest version changelog:
- Particles EVERYWHERE
- Slider pellet amount now varies accordingly to slider length
- autoPlay is no longer indecisive about it's life
- Fixed delay introduced by timer easing
- Songs that have start delays are now working properly

To enable autoPlay, press Shift+F8 and type "autoPlay = true" before choosing a song!

Known bugs:
-Installing too many songs will make the selection screen run veeery slowly.
-Removing a song from the install folder does not update the song selection list
-Some notes are too far from each other, thus, impossible to catch. I will implement the "note boost" mechanic to ammend this soon enough.
- Sliders may rarely overlap. VERY rarely. Please PM me if it happens in a specific song.

-- Raspberry Pi :joker:
- No way to quit game yet! Should fix soon enough :monocle:
- Menu runs pretty slow right now, but ingame works quite well considering the limited hardware.
:crazy:
--I'll make a new branch on github for the mobile version, which will feature overhauled control scheme.


I like the fact the autoplay sometimes doesn't know if it will catch a fruit or not.

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Tue Mar 29, 2016 9:44 pm
by pgimeno
Very nice looking and nice effects.

I downloaded this: http://www.osubeatmaps.com/en/download/406467/ and unzipped it into a *folder* inside Songs/ (NOT unzipped directly into Songs/ which is an important detail that needs emphasizing, since I did that mistake at first). Have you experimented with [wiki]love.filesystem.mount[/wiki]? I'm not sure if it will work as it says it applies to the save file directory.

The difficulty selection screen was a bit counter-intuitive. I didn't get that I was supposed to click twice on the option.

It would be nice if there was a countdown or something when starting a game. It catches you kind of by surprise .

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Tue Mar 29, 2016 10:18 pm
by Sulunia
pgimeno wrote:Very nice looking and nice effects.

I downloaded this: http://www.osubeatmaps.com/en/download/406467/ and unzipped it into a *folder* inside Songs/ (NOT unzipped directly into Songs/ which is an important detail that needs emphasizing, since I did that mistake at first). Have you experimented with [wiki]love.filesystem.mount[/wiki]? I'm not sure if it will work as it says it applies to the save file directory.

The difficulty selection screen was a bit counter-intuitive. I didn't get that I was supposed to click twice on the option.

It would be nice if there was a countdown or something when starting a game. It catches you kind of by surprise .
Yep. The "start delay" is something that not all beatmaps have. The ones that have it actually tell so in the ".osu" beatmap file, but i still don't parse that. It's no big deal, the functions that parse stuff are actually pretty similar if you take a look.

As for the selection screen itself, yes, that really needs some work. The code is currently quite messy even for me, much more that the splash screen/ingame, but it's far from finished, since there will be score displays and stuff.

The reason why i haven't used filesystem.mount is because i'm not sure i can add stuff to the zipped file, i intend on initially saving the highscores on a file along with the beatmap file. If there is a way to do this, please let me know.

I actually added the screen ratio calculation, so now notes actually fall on the X axis they're supposed to be. No collision yet, probably the next thing i'll add as soon as i figure how to calculate the speed the notes should fall according to the screen resolution.

Also, no options screen yet. Not that there is much to set right now, but it's on the list.

Once i have something up and running, i'll begin a small cleanup of the code, by removing duplicate code and refactoring certain bits (such as the THUNDER MEGAZORD getCurrentSize function that can calculate position, box boundaries and scale of a given object AND draw it if told so)

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Wed Mar 30, 2016 2:25 pm
by Davidobot
Sulunia wrote: The reason why i haven't used filesystem.mount is because i'm not sure i can add stuff to the zipped file, i intend on initially saving the highscores on a file along with the beatmap file. If there is a way to do this, please let me know.
There is no way of saving to a zip file, but you can easily read from it. I would recommend saving the highscore along-side the zip file, not in it.
Sulunia wrote: I actually added the screen ratio calculation, so now notes actually fall on the X axis they're supposed to be. No collision yet, probably the next thing i'll add as soon as i figure how to calculate the speed the notes should fall according to the screen resolution.
This should be pretty easy:

Code: Select all

speed = (newScreenHeight / oldScreenHeight) * speedAtOldScreenHeight
If you got the speed right already, you can set your present resolution as oldScreenHeight and the current speed as speedAtOldScreenHeight and get the new speed.

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Wed Mar 30, 2016 3:47 pm
by Sulunia
Davidobot wrote:There is no way of saving to a zip file, but you can easily read from it. I would recommend saving the highscore along-side the zip file, not in it.
That's a possibility. :roll:
I'll actually fiddle around with this and see what i can get.
Although, i'm almost positive that this will actually introduce a delay, and i will also have to do a few changes to the beatmap detection routine, but as mentioned, song installation will be simplified.
Davidobot wrote:This should be pretty easy:

Code: Select all

speed = (newScreenHeight / oldScreenHeight) * speedAtOldScreenHeight
If you got the speed right already, you can set your present resolution as oldScreenHeight and the current speed as speedAtOldScreenHeight and get the new speed.
Speed will be fixed at first while i code the collisions, effects and such. Then i'll start worrying about the speed variations, since it changes according to difficulty values in the osu file.
Still, that code there will help me a lot, since i'll be able to keep the speed constant after screen resolution changes. I'll look into incorporating that to my current code. Thanks! :neko:
What difficulty parameter affects notes (in osu case, fruits) falling speed and how is a mistery *sigh*.

@edit

I just remembered a weird thing. Updating note positions in the gameUpdate loop for some odd reasons gives me flashing notes/insane stuttering, whilst if i do that in the gameDraw loop such thing does not happen. What could it possibly be?

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Wed Mar 30, 2016 3:58 pm
by Nixola
About the weird thing: try to get a very simple .love file that shows the issue. If you can, it'll be easy for us to help you; if you can't, you'll probably find the issue yourself ;)

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Wed Mar 30, 2016 4:21 pm
by Sulunia
Nixola wrote:About the weird thing: try to get a very simple .love file that shows the issue. If you can, it'll be easy for us to help you; if you can't, you'll probably find the issue yourself ;)
The ingame code ("game.lua") is not messy, and it's present on the ".love" at the very first post. But i get your point, debugging is not easy when there is a lot of other code around.

Getting a simple .love file will be a lot of trouble, but i might do it as soon as i have a few hours available. Been a bit busy today with classes you see.

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Wed Mar 30, 2016 6:28 pm
by Davidobot
I would recommend using dt to solve the stutter problem. Also, maybe round your values to whole numbers before drawing, using math.int(coord).

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Wed Mar 30, 2016 8:00 pm
by NightKawata
Davidobot wrote:I would recommend using dt to solve the stutter problem. Also, maybe round your values to whole numbers before drawing, using math.int(coord).
math.int is a Lua 5.3 function, I believe? I don't see any points to Lua 5.3 in the topic, so I don't think he'd be able to do that? Unless you're referring to an external library or the sort.

Re: [WIP]BeatFever Mania ~ osu! Engine reimplementation

Posted: Wed Mar 30, 2016 8:22 pm
by Nixola
math.floor will do I guess