Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

AppGameKit/AppGameKit Studio Showcase / [WIP] Online Multiplayer Game

Author
Message
BuccaneerBob
AGK Developer
13
Years of Service
User Offline
Joined: 18th Aug 2010
Location: Canada
Posted: 8th Dec 2014 19:08
Hey Everyone!

I've started tackling my next project with AGK2.0

This time, I wanted to tackle something a bit more challenging. The end goal, will be a persistent online paintball field, where players can drop into a lobby, purchase gear, drop into a field and play against players, and return to the lobby whenever they desire. It will also keep track of your player progression, your overall worth, equipment, kills and deaths etc.

The Client and Server applications are both built with AGK2.0 Tier 1. The only issue I will experience is requiring a dedicated server that supports OpenGL for rendering the server application.

I've had a lot of success with tests so far.

As it stands right now, the current features are completed and working as intended.

1. Account Creation
2. Login System
3. Multiplayer Map (Currently able to use the Joystick to move around the world, see other players in the world. Other players move and are animated as well. This works great.
4. Player Name Plates to identify each player.
5. Global Chat - able to send messages to other players.


Screenshot time - ignore the horrible programmer art!

1. The Server


2. The Main Menu (Client Side)


3. Multiplayer and Chat


3. Multiplayer and Chat


4. Account Creation


Robert Janes (Samu Games)
http://www.samugames.com/artifact
Jack
19
Years of Service
User Offline
Joined: 4th Oct 2004
Location: [Germany]
Posted: 8th Dec 2014 22:15
This looks like an awesome project
Give the players a gun and let them shoot
And then release an alpha, so we can test it.
I would really like to see this game finished, the screenshots are looking very good The bird-view perspective reminds me of the old GTA.


[/url]
BuccaneerBob
AGK Developer
13
Years of Service
User Offline
Joined: 18th Aug 2010
Location: Canada
Posted: 8th Dec 2014 23:46
Thanks for the kind words Jack.

I'll see if I can't add in some combat tonight or tomorrow and perhaps a little tiny playable field to play on.

I would really love to stress test AGKs networking functions as well, to see just how many players it could support on one server without running into latency issues.

Robert Janes (Samu Games)
http://www.samugames.com/artifact
Jack
19
Years of Service
User Offline
Joined: 4th Oct 2004
Location: [Germany]
Posted: 9th Dec 2014 03:40
Upload an APK, I will help you test this app


[/url]
Paronamixxe
AGK Bronze Backer
12
Years of Service
User Offline
Joined: 10th Feb 2012
Location: Sweden
Posted: 10th Dec 2014 21:07
This looks awesome! Keep us posted!

And as Jack said, upload an APK so we can test it for you.

cheers
BuccaneerBob
AGK Developer
13
Years of Service
User Offline
Joined: 18th Aug 2010
Location: Canada
Posted: 12th Dec 2014 18:29 Edited at: 12th Dec 2014 18:38
A bit of progress on this over the last day. Work has kept me busy (paramedic by profession).

I've added projectiles into the game, this is how they work.

Your gun shoots, and the time the bullet stays alive, as well as how fast it travels, is based upon the weapon you are using.

Chatter and movement is working as intended as well.

Ignore the horrible FPS, it's recorded using Hypercam. This video shows me playing on PC while the other user is logged in via Android Tablet.

I hope to get collision and score tracking done this weekend, and then I'll release an Alpha build for people to play!


Playing with another user


Playing Solo


Robert Janes (Samu Games)
http://www.samugames.com/artifact
BuccaneerBob
AGK Developer
13
Years of Service
User Offline
Joined: 18th Aug 2010
Location: Canada
Posted: 12th Dec 2014 19:18
I've penned out how the game will ultimately play, and a rough timeline of when I'd like to get each feature done.

Game Summary:

The game will be a persistent online paintball field, where players connect into the waiting area, and shop for armor and weapons. Matches will start frequently depending on the number of users that have queued up for a match. If more than one user queues up for the next available match, then an elimination or team-elimination match will begin. If only one user queues up for the next match, he will be placed available 5 "bots" in a solo-elimination match,

Every time a player "splats" another player or a "bot" they earn cash. They may use this cash in the holding area, to buy new weapons and armor. They can also save up enough cash to change their appearance.

The game will support ads for revenue and remain free to play for all individuals.

I won't know exactly how many users a server can hold until some real stress testing occurs, but once I have good numbers, I will be able to limit the number of logins or add a "server selection" menu.

Roadmap:
Week 1 - Loading Map Objects and Terrain, Projectile Collision, Misc Server Side bug fixes causing latency issues on disconnect(s). Still hunting this dastardly bug down!
Week 2 - Holding Area, Match and Queuing System
Week 3 - Stat Tracking, Cash and Store System
Week 4 - Graphic, Sound and GUI improvements
Week 5 - Week 7 - Open Play Testing
Week 8 - Launch with a bit of luck!

Robert Janes (Samu Games)
http://www.samugames.com/artifact
Blendman
10
Years of Service
User Offline
Joined: 17th Feb 2014
Location: Arkeos
Posted: 13th Dec 2014 17:14
Hi

I have tried to make a little network game. I would like to try to use PC and android tablet.
Do you use the broadcast feature to connect your tablet to your server ?

http://www.dracaena-studio.com
unlikely
12
Years of Service
User Offline
Joined: 5th Mar 2012
Location: Ohio, USA
Posted: 13th Dec 2014 20:44
Sounds like a cool, challenging, project!

(If you are having trouble finding a server that supports opengl, is there a reason you cannot write the server in something else?)
Grayvyn
15
Years of Service
User Offline
Joined: 30th Oct 2008
Location: Southern California
Posted: 16th Dec 2014 20:08
Quote: "Sounds like a cool, challenging, project!

(If you are having trouble finding a server that supports opengl, is there a reason you cannot write the server in something else?)"


I made a C# server because of this and ended up hacking the AppGameKit network code to get it to work but it has issues when too much data sent too fast. Probably just my code. And I am not sure how it will work when 20, 50, 100 players try to connect and play.

An opengl sever host would have been useful.

Oh, but also, the AppGameKit network code still lacks a "Disconnect" so you can boot connections off the server. This is important for kicking out of date clients or connections that are mis-behaving, hacking the network, or spamming it, etc. I asked for it a couple years ago. Tier 2 might have something in the library, I think I was told.

BuccaneerBob
AGK Developer
13
Years of Service
User Offline
Joined: 18th Aug 2010
Location: Canada
Posted: 16th Dec 2014 21:57
You can check if a client has disconnected using the GetNetworkClientDisconnected. I call this every few seconds to see if a client has disconnected and then I free up that users data. The only unfortunate thing it does is it still increments the total user count by one as oppose to opening up a previous client ID to allow for a new users to use it. I have found this hasn't been an issue yet as my player array uses an Active Flag, that gets set to false if that Client has returned as disconnected.

Robert Janes (Samu Games)
http://www.samugames.com/artifact
Blendman
10
Years of Service
User Offline
Joined: 17th Feb 2014
Location: Arkeos
Posted: 17th Dec 2014 09:48
Hi

Do you see that AppGameKit is now available for linux ?
So, you can create a server on linux which supports opengl ^^.


Quote: "Disconnect"
do you mean
- by the client : to know if he's disconnected
- from the server to ban the client if needed

1) The client : you can use GetNetworkClientDisconnected()

2) From the server, for moderation, ban... : you can add a flag "ban" in the list of the client. If a client need to be banned from the server, you set the flag ban to true/1, and you don't receive or sent to him information.
You can add a function on your client, with a flag in the message to disconnect the client from the server

http://www.dracaena-studio.com
Grayvyn
15
Years of Service
User Offline
Joined: 30th Oct 2008
Location: Southern California
Posted: 31st Dec 2014 18:05
Quote: "
2) From the server, for moderation, ban... : you can add a flag "ban" in the list of the client. If a client need to be banned from the server, you set the flag ban to true/1, and you don't receive or sent to him information.
You can add a function on your client, with a flag in the message to disconnect the client from the server
"


That works if the client you made is doing the connecting... but if someone is using their own client or a network hacking tool then that is useless. Once someone knows your IP and port they can even use AppGameKit to write something that connects a gazillion times and ties up all your connections. Then they can ram data down the line and lag everything.

I been making online games since 2000 and have run into plenty of "creative" people messing with my stuff.

That's why AppGameKit needs a server side disconnect for any serious, modern client/server game.

xCept
21
Years of Service
User Offline
Joined: 15th Dec 2002
Location:
Posted: 1st Jan 2015 06:07
Looking good! I haven't done any work with AppGameKit networking commands, am wondering how stable it behaves cross-platform from Windows to iOS to Android to Mac. Have you tested various platforms together yet?
BuccaneerBob
AGK Developer
13
Years of Service
User Offline
Joined: 18th Aug 2010
Location: Canada
Posted: 2nd Jan 2015 21:55
The way I'm currently handling disconnects is fairly simple.

At the moment, it loops through all the connections, and checks for disconnects and properly logs the client off if that client has disconnected.

I created a LastPacket timer on the Player Array, so whenever the server receives a "valid" packet from the client, it updates the LastPacket timer. If the server hasn't received a packet from a Network Client in 3 minutes, it closes that connection.

In my method of handling data, where it looks for the float header, if data is received that doesn't have a valid header, it closes the connection.

Robert Janes (Samu Games)
http://www.samugames.com/artifact
Grayvyn
15
Years of Service
User Offline
Joined: 30th Oct 2008
Location: Southern California
Posted: 5th Jan 2015 23:26
Quote: "
In my method of handling data, where it looks for the float header, if data is received that doesn't have a valid header, it closes the connection.
"


In Tier 1, what command you using to close the connection on the server side?

Login to post a reply

Server time is: 2024-03-29 15:48:03
Your offset time is: 2024-03-29 15:48:03