[LibGDX] eThlete

After over 4 years of reading about WIP-Projects on this forum, I am finally ready to show one of my own “creations”:

The Game
As the title suggests, it is called eThlete, which is a combination of eSports and Athlete 8).
It is a 2D sports game, inspired by Hyper Olympics and similar games.
It is written in Java with LibGDX.
It can theoretically be played with any number of players and up to 4 players in split-screen mode.
There are currently 3 disciplines:

  • 100m dash: Smash a button as fast as you can, to gain speed and reach the finish line before your friends (split-screen supported).
  • Long Jump: Run as fast as possible and hold the Jump-button to increase the jump-angle. Release it at the right time, to jump as far as possible (no split screen).
  • 110m hurdles: Run as fast as possible and press the Jump-button at the right moment to jump over the hurdles. If you hit a hurdle, your speed will decrease (split-screen supported).
  • High Jump: Run as fast as possible and hold the Jump-button to increase the jump-angle. Release it to jump and press it again to start the rotation and try not to hit the bar (no split screen).
  • 800: Try to find a balance between speed and energy and reach the 800m as fast as possible (split-screen supported).

Disciplines that I have planed:

  • [Done]100m dash
  • [Done]Long jump
  • [Done]110m hurdles
  • [Done]High Jump
  • Hammer Throw
  • Tripple jump
  • [Done]800m
  • Javelin throw
  • Marathon ;D

I hope to add even more disciplines and I will continue to update this list.

Depending on the device, you can use the Keyboard, Controllers or Touch-Input to control your athlete.
The Keyboard and Controller-Input is customizable but there are default configs for the following types:

  • Keyboard 1 -> Momentum: [ Space ], Jump: [ LCTRL ]
  • Keyboard 2 -> Momentum: [ NUM0 ], Jump: [ RCTRL ]
  • XBox Controller -> Momentum: [ A ], Jump: [ X ]
  • OUYA -> Momentum: [ O ], Jump: [ U ]

The touch-controlls can only be flipped, by default [Momentum] is on the left screen-part, [Jump] on the right.
For 100m-Dash the whole screen is [Momentum], since jumping is not needed.

UI
The UI is made with LibGDXs Scene2DUI and the VisUI extension.
The UI-Skin is the default one from VisUI, but I replaced the default-font with Googles Roboto.
The Game-Textures are made by myself using GIMP. I did not spent much time on them and as I am not an artist, they look really bad.
However, they should suffice for placeholders and I hope to find some real art somewhere out there :slight_smile:

If you want to try it out, you can find a the up-to-data JAR-Files and APKs here

Any feedback is very welcome!

Thanks for reading :slight_smile:

A nice simple idea! Will there be global high scores / world records? Will there be an ethlete olympics?

You could have a rolling olympics, continually updated with results from geolocated IPs.

This cries out for an android app :slight_smile: Edit: I see there is an APK file…

OUYA? Do people still use that? 0.o

OT: Really nice looking game :smiley: I love the simplicity of it. As asg1 suggested, I think you should add username’s w/ high score capabilities ^^

Thanks for the kind comments guys :slight_smile: Really appreciate it!
Global highscores would of course be a very cool feature, however I first want to focus on different disciplines and the UI/UX.

The idea of eThlete Olympics sounds great, it is definitely on my todo-list now :smiley:

[quote]OUYA? Do people still use that? 0.o
[/quote]
Not sure about that, but LibGDX has build-in mapping for the OUYA-Controller, so it was not much efford adding it.
However, I did only test the X-Box-Controllser, since I don’t have an OUYA or an OUYA-Controller.
I also tryed adding a mapping for PS3-Controller, but it they don’t seem to work on Windows, without emulating an X-Box Controller :smiley:

You’ve got the 100m dash, but have you considered adding the marathon? :slight_smile: :slight_smile:

Now I do ;D
Hitting one single button for over 2h, this could be one of the most boring and annoying games ever ;D
In combination with global highscores, you could see, if there are any people, who actually completed it.

