• Content count

  • Joined

  • Last visited

Community Reputation

169 Neutral

About vidhvat

  • Rank
  1. Showing depth in a 2D, top-down game.

    I don't know if the camera is stationary, but if it isn't, you could do some subtle parallax scrolling to add to the effect. Although I'm pretty sure it won't be enough to bring out the depth, you'd need something else to go with it.
  2. Character Progression and Balance

    Usually, unlocks and rewards are put into games to get people to grind for more points. Pople end up playing more and more even if they aren't really enjoying the game all that much, the achievements and unlocks drive them in some way. I'm in the CS:GO beta, allow me to share my experience with you. The first day I loaded up the game, I failed at it really hard, I couldn't kill a thing and always ended up at the bottom of the leaderboard. I played and I played but nothing seemed to work out. Now if it was one of your run of the mill shooters, I would've been unlocking cool gadgets and unlocks and I would've slowly gotten stronger if those weapons give me an advantage in some way. Here my xp metric in-game is helping me out. But that doesn't happen in CS:GO at all, this is what you have to decide. Would you like your game to take the players' hands and lead them forward or let them 'learn' and gain 'experience' in the real world sense, and become better at the game? The former is considered safer in today's times, this is what makes older games a lot more fun for some people. After spending a couple of more hours in the beta, I finally understood the ropes, I got a feel of the recoil on every gun, I learned that my accuracy is pathetic while moving, and crouching while shooting helps a lot. It gets better if you pay more attention, some guns have a directional bullet scatter, sort of like a biased random deviation on them. Its very satisfying to figure these things out, but not for most gamers. In a survival shooter, all these things can be applied quite easily. You don't have to spoon feed all the facts, for example, dismembering limbs slows movement, headshots are fatal (duh), aiming for the eyes makes them blind, and the special ones with the fatter arms explode to deal damage to their allies. Stuff like that, I'm sure you get the drift.
  3. Character Progression and Balance

    Not asking you to alter you design in any way, but heres some food for thought. How does experience relate to the game, I'm not talking about the variable inside the game, but the players experience playing the game. You said that you could maybe unlock special attacks for high level players, or buff their strength/survivability, but ask yourself, is that really necessary? Why do you want to allow the player to level up at all, when balance needs to be maintained at all times? Of course you need to show the players that they are growing stronger as they play more and more which is what draws players to these kinds of game, but I'm sure it can be managed aesthetically. Pick a game like L4D, or CS for PvP, the xp bar in these games (if there are any at all) dont affect the attributes of the players in any way (lets leave out the unlocks for a bit please). What makes a person with more xp better than the other? It doesn't, the metric in that case is just 'guessing' how experienced the player is (proportional to kills etc.) which is not always right because a person who has played more but is pathetic can have more xp than a pro. My point is, PvP and the xp system can be detached from each other if you want, it all depends on how you want the xp bar to affect the game.
  4. Character Progression and Balance

    Your player progresses by gaining experience which is done by killing enemies or receiving other bonuses (exploration, side quests etc.). This experience adds up slowly and takes you to the next level. Once the character reaches a new level, his abilities are boosted just a little. He gets more damage into one of his spells, and is able to take more damage as his defenses goes up. With this, the game also slowly levels enemies to maintain that balance, which is what you need. Heres my idea, treat experience as a simple number, and don't level the character in ANY way whatsoever. In turn, make the difficulty (enemy strength/AI) a function of this number (the experience) so that as players play more and more, their enemies become harder and harder. So a lvl 100 player will simply spawn harder enemies than a lvl 1 player, but both those characters will be exactly the same (strength/resistance/damage). With this, you'll have precise control over your difficulty curve, you can actually draw it out as a function of the players' experience (sawtooth, linear, quadratic, exponential), but at the cost of lesser choice for customizing your character. I'm quite sure that a system like this would also work well in a non-fantasy setting.
  5. Hypothetical situation, let's say that hacking is not that big an issue (No pub servers, coop only, closed platform). The game is more like a shooter rather than an MMO, the collision detection and damage to enemies is quite a physical affair (speed,acceleration etc.) rather than a pre-calculated (lock-on target) attack mechanism. Would you still suggest a server-knows-all set up? Its really bugging me here because its really tempting to have the clients do all the work because they're the ones that have to have all the information at all times no matter what. If I try to go for a server authoritative approach, I always end up having two copies of all the data being managed, sometimes even generated (item infos/effects/powers) on both the client and the server! Isn't this supposed to be bad design? Or is this the way to go?
  6. You have a couple of really simple choices in front of you here. First, you could use flash or java which in my honest opinion is not the right way to go. If not plugins, you could use the canvas but it'll be quite a headache to draw and place text inside it. If I were you I'd do it inside HTML, take a div, assign an appropriate font to it, place it wherever you want it, and edit the text inside it on every update! Just take care of the fonts you use, preferably mono space.
  7. What you're saying is true, one should start by throwing everything to the server and then bringing stuff back to the client if required (bandwidth etc.). Hacking of course is a big issue when we're doing a multiplayer game, but the problem I'm having here is a little different. Let's say during the process of siphoning off work to the client, I decided to give control to clients, of objects that can be affected by both parties. The behavior of those objects (for eg. enemies) is a function of the characters of both the players. Synchronization is possible but only if these objects were governed by the server, or only one of the clients. Their behavior is deterministic, but we still can't be too sure that both the clients will kill the enemy at the same time, if at all. I took Diablo as an example because it closely resembles the kind of game I'm trying to set up here, but I have absolutely no idea whatsoever as to how its being done. When there is so much a character can do, where do objects reside, where do the characters' stats live, are two separate copies of the same data handled on both the server and the client, is the client only sending the damage done to each enemy, are effects of a spell transmitted to the server after they affect an enemy, or is hit detection done on the server and then broadcasted to all the clients etc. etc.? I suppose my question is too broad, sorry.
  8. In a First Person Shooter one can get away with doing all decision making on the server, and simply updating objects on the client. But take a game like Diablo 2(not an MMO) where there is a great variety of attacks, damage, spells etc, what all does the server do in this case? Is the client a dumb terminal that is updating objects and running animations, or is it the other way around where the client is doing all the processing(hit detection, damage to enemies etc.) and sending only 'necessary' updates to the server? Taking this game as an example, could you tell me how you'd set it up for a hack and slash game? I have no experience in this, but I'm trying to set up a client-server architecture where, preferably the game runs mostly on the client. I know this question is quite abstract, but if you could just point me in the right direction, that'd be great!
  9. Exactly! I'm doing it the same way! Though my game doesn't involve any projectiles, there's allot of player-player interaction, which requires synchronization between peers.
  10. [img][/img] Okay, brace yourselves, here it comes: I'm doing P2P!
  11. Bitfields. I don't think it's necessary, if I am going to use up all the possible values a byte can represent! This would be a good thing to use where I have smaller values that are being sent, for example, booleans! Nice link though, thanks! So here's another question. Is it true that most clients just send their user input to the server? I wonder if it really works that way. For example, in my situation, I can send messages(via console) to objects in the world. Right now, I am sending the character code, the object code and the action. Would it be fine if I didn't send the object code and let the other clients figure it out themselves as to which object is closest to the player. I think, It's a gamble really, because if the position is not synced, we're in big trouble! Right?
  12. So, I was pretty much on the right track there. Thanks! [quote][color=#1C2837][size=2]By the way, when you say reliable UDP layer. Do you take into account packet loss, out of order packets, etc?[/size][/color][/quote] Yes I do :-)
  13. I want to know how a game encodes it's messages that are sent to all the other users playing the game. What I have is a simple game, with characters and objects. Players, as characters in the world, can pickup, drop, give, receive and interact with these objects. Currently, in the engine, every object and character has a url, more like a code to identify it, a single byte in this case (char). I have no prior experience with network programming, but right now I have a thin layer programmed over UDP that allows me to send and receive simple packets in a reliable fashion. What I want to know is, how do I pack all this information, in a generalized manner? What I can think of, is give every function a code, like, dropping can be 1, picking up can be 2, giving can be 3 etc. Then just send the character code, object code, and the function number. This information can be decoded and performed on all the other clients. Is there a more elegant way of doing this?
  14. I'm a 'Programming Guy' too, I do this like a hobby as well, but if you're serious about seeing your game in action, I suggest you should finalize your design doc and start working on it. If you think what you wrote is not good and it needs to change because you thought of a better way to do something, don't. Stick with it, there's always another game to put those ideas in. Sure, it's important for the design to be perfect, but don't change it drastically every time a new idea comes to mind!
  15. I have been programming games in C++ for a while now, and this next game that I want to start off with would be nice as a browser game. We're basically looking at a multiplayer 2D top down game, more like a scaled down version of an MMORPG. I can't decide on what to use, I'm split between Flash, Java, HTML5 and what not. I have very little knowledge of everything except Java, but I am willing to work with and learn, whichever is the best.