Tag Info

New answers tagged

0

I'd like to examine two multiplayer class-based FPS games with support classes as case studies: Wolfenstein: Enemy Territory and Team Fortress 2. Both have separate classes that give health and ammo, and I think it's helpful to consider both types of support. Enemy Territory has three support functions - healing, reviving and ammo - given by two classes - ...


1

When dealing with different frames of reference interacting with each other instantaneously, you have to compromise somewhere, you cannot have everything consistent everywhere; that's a fact of life. The scenario you have outlined is basically this: the shooter thinks she has hit her target, but the target thinks she has successfully hidden behind an ...


0

(Answer to the more clarified question in your edit) MongoDB is perfectly suitable for storing user data, such as emails and passwords. As long as you are taking all the same precautions you'd use for an SQL database (hashing passwords and such,) there should be no additional security issues.


0

I think what you are asking here is whether to use authoritative servers or non-authoritative servers. Unity network documentation has a nice discussion about each mode. Also if I'm not wrong, some people call semi-authoritative to a mixed approach where some state is handled by the server and some by the client. I think Unity discussion should give you a ...


0

I suggest to have a compromise on frames delivered(fps), anyways without a strong server to handle and maintainance cost building up, you would consider switching to provide players with full functionality of game resources and less(relatively) attention to getting the state quickly.` [I suggest to compromise(slightly) and remain faithful to players] ` ...


0

It's not quite the same, but I implemented something similar at a game jam. The game had players moving on a small circular level, wrapped around when the player reached an 'x' position of pi. Rendering was easy because we just rendered everything and then rotated an offset camera to track what was going on. You could implement something similar, as has been ...


0

I think the only reasonable approach would be to implement your wrapped world in an underlying data-structure completely transparent to the game and the user. So on some Low-Level you have a function mapCoordinate() which wrap your actual coordinates to your underlying map-resource... So if your actual World is only 10units wide, the player and the game ...


2

Disconnect the rendering from the world and you can do wraparound and correct rendering without resorting to any cloning or teleporting artifacts. First, in your world you have a fixed size world, from 0 to Width. Anytime an object goes below 0 you wrap it to the end, and anytime an object is over Width wrap it to the start. This means that all logical ...


6

Remember that what you display on screen, and what's in memory are two totally different things. Imagine you have a window that you need to fill with data about the world. You fill the window from left to right. While you're parsing your data to fill the world, if you reach the end of the world, simply loop back around to the beginning of your data. Using a ...


10

The canonical solution is to use portals. In your example, there is only one level, except there is a portal connecting the left and right ends. Anything moving across that portal will have its coordinates translated to the other end of the portal, so that if something is moving left through the portal, it will reappear on the right side of the level and ...


12

This system with all these triggers sounds a bit too complicated and error prone. You could wrap the position of the player using modulo with something like playerPositionX = playerPositionX % mapWidth This way when your player reaches playerPosition == mapWidth the playerPosition will reset back to 0. This solution could be extended with the whole ...


0

Latency, the #1 enemy of networked games. So, your problem is, that you don't know if packet loss happened or packet is late and thus you might receive packet, that should be discarded. You have to timestamp your packets or use incrementing id that is sent with packet, that helps you to identify packets that should not be cared anymore. If you use id for ...


2

Not sure how those games solved it. But I just read the write up of how Dungeon Siege solved this for multiplayer was to keep things in their local region space and for each frame, turn things to a local space based off one region. Therefore you don't have a single numerical space for the whole game. You should take to time to read the write up. Super ...



Top 50 recent answers are included