   2D Space shooter - Multiplayer experience
  Hello fellow developers!IntroductionMy name is Robin, and i'm new to the game development world. I've always been intrested in programming, and i find it one of the most exciting features of life. The challenge to bring ideas to life and to overcome problems in new, awesome ways. Currently im wokring as a webdeveloper for a small company, and on my spare time i like to fidle around with diffrent languages, such as C or Cpp. After spending some time learing openGL i find it to be the right time to start with my very first Game Project! Before i start going through this i just want to tell you that it's not a revolutionary idea. It's not big. It's not huge. It's just small, and hopefully fun. What im looking for with this thread is an insight to the multiplayer part of my game. I want to know if you like the setup i have planned. So let's get started!Read this before reading more!I will split this thread up into two sections. The important stuff and the more deep stuff. The important stuff will be marked with strong characters so you can find them fast and easy. The deep stuff is just there if you want to know a little bit more of what im planning.Basic game designYou're in space. Enemies fly down towards you, trying to attack you. You shoot enemies before they shoot you. When you killed enough, a wild boss appears! Kill boss, get some cool upgrades, and move on to the next level.This is the basic 2D shooter design. You get to face a few packs of enemies before hitting the big deal. I'm not really contributing anything to this part, seeing as i want to keep it basic and not too complicated. You start off with a normal ship and normal weapons. And the more you advance through out the game the better goodies you get.The multiplayer experienceYou can't win alone, you need friends, 2 friends to be exact. You choose the role of Tank, DPS or Healer. The tank is a big ship, with weak cannons and slow movement. His job is to stay infront of his friends, blocking enemy fire. The dps has better weapon and better movement speed. His job is to shoot enemies, and not the tank. The healer is the fastest player, but has no real attack. Instead of doing damage, he repairs the target he hits. His job is to stay behind the tank and "heal" him, but watch out so he wont heal enemies instead.This is where my "twist" comes into play. The game is going to be over network, with either a master server running or having the player host a server them self. What i'm trying to do with this idea is to bring in the fun from MMO games, with the fun from fast action packed aracade games. What i want is to have pretty small levels at the start, with easy bosses. Those bosses are supposed to drop upgrades for the players. E.g the tank get a new weapon that will expand his size for 10 seconds, blocking more fire. And then move on to more complicated levels, with harder bosses that require tactics to be defeated. The main goal in this game is to get as far as possible. I plan to have the levels randomly generated, meaning we'll have an endless suply of them. I don't want any real ending. This game is meant to be played at times when you're just bored, and want to have some fun with your friends. So no matter how much you have played it, you can always login and face a new encounter.Ending the threadSo, this is my idea. I like to remind you that this is nothing revolutionary, and i know that. I'd also like to say once again; It's the multiplayer part i want tips/advice/critics on.Thank you for reading about my game idea!Hope you'll have a nice day and what not ;>   
  Hey Robin!Although you mention that your project is "nothing revolutionary",it sounds like it may be quite big for a first time project in C & C++.What platform do you intend this project to run on?The multiplayer part - if you could start off with splitscreen mode insteadof network, i think you'd be better off. Then you could take it from there andthink about synchronization, timing and bandwith issues and such.It sounds like you have some experience in that area, though.So you'll probably be good when that time comes,but may i suggest you start off split screen or, at least, have the two playersusing the same machine, like in a classic arcade scroller.Decide which libraries to use. I would recommend OpenGL and FreeGlut,and worry about both sound, physics and network until a later point.For now, i would consider doing some general bounding-box collision detection.If you need proper input handling, it would probably depend on the platformyou target, other than that, GLUT detects keypresses and mouse events too.Hope this helps a bit.   ;Quote:Original post by ZomgbieThe multiplayer experienceYou can't win alone, you need friends, 2 friends to be exact. You choose the role of Tank, DPS or Healer. The tank is a big ship, with weak cannons and slow movement. His job is to stay infront of his friends, blocking enemy fire. The dps has better weapon and better movement speed. His job is to shoot enemies, and not the tank. The healer is the fastest player, but has no real attack. Instead of doing damage, he repairs the target he hits. His job is to stay behind the tank and "heal" him, but watch out so he wont heal enemies instead.This is where my "twist" comes into play. The game is going to be over network, with either a master server running or having the player host a server them self. What i'm trying to do with this idea is to bring in the fun from MMO games, with the fun from fast action packed aracade games. What i want is to have pretty small levels at the start, with easy bosses. Those bosses are supposed to drop upgrades for the players. E.g the tank get a new weapon that will expand his size for 10 seconds, blocking more fire. And then move on to more complicated levels, with harder bosses the requier tactics to defeat.The basic idea sounds promising - there are a few things you haven't given us much detail about which I feel will determine if the game is actually any fun to play:What abilities/weapons will be available to the healer? AFAIK the challenge in traditional MMOs for the healer, aside from positioning themselves strategically, is in timing healing abilities properly. If they fire a constant stream of healing "bullets", where are the meaningful choices for the healer?How much moving will the tank be doing? How large are they relative to the play-area? Do they shoot straight forward or can they also aim their guns independently of movement (this is one way I can think of making the game a bit more exciting for the tank player)?Do enemies move in patterns like a traditional shmup, or is there some sort of aggro system? It seems like enemy AI will need to be more complex than traditional shooter "AI" if tactics and strategy are to be encouraged. Team PvE in MMOs is largely about manipulating the enemy AI (kiting, aggroing)Is there some sort of lobby or matchmaking system? Teamwork seems like it should be very important and so how you find people to play with also becomes key.Really these aren't criticisms of your idea - I'm just pointing out the areas where I think the nitty-gritty details of your design choices will have the greatest effect on gameplay. The main factor is the abilities and weapons you make available to the players - you mention a "grow" ability for the tank... have you got any other abilities/weapons in mind? I think coming up with some more would be a good exercise and is an area where others on the forum will be able to give more concrete advice.;  Woah, awesome response, and so fast!SuperVGA:I'm already working on the engine for this. I have wokring collisions, working enemies, and wokring controlls. My next step is setting up the levels. I have an idea for this though, we'll see how that plays out :) The networking won't be a problem, i hope. I've written different servers for our company that handles file transmittion and user authentication and blah and bleh. I belive i'll do fine. The reason i don't want to split up the screen is cause it's not needed. The part im working on right now will be a singleplayer part. That is my main focus at this time. When that is done, i'll move on to the networking! :) I have no experience with sound though, but as you said, that is for later.Edit: This is meant to be run under... windows.WavyVirus:All characters will have a limited ammount of ammo. And, perhaps, a default abillity with some recharge cooldown or something, to keep the players from really running out of options. But that abillity will only be used as backup, like switching to the knife in Counter-Strike. I want the players to have enough ammo to carry out their tactics, but still not enough to allow slackish playing.The tank will have to move with the players, but slightly less. Some enemies will fire weapons that could kill you in one hit. When you shoot, you shoot in one direction, up. I don't have it planed to change that. But! I will have weapons that act diffrently then the default ones. Perhaps a bomb, that goes X distance before blowing up Y radius.So far, the enemies just move down in a straight direction. This is planned to be changed though. But im not sure how to do that. I don't want any agro system. I want the tanking to be just taking as many hits as possible, so your friends won't get hit. They way i plan to implement tactics is to E.g have a boss use a certain weapon X times during a fight. This weapon could cover the entire screen and therefore having the tank to fire off a special abillity. This abillity could be a round shaped shield spawned somewhere on the map, thus having all players move into that shield before getting smacked with the big guns!My current plan for matching, is that either you have a master server with a lobby, or i release a server client so you can host your own servers (I'm leaning more towards this). Then you give you're friends the IP and they connect.I haven't thought of any abillities yet. My first goal is to get the singleplayer version working, then adding the multiplayer stuff. After that i'll move onto different weapons and abillities and bosses and stuff like thatThanks again you two for such a fast response. This forums is awesome! :)   ;  Sounds like an interesting idea. Probably the biggest obstacle will be networking. It sounds like the core game mechanic requites knowing where your friends are with a fair degree of precision. This is hard to do with network games, especially if you can move quickly.If the tank is moving right, and suddenly switches to moving left, the dps won't know where the tank is for a fraction of a second. If the client is extrapolating movement, the error will be twice the speed of the tank times the latency. So if the tank can move five times its width per second, and the latency is 100ms, the dps's view of where the tank is will be wrong by the width of the tank. Which sounds like it might be a problem if the dps needs to avoid shooting the tank.I suggest either reworking the design to avoid sensitivity to precise player locations, or making sure you can test very early on whether the experience is actually playable under realistic networked conditions.;Quote:Original post by justkevin...or making sure you can test very early on whether the experience is actually playable under realistic networked conditions.This is exactly what i plan to do. Another posibility if this would totaly fail, is to introduce targets. You need a target to shoot, and your bullets/heals will only hit that single target. Unless you use some sort of AOE, in which case the nearby enemies/players will get hit.Hmm... i like the idea of targeting. But how would i manage that. With the mouse? I don't want you to use the mouse in this game, it makes it to complicated. Perhpas i could slow down the enemy movement abit, and let you select targets by Tabbing, like in World of Warcraft. What you say?   