So I guess I have to add a marathon sooner or later :wink:
Thanks for the suggestion :slight_smile:

I just added a new Discipline:

110m Hurdles.

Smash the [momentum]-button as fast as you can and press [jump] at the right moment to jump over the hurdles.
If you hit a hurdle, you will losse some speed, depending on the height, when you actually hit it.
The hurdle then disappears, but in future it will just fall over.

The new discipline is available in Version 0.3.0.
The download link is in the first post and points to a folder where all executables can be found.

I just created Version 0.3.1.

Changes:

LongJump:
[list]
[li]Negative Results are not possible anymore. Instead, if you land before the line, you are again in “running” state but your speed gets halved.

  • Results < 1m count as “Foul” now, since they are more like a step instead of a jump.

[/li]

Hurdles:

[li]Increased the Jump-Force, as jumping over a hurdle was pretty difficult.

[/li]

Touch:

[li]Increased Speed-Mulitplier for Touch from 1 to 1.2 (Controllers use the same). This way, the speed on Touch-Devices should be similar to the one on Desktop.

[/li]
[/list]

The versions are uploaded to my google drive, the link is in the first post.
This time, a HTML5-Version of the game is included too.
If you want to test it, simply follow this instructions:

Just released Version 0.4.0 with a new Discipline:

High Jump

Run by smashing the [momentum]-button as fast as you can and hold [jump] to increase the jump angle.
Release the [jump]-button to jump and press it again, to start the back-rotation.
The goal is it to jump over the bar.
The height of this bar can be set after every successful try, you have 3 tries/height.
The winner is the one who cleared the highest height. In case of a tie, the one with less tries in the previous height wins.
If there is still a draw, the one with less failures wins.

Note:
This is the first version of the high jump and it is not yet completed. The view does not exactly represent the logic and therefore some successful tries count as fail and vice versa.
Also there are stil a few textures missing and some parameters (like speed) need to be adjusted.

The versions for desktop, android and html are all on my google drive, the link is in the start post.
Any feedback is very welcome :slight_smile:

Version 0.5.1 is on my Google Drive now.

THis version includes the new Discipline 800m:

Run by smashing the [momentum]-button and try to find a balance between speed and energy.
If you run too fast, your fatigue goes up, which slows you down over time.

I first wanted to implement 1500m run, but during the tests, I noticed how boring it actually is.
I therefore switched to 800m, which stll seems pretty boring but does not take that long :smiley:

Note, that this discipline is not perfectly balanced yet.

As always, the link to the new version is in the start post.

Some screenshots:

100m-dash in 2 Player splitscreen

100m-dash in 4 Player splitscreen

High Jump

110m hurdles

The next step
The game now has 5 disciplines, but they are not very well balanced yet. So my next goal is to balance the disciplines and refactor some parts of the code.

Probably the biggest problem is the current running-logic. Basically I have a parameter SPEED_PER_STROKE, which tells how much speed you gain for every [momentum]-event.
Then I have a REFERENCE_SPEED and a so called CHALLENGE. The CHALLENGE tells how much the speed will be decreased over time, the REFERENCE_SPPED somehow defines how “hard” the CHALLENGE
actually is.
The formula for the speed is then the following:

speed = speed - (speed / REFERENCE_SPEED * CHALLENGE * delta)

where speed is the current speed and delta is the time since last frame (in seconds).

The overall result is pretty fine, however the speed seems pretty instable, going up and down pretty fast.
This results in high top-speeds, while the average speed seems to be fine.
Another negative side-effect is, that in disciplines like long jump, the result highly depends on the exact moment of jump.
If you jump right after a [momentum]-event, the speed is higher and the jump goes further.

The plan is to somehow replace the speed-parameters with acceleration/deceleration-parameters.
So SPEED_PER_STROKE would become ACCELLERATION_PER_STROKE, the CHALLENGE would not influence the speed, but the accelleration.
The REFERENCE_SPEED would stay as it is and the deceleration/time would become higher, the higher the actual speed becomes.
I hope, that this way, the speed becomes more stable and more realistic.

After that, I would like to adjust the different parameters of all disciplines.
Currently those parameters are all constants, but I would like to switch to variables, so that I am able to adjust them without restarting the game every time.
Those parameters affect the speed, the jump (duration and length), the fatigue etc (depending on the discipline).
The value also depends on the discipline, for example the gravity in the 110m-Hurdle is a lot higher then the one in the Long Jump (currently 34 to 9.81).
This higher gravity, causes a much faster jump, which seems more suitable for the hurdle-run.
In the High Jump instead, the gravity is a lot lower (currently 1/2 of normal), causing a much slower jump. This is, because the you still need to take an action, after jumping and a too fast jump wouldn’t make sence.

Let me know what you think about it :slight_smile:
Thanks

Edit:
Since I reached the limit of 6 consecutive posts, I can’t post any new replies. I will therefore just update this post.

=========================================================================

I just uploaded Version 0.5.3.
This version includes a background for the menus.
The main menu now uses images as buttons instead of the usual TextButtons.
I also rewrote the running logic for all disciplines,and the speed is a lot smoother now.

Let me know what you think about it :slight_smile:
Thanks

[quote]Let me know what you think about it :slight_smile:
[/quote]
Concerning the lack of replies and you hitting the post limit:

You want me to be 100% honest?

I’m not interested in the sports/running-game genre at all, that there’s not a single video showing the gameplay but lots of text filled with boring details of the development makes it ten times worse.

Distill your text down to the essential and post something interesting and you’ll get more attention and replies, simple as that.

About your game:

The game runs smoothly.

There was seemingly no way of telling if my button mashing was good or bad except my current speed, you talked about an exhaustion mechanic, well then where is the feedback for the user?

The buttons desperately need a custom skin with visible borders.

The button assignment needs to be shown to the player without him having to discover the options menu first.

The quit button is way to small and hidden, i couldn’t find it at first, the options-menu button looked more like a highscore/ladderboard button, i only discovered the options menu by accident.

The graphics options are very limited, where are the other resolutions?

@VaTTeRGeR thanks for your reply :slight_smile:

I actually thought, that people on jgo are interested in the technical details, at least I always like to read about that.
Thats why I wrote a lot about those things.
I agree, that I should post some viedos or at least GIFs, showing the game in action.

[quote]There was seemingly no way of telling if my button mashing was good or bad except my current speed, you talked about an exhaustion mechanic, well then where is the feedback for the user?
[/quote]
That depends on the discipline. In most disciplines, the current speed is a good indicator, especially in the sprint and hurdles discipline.
Only the middle distance disciplines (currently only 800m) have an exhaustion mechanic. The middle label on the bottom shows the current exhaustion, the higher it is, the slower you get.
However, I still have to work a lot on it, the 800m is not very balanced yet.

[quote]The buttons desperately need a custom skin with visible borders.
[/quote]
It is on my todo-list. I just recreated the main menu, with the background and the different medal-styled buttons.
I definitely need to scale them, especially for touch-devices.
All other UI-elements are currently using the default skin from VisUI and are only placeholders.
I just need to practice a little more with inkscape, then I’ll try to replace that skin :slight_smile:

[quote]The button assignment needs to be shown to the player without him having to discover the options menu first.
[/quote]
You are right, I could probably show them somewhere on the bottom. I knew about this issue, but I don’t gave it a high priority right now, as there is quite a lot to do.

[quote]The graphics options are very limited, where are the other resolutions?
[/quote]
The options (except the controls) are just place holders. Audio is still empty, video just has a few, common resolutions and a full-screen button.
However, you can always resize the window to fit your needs (on desktop). On mobiles you always have fullscreen of course.

Thanks fou your feedback, it was really helpfull and i try to work on the things you mentioned :slight_smile: