Tag Info

Hot answers tagged

35

The general approach to handling this in classic Win32 programming is to capture the mouse delta each frame, and then reset the mouse position to the center of the screen. You also want to make the mouse cursor invisible, obviously, as otherwise things look ugly. You can do the same thing in XNA, you just work with a slightly different interface. So you ...


20

"How to Program Independent Games" is a really good presentation from Jonathan Blow (creator of Braid) about how to take on the development of a game by yourself. My best advice would be to make the smallest FPS you can (with any language/engine) and then expand on that. Try Unity. That seems like the fastest way to make an FPS these days. Another way to ...


18

Gah! Don't change pitch. At all. Unless you want the player to feel like they're playing a drunk, and fighting the camera. Your focal point is set by the player's control, don't change it. I'm not even sure it warrants a 'formula' - I think you'd be better served with some predictably random motion. Look into low frequency Perlin noise to generation your ...


17

I went to a GDC session this year presented by the guys at sucker punch, discussing how they handled assisted aim and movement for inFamous. My understanding is that Halo uses a very similar system for assisted aiming, and here's the basics: When you hit a button to fire, the shot should always go directly where the reticle is pointing. Otherwise, players ...


16

It has been done before. :) Check out the specialists, a half life mod that has two different bullet time powerups. EDIT to include zzzzbov's info below The way bullet time worked in "The Specialists" from a gameplay perspective was that the player could get powerups that would give limited amounts of "bullet time". When used, a bubble around the player ...


15

Think you're lagging now? Just wait 'till you have to get real-time occlusion information from the server. Now you can walk around from behind a wall and bad guys will suddenly pop into view as the server catches up and sends you the updated occlusion data. So my snarky comment tells it all. Likely the primary reason not to do this is lag and server load. ...


15

Shoot a ray from the camera through the center/reticle into the world. Find out where in the world it hits. Fire the bullet from the gun's muzzle at that point instead of straight out of the gun. Bonus points for animating the hands and gun to point in that direction while aiming around so the bullet still looks like it's firing straight out of the muzzle ...


12

It could be that your scale is off. If you are looking at a brick and it seems to fall slower than it should, you may just have it scaled larger than a brick should be. I had this problem when I was working the physX engine. My entire scene was about 3x too big so I scaled it down and it worked. If 16 seems better than 9.8 but you want to use 9.8. Just ...


11

Entities typically represented by a capsule (cylinder with spheres on the ends) against world geometry (or a simplified collision mesh) for world-ent collision. Stairs are usually either no-collide with an invisible ramp, or below a certain height you usually get a lift up as a side effect of collision resolution. (you'll get interpenetration with movement ...


11

I can't think of any game that has bullet time in single player that transitioned it successfully to multiplayer in any meaningful way. There might be a few of them that solved it by speeding up the player using it, but that kind of defeats the point. Bullet time exists because you want to make the player feel like a badass. You're giving the player a ...


11

It's doable, and has been tried in research before; for a comparison of interest management schemes, see http://dl.acm.org/citation.cfm?id=1230069 As Byte56 said, it may require more CPU, but it may reduce your bandwidth, and reduce the likelihood of wall-hacks. And as Byte56 said, an interest area strictly limited to the player's occlusion-area may ...


11

Strategy games usually send input, while shooters usually send gamedata. However there are exceptions. For example Halo : Reach runs in lockstep in some online game modes, sending only input. There are multiple reasons for this: Shooters have a lot less game data than strategy games It's easier to keep the game in sync It reduces lag as long as the game ...


10

Although I think this is a very subjective question, the ways I can think of creating them are: As you said, billboarding a plasma sprite and using a bloom shader Creating a particle system and using a bloom shader (will look better than above, but takes more power) Both, which by looking at the picture, I'm inclined to believe is the method used in that ...


9

Fundamentally creating a game with a one man team isn't really any different than creating a game with a huge team other than the fact that you don't have as many (or any, really) specialized people or parallelization of tasks. The decisions you would make here are the same decisions you would make if you were running a team who's goal was to get to ship as ...


9

They do exactly what you've just said - either one of those two approaches, or some compromise between them. (eg. accept a small delay and interpolate where possible, and extrapolate when the ping exceeds that delay.) Instead of jumping (also known as 'snapping') back to a corrected position, you typically do some sort of interpolation between the wrong ...


9

Mouselook is now supported in Chrome and Firefox via the W3C Pointer Lock specification. Essentially: document.onmousemove = function (e) { document.body.innerHTML = "<div>dx: " + (e.movementX || e.mozMovementX || e.webkitMovementX || 0); } document.body.onclick = document.body.requestPointerLock || ...


9

I created a basic FPS a while ago and got to the point of creating weapon models too. What you will want to do is to create a 'world model' which is the model actually seen on the character in the game, and a 'view model' which is a high detail model that only the player sees. These Viewmodels should be aligned to the camera during creation, so you know ...


8

There are good answers here. I had to figure it out for myself on the project I'm on, but came to the same conclusions as the Sucker Punch guys (and I had thought I came up with something novel. Baww :( ). I find it useful to consider your entire first person 360x180 degree "panorama" as an "acceleration field". All valid targets create gravity wells which ...


8

I'll state the obvious - FPS games are doing the best they can within the limitations of a single 2D display device. The interesting part - this might change soon thanks to the Oculus Rift project - a VR headset for games. I've seen info that DOOM 3 is fully supported (due to Carmack's involvement) and that Hawken has promised support. There is also work on ...


7

There is a similar concept in many games; that you don't have to explicitly do every little thing. Some things can be assumed, ie. unless you are literally under fire all the time, you will have time to consolidate those 15 rounds into a single magazine. The fact the game doesn't show this is for the exact reason you've already highlighted: sitting down and ...


6

Yes. The typical model for multiplayer FPS in AAA titles these days is peer-to-peer multiplayer (where one player is chosen to be the server, and all others are peers relying on that player for synchronized updates). You can use this model in an XNA game for the XBOX 360. You can get started at the networking architecture for XBOX XNA samples. There are ...


6

To implement this technique you'd just want to adjust the view slightly every frame by some smooth factor, typically along axes that lie within the plane of the viewport. In other words, you want to adjust your camera position upwards and rightwards by some small periodic factor whenever the player is moving. The sine and/or cosine functions can work well ...


6

I'll take a stab. First, it looks like there is a very low-poly mesh used for the actual bullet. It's textured with a partially transparent texture. It's rendered far more brightly than other things in the scene. The texture may even be animated. The 'tracer' may be a simple texture that is not normal billboarding. I think if you rotated this tracer about ...


6

There are many causes of nausea. Here are the environmental factors to consider: The larger the screen, the more likely to cause nausea. The closer the user is sitting to the screen, the more likely to cause nausea. The darker the room, the more likely to cause nausea. Third-party viewers -- non-interactive passengers -- are more likely to experience ...


6

Server-side web languages such as Ruby on Rails are used to generate/serve HTML, JavaScript and CSS. They receive a request from the browser, act on it to make the HTML response, and then send it to the browser and the transaction is done. With the exception of tricks like long polling, they don't do anything dynamic in the browser; that responsibility is ...


6

The industry standard for first-person view simulation in most shooters is to have character models and animations distinct from those used for third-person view. There are several reasons for this: The player has a much smaller field of view upon the world than a real person in the character's situation would, and he lacks other forms of input such as ...


5

XNA games cannot talk to a server, or anything other than other copies of the game in a peer-to-peer manner. It is possible to build an FPS like this, though latency might be an issue if you are trying to send a lot of data. As far as I know XBLIG are not permitted the use of the Marketplace, and any billing done outside the XBox "system" will land you with ...


5

(Optional) The navigation mesh approach is just an extension of the waypoints approach, that allows "wandering". In other words, you can use your navigation mesh to get back to a waypoint graph, by taking the centroid of each polygon in the navigation mesh. (If you are pre-generating the navigation mesh, you can just store the original source points; this ...


5

Your server should not send the state of all players to all players at every tick. Instead it should send a specially crafted message to each client say every 500 ms saying "these x players in your view port should be at these coordinates in 500 ms." Most of the time this will work fine, but if the server realizes it has given wrong information it just sends ...


5

I agree with all here that it won't be fun to watch the guy reload his magazines - however, maybe there could be a system where you have, say, 5 magazines, and when you are not engaged in combat, you reload those automatically. While in combat, those are the ones you have, and so be it. Something like Metro 2033, where you have to pump up the air powered ...



Only top voted, non community-wiki answers of a minimum length are eligible