Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1388846 Posts in 66645 Topics- by 59327 Members - Latest Member: scalr

March 08, 2021, 07:31:26 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsSmackball
Pages: [1]
Print
Author Topic: Smackball  (Read 232 times)
Vidak
Level 0
**



View Profile WWW
« on: February 12, 2021, 11:26:09 AM »

About

Hi, everyone! I’m working on a game called Smackball. It’s a fast-paced, competitive sports game for two players, inspired mainly by tennis, squash and air-hockey. The game has local multiplayer and single-player(player vs. AI) modes right now, with online multiplayer in the works. I created the initial prototype of the game during Ludum Dare 46, and back then it was called Untitled Sport Game. Since the LD jam, I’ve been slowly expanding the game, and recently I’ve picked up the pace of development. I’m developing the game for PC(Windows & MacOS).




Gameplay

The gameplay is pretty simple, but I’ve tried to make it so that there’s some depth to it. The basic rules/mechanics are:
  • Players can only move in their own half of the court.
  • Once the ball enters a player’s half, they have to quickly return it(shoot it back) to their opponent’s half, otherwise they commit a foul.
  • Players earn points by either scoring a goal or forcing their opponent to commit a foul.
  • Matches are played in a “race-to-X-sets” style.
  • Players can increase their moving speed and shooting force by sprinting.
  • Players have a limited amount of stamina, which is drained while shooting or sprinting, and regenerated otherwise.
  • Occasionally, players switch their sides on the court.

You can score two types of goals: straight goals & bounce goals. You can also try to force your opponent to commit a timer foul. Each way of scoring is worth a different amount of points. These values, along with some other settings are customizable in-game, so that players can modify the game to incentivize different styles of play.

Straight goal(2 points):


Bounce goal(3 points):


Timer foul(1 point):



Art Style

I went for a clean and minimalistic look, since it’s the only look I can easily pull off right now. Smiley I come from a programming background, and I’m not good at drawing/animating(yet). I think this style also matches up well with the fast-paced gameplay, because it makes it pretty easy to “read” the screen at any time.

Since the initial prototype, I’ve spent some time polishing the game’s visuals, mostly by improving the colors/animations, and by adding post-processing effects. Here’s how the art style has changed since the initial prototype:






Technical

I’m developing the game with Unity and C#. I’m also using ReWired for controller support(works great, especially for local multiplayer games), and LeanTween for tweening. I’ll probably also use either Mirror or Photon for networking, but I’m still researching this.


Status

So far, I’ve implemented most of the core of the game(including gameplay, UI menus, sound effects etc.), and things are in a pretty polished state. The bigger tasks that are still on my roadmap are:
  • Implement online multiplayer: This might be a bit of a challenge, since I don't really have any experience developing multiplayer games. Also, since the gameplay is pretty fast-paced, I'm not sure how well I can get this to work.
  • Experiment with some additional mechanics/game modes: I don’t have anything to share right now, but I have some ideas for additional mechanics which I think would add some depth/variety to the gameplay.
  • The rest is mostly about polishing up/refining things and bugfixing.

I’m hoping to have the game finished in a couple of months, if things go well. I’ll try to update this devlog about once a week every week or two. Any feedback is welcome and appreciated.


Links

I’ll also be posting updates about the game on my website and/or twitter.
« Last Edit: March 02, 2021, 03:50:35 AM by Vidak » Logged

Vidak
Level 0
**



View Profile WWW
« Reply #1 on: March 02, 2021, 03:46:42 AM »

Update #1 - Online Multiplayer

I’ve been working on the online multiplayer recently. I started by researching what networking solutions/frameworks are available for Unity. Since Unity’s old framework(UNet) is deprecated and no longer supported, and their new one(Unity Netcode) is still in preview, and it’s built on top of the new ECS framework(which I don’t use), I started looking for third-party solutions.

Networking Frameworks

This is the first time I’m implementing online multiplayer for a game, so I was looking for something that’s easy to use. My first two choices were Photon PUN and Mirror.

Initially, I thought I’d use Photon. It seemed pretty easy to set up, it has built-in matchmaking, and you don’t need to host any servers. It does come at a cost, though, depending on your number of concurrent players and amount of networking traffic.

I also took a look at Mirror, which is free and open source, it’s based on UNet, and it seems to have a strong developer community. However, you have to make your own matchmaking and host your own servers, if necessary.

After some research, I realized that I probably won’t need any dedicated servers, except for matchmaking. For the actual gameplay, I just need to have two clients communicating with each other. I also found out that Steam provides a networking and matchmaking API through Steamworks, which works well with Mirror.

I decided to try using Mirror and Steamworks. This way I’d be able to implement everything I need, including matchmaking, without worrying about hosting servers and server costs.

Demo Game

I first made a small test-game, to try out the tools and to learn a bit about networking in general. The game is a mini version of Smackball, with private matchmaking (through Steam, and locally - for testing). Here’s a video of the game, with two instances of it running locally(on localhost):





In-Game Implementation

Things were a bit laggy when running on localhost, but when connecting through Steam, everything was a lot smoother. It worked well enough, so I moved forward with this setup and started implementing it in Smackball. I had to rewrite a bunch of my gameplay code, and I broke some things, but I’ve managed to get most of the game working for online matches. Here’s what that currently looks like(running locally):





The main things I still need to do are to implement public/random matches and to add some missing functionality, like match settings customization. The rest are just smaller things and bugfixes. I should soon be done with this, and I’ll be able to move on to other gameplay-related work.
Logged

bram_dingelstad
Level 0
**


Always up for a chat!


View Profile WWW
« Reply #2 on: March 02, 2021, 09:15:00 AM »

Hey Vidak, cool stuff! I'm not that into Unity myself and don't know a lot of the specifics in that field. I do however have a lot of experience with application, network and game design. A thing you might be interested in is doing something with WebRTC/STUN in combination with a web export. This way, you don't even need something like SteamWorks to do the matchmaking for you, and you can run the game from any webpage and even in desktop binaries.

I've only gotten this to work in something like Godot, but it should be possible for something like Unity. Also, don't just take my words for truth or something you need to do Smiley

Just thought I would share, can't wait to see what you'll make!
Logged

If you'd like to see something of my work check out:
The devlogs of the game I'm working on - My website/blog - My itch.io
Vidak
Level 0
**



View Profile WWW
« Reply #3 on: March 02, 2021, 01:28:38 PM »

Hey Vidak, cool stuff! I'm not that into Unity myself and don't know a lot of the specifics in that field. I do however have a lot of experience with application, network and game design. A thing you might be interested in is doing something with WebRTC/STUN in combination with a web export. This way, you don't even need something like SteamWorks to do the matchmaking for you, and you can run the game from any webpage and even in desktop binaries.

I've only gotten this to work in something like Godot, but it should be possible for something like Unity. Also, don't just take my words for truth or something you need to do Smiley

Just thought I would share, can't wait to see what you'll make!

Thanks! Smiley I'm planning to just release the game on Steam. I'm not too familiar with web development, and I don't really want to host and manage my own servers, so Mirror + Steamworks looks like a great setup for me. From my tests so far, it looks like it'll work well enough, so I'll stick with that.
Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic