Hot answers tagged

63

I think Dummynet is what you are looking for. Dummynet is a network emulation tool which can simulate bandwidth limitations, delays, packet losses, and many more. You can easily choose which traffic you want to intercept and configure the limitations, e.g. to limit all incoming TCP traffic to 2Mbit/s you do ipfw add pipe 2 in proto tcp ipfw pipe 2 config bw ...


33

Network Link Conditioner If you're on a Mac, you can use Network Link Conditioner. You can simulate various cases of bad internet connections, including Edge and 3G. In addition, you can create your own profiles with your own settings: It is a free download in Xcode (go to Xcode → Open Developer Tool → More Developer Tools… and download the Hardware IO ...


23

Two words: headless client. Basically it's an AI driven client that's had the all graphics bypassed so that you can run many multiples of copies on a machine, you can even run them on servers because you never initialize the graphics at all. Above all those clients is a supervisor that is responsible for starting, monitoring and stopping all the clients to ...


18

It can also be very useful when your map generation algorithm is deterministic and repeatable based on an initial seed value. So when you enter the same seed value, you get the same map. This might be easier to implement than you think. Most random number generation APIs can be initialized with a seed value and then always generate the same sequence of ...


15

If you are on linux you can use netem to simulate all of the possible problems with network like high latency, low bandwidth, packet losses and many others. There is an option for windows called NetLimiter but I haven't used it so can't vouch for it. Just found a Mac App called SlowlyApp.


11

Clumsy, for Windows Vista & 7.


10

The problem with this approach is in this statement - "Add some more random chars, emulating new players" The task of randomly generating every permutation of character builds is trivial compared to making the AI that would actually use that build appropriately. It would be extremely difficult to tell the difference between a poor build and a poor AI in ...


10

One major strategy that helps is something we call level design metrics. Here you work out what kinds of level design arrangements are navigable, by testing them out in isolation. We'll often build a "gym" level, with things like passages of varying widths, corners of varying sharpness, pits of varying lengths, etc. We can try each setup on its own, or in ...


8

I think you are worried about the wrong things Milo. I see from your other questions you are planning on writing the game is C++. Even a not very well coded sever written in a scripting language would be able to handle 100's if not 1000's of requests with out apparent lag in a card game. These kinds of technical details are probably not going to be a ...


8

Best advice I could give is to put what you have up, making it clear that it is still a beta and that you want people to play test it and link to it everywhere. This includes every game site you can think of include gamedev.net, moddb, here, facebook, twitter. There is nothing wrong with advertising mate. How else are you going to get people to play your ...


8

I wrote a tip/trick on CodeProject that discusses this very problem. Samsung are essentially providing free access to actual devices via the web over here, I'm not sure if the same thing is provided by any other vendors though.


8

First some background... There are two flavours of "null" in Unity: Actual null "Pseudo-Null" - this is a non-null Unity object (usually a GameObject or MonoBehaviour) that has been removed from the scene using Destroy or unloading a scene. (In-editor, this is also used for reference fields in an Inspector that have been left blank) The reason this is ...


7

How can I simulate a bad internet connection with high latency, low bandwidth, jitter and occasional packet loss when in a local environment? If you're on Windows, you can try SoftPerfect Connection Emulator. It's basically a driver that injects itself between your application and the network layer (similar to Wireshark/WinPCAP) for the selected NIC and can ...


6

Get as many as you can reasonably manage. The more prepared and organized you are for testers, the more you'll be able to manage. If you have an automated system set up for collecting data and deploying your game for testing, you'll be able to manage more testers than if you were attempting to manage them manually. It's also important to get the correct ...


6

No simulators that I know of give reasonable expectations of on-device performance. The iOS simulator, in particular, is very bad. And I think the Android one is an emulator.


6

This approach would only work out when your gameplay consists only of character customization and leaves players little or no tactical choices during actual combat. Many game-breakers require not just having a specific character build, but also require that the player plays it in an unconventional way the developers did not expect. It depends on your actual ...


6

I'm not into the game business, so please bear any potential stupid and naive perception For me, writing tests that compare fully rendered images are not really unit tests, but full integration tests, because everything has to work fine for a successful test run. What about an intermediate layer where you can check that everything is fine? There are two ...


6

My experience with Automated Testing during the development of Crysis 2 is available here: http://yetanothergameprogrammingblog.blogspot.com/2010/06/aaa-automated-testing.html Summary: Automated testing improved deliverables stability, increasing productivity for both content creators' and engineers Automated testing is an effective tool to improve code ...


6

Use the unit test framework 'Unit Test Tools' provided by Unity. You're right you can't create new MonoBehaviours on their own, but why not use an empty GameObject and use AddComponent<MyMonoBehaviour>() and then run your tests? Alternatively you can create the bulk of your logic inside your own classes. Then your MonoBehaviour scripts will just use ...


5

The iPhone 3GS is just as capable as the 4 (armv7, ogles2, latest iOS software) and there are a decent number of them out there. I don't think there's any way to prevent those devices from seeing your game in the store so unless you want the occassional bad review I'd try to support them. http://en.wikipedia.org/wiki/List_of_iOS_devices


5

The only real thing that is different is the amount of devices, Apple just sell 1-2-3 new product each year, Android offers 1 new product every day/week. The emulator it's not buggy, it's just not intended for profiling, if you want to profile an Android application you have to do the same thing that you have done for iOS: consider the lowest profile device ...


5

I haven't used it in a while, but I've used Charles for testing this. It is an application with various network diagnostics tools, including simulating the problems you mentioned: "a bad internet connection with high latency, low bandwidth, jitter and occasional packet loss"


5

If console only, you have far less hardware related issues, since your pool of supported devices is minimal. With a PC, every last component can be made by someone else. So the list of potential compatibility issues is near endless. The newer Windows platforms have tried to standardize drivers a bit, but that doesn't really change the overall idea I'm trying ...


5

There is literally no good option other than testing on a range of target hardware. Simply testing on slower hardware isn't enough. Older cards are often on different driver series, meaning that they support a lower version of Direct3D or OpenGL. Cards of similar speeds but from different manufacturers will have different behavior. The behavior can differ ...


4

If your assets don't change frequently, then upload the the assets to some folder on sdcard. Then read your assets from there. And if you assets change, you can easily make small script/batch file that uploads only modified files. Then run this script each time before running your app.


4

You could use virtual machines. With a virtualization software like VirtualBox or VMWare you can simulate a computer inside a computer. You can install any operating system in them and you can artificially restrict the amount of hardware and CPU power the virtual machines have available. This is of course not nearly as conclusive as testing on real ...


4

I understand you are dealing with both box obstacles and gaps. The way it was described, I can see three possible situations. Correct me if the game is designed differently. With the first, there are no obstacles before the gap, at least no obstacles that the player can jump atop. In this case, you would need only a fix max width for the gap. In the second,...


4

Having a good understanding of your game mechanics is essential to balancing a game properly. Modeling your game as a set of equations and graphs is a great way to obtain that understanding. Regarding randomness: Many random events balance out over time (law of large numbers), so when there is a 50% chance that X happens and a 50% chance that Y happens, ...


4

They have console commands. There is a reason skyrim has all the commands in it. That game was very extensibly tested. And because it has couple hundred hours of content with every cave and guild, and some of this content is bound to a level, there is no way to make everyone play through everything. Do the same, create some commands whivh put you on an ...


4

If your goal is to use a separate environment for isolation of libraries, dependencies, etc. then yes, you can use either VMs or containers for this purpose. However, they're not without their caveats. Virtual Machines add the overhead of an entire additional operating system, but it much closer mimics what a user would see on their own environment. So, you ...


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