Hot answers tagged

26

I think I can offer a few solutions. Set a minimum level to trade. This would essentially prevent players from making accounts just to collect the free stuff, as players will have to put in effort into the account to trade. I'm not sure how your game is set up, but this can be implemented though setting a level cap to build the "trading market building&...


9

The canonical solution to handling the type of cheating you describe (which I mostly hear called ‘account farming’ in the context of other games) is to de-incentivize having multiple accounts. Obviously make sure your ToS calls it out as bannable, but you also need other things to make it less attractive to do this. Possible approaches I’ve actually seen ...


8

You might think it's hard, but the way you came up with is the way to do it: send not the points, but e.g. all the moves of the game, and then the server recomputes the game and calculates the gained points (this is just one of a million reasons why developing multiplayer online games is harder than developing single-player games)


8

Equal value trade system Every item (pet) has a value. Each trade needs both parties to offer similar value. Let's say we have three items: A (worth atm 500), B (worth atm 400) and C (worth atm 60). And let's say that trades are allowed up to a 100 'value mismatch' (this could also be a percentage). This means that A can be traded for B, but C can not be ...


7

Looks like you have a "nice problem", one that comes with a game getting fame. The solution I've been considering would be implementing a currency, say gold, that you get periodically for logging in and "being active" on the site. If you're currently having issues with users creating "fake" accounts just to get more loot, the ...


6

i don't know about Risk but i had developed a Chinese Chess game few years ago. I think you can try Minimax which the game calculate every possible decisions and each decision will branch out a node for all the players until a certain depths within reasonable time. I think it is suitable for most turn based games. For 'difficulty' your game will randomized ...


6

I think the most effective way would be just to fake it. Rendering to some target element using your own built in sprite font as if you're rendering a normal 2D screen. This approach makes sure no strange stuff happens when people are missing fonts, or are using a very different language (Chinese, Russian). Fonts and texts are one of the most difficult ...


6

There are four kinds of games I could imagine where human players wouldn't get outpaced by bots. Embrace the bots. Make a game about bot programming. Let the best bot-writer win. It's not cheating when it's the point of the game :) (Ok, this is kind of a cop-out) Create a very complex strategy game with large numbers of units to control, a large number of ...


5

You could ask them to record their play sessions with a video capture software like Fraps or GameCam. Additionally, you could also ask them to wear a headset with microphone and comment verbally on their game experience (the results would be similar to a "Let's play" video). The advantage of verbal commenting is that it is more spontaneous and honest than ...


5

I have actually made a character display library for the web, Unicodetiles.js, which I have not only spent some time optimizing, but it also explores different ways of presenting the text; it has three renderers: DOM, which uses a matrix of <div> elements to render each glyph with a customizable foreground and background colors. Canvas, which draws ...


5

Emscripten can be used to port C++ applications to javascript. It was able to succesfully make the Unreal 3 engine run in a web browser. It works best in browsers which support asm.js, an optimization-friendly subset of the Javascript language which can reach performance comparable to native code.


4

It's simple arithmetic and requires no loops or periodic DB updates. The player has a rate of resource gain. This is fixed until some external stimulus happens like the player buying an item to change speed. You need only know the current speed and resource counts for this to work. Take the current time. Take the last time the resource counts were ...


4

pepper.js allows you to write C++ code and then deploy directly as: Machine code via PNaCl for higher performance, currently only supported by Chrome. Javascript via Emscripten for maximum reach. From the project page: pepper.js is a JavaScript library that enables the compilation of native Pepper applications into JavaScript using Emscripten. This ...


4

No browser supports an unlimited amount of storage space (or anywhere close to your 800MB) for arbitrary web apps out of the box, and most are limited to 5MB to 10MB. The easiest way to explicitly cache data is to use the Application Cache (manifest). You can also use LocalStorage if you want to programmatically download levels in advance rather than ...


3

To find out the number of lines and columns you need to output, you should check the window width and height and change it accordingly. Remember to listen to onResize events and modify the width and height accordingly. When you want to do this the textual way, you could do this using text with a monospaced font and a table where each cell contains one ...


3

What you need is a priority queue with the time of event as priority. If you create an event that will happen in 5 hours, you add it to the priority queue; it will probably be inserted somewhere in the back as in 5 hours has a low priority. Your main event-loop will constantly work on your priority queue and will check if the priority of first even is now. ...


3

While personally I use ammo.js (see schteppe's answer) through Physijs wrapper, I'd also like to mention cannon.js, which is specifically created for JavaScript, unlike ammo.js, which is automatically compiled from C++ to JS. The downside is much less features in cannon.js. JigLibJS which was mentioned by Paul Brunt appears to be unmaintained.


3

WASD is viable because for the best player experience the client (the browser) should be simulating actions based on inputs at the same time the server is verifying inputs as valid and sends you appropriate data back. To put it in perspective, if you are playing a game and we figure on average it takes 100ms (arbitrarily picked this number - no real ...


3

Looks like we need to clarify a few things : Changing your IDE is pretty unlikely to change anything to your problem. An IDE is just a tool to help you work, once you have your final application it does not matter which IDE you used. Making your game an applet is also very unlikely to improve your performance problems as well as missing assets. Imho it will ...


3

General rule: YES. You have the copyrights of the game you made? Then you can distribute anywhere you want. Exception: if you made a contract that gives any publisher/platform the copyright or exclusivity. As of today, none of these platforms (Steam, GOG, Itch) ask for exclusivity. But publishers, if you distribute your game through one of them, usually ask ...


2

Depending on what you have in your game you might end up using both, and connecting them through the models in your game. For example player could and should be in RDB (login info) but player inventory/variable storage could go to noSQL , so your player module could login() using RDB and fetchInventory() using noSQL by the primary key. Maps for example ...


2

Here is several things you can do to validate score sent by player : Before sending data to server, sign/encrypt it using a key (hidden in executable). Server will check if signature is valid. Note : this can be easily defeated by reverse engineering the game, but it is a lot harder to break than when sending plain text information without any encryption. ...


2

Risk has too many potential moves and too many potential outcomes per move to have a Chess-like AI be effective. You don't need to consider every possible move, and you don't need to do look-ahead. I would suggest you get some playtesters, or at least one or two smart gamers to help. If you're really just taking the Risk rules, or some sub-set of them, then ...


2

cannon.js. It's much faster than ammo.js because it was written in native JS instead of being ported from C++. Unfortunately, its documentation is pretty much nonexistent.


2

You've confused the assets with client-side data storage. You can load assets using normal HTTP requests that the browser makes. These are subject to normal HTTP rules about caching, expiring and conditional requests. If you have 800M of asset data, you definitely need to do this. There is no limit to how many assets you can load in the "normal" way (these ...


2

If you already have a website you should look at your analytic s and see the browser distribution of your users. The news website that I work for averages 1.8 million visits a day, of which about 65% is from browsers that wouldn't support many HTML5 APIs that I'd use in a quality game. See what your users use, then make a decision based on that. Obviously we'...


2

Emscripten is the best way to do this as of today. It can compile pure C++ code into a subset of JavaScript called asm.js which is very efficient and can be even further optimized. As of today only Firefox has explicit optimizations for asm.js, but the compiled code will run (quite well) on every major up-to-date browser (even IE!) and can be used in the ...


2

I've done things like this before using delta timing. Here is an example: int millisecondsThatPast = 0; int numberOfPowerUpsToGive = 0; int timeForEachPowerUp = 0; public void setTimeForEachPowerUp(int timeInMilliseconds) { timeforeachPowerUp = timeInMilliseconds; } public void onGameUpdate(int delta) { millisecondsThatPast += delta; int n = ...


2

You really should tell us how this is being constructed as different technologies can have different advantages to your situation. Is it in Flash? PHP? HTML5? JavaSript? Java? The "web" tag doesn't give us much to go off. That being said: One of the most secure ways to transmit points score is to not let the client side decide what those points are. What ...


2

Use Application.absoluteURL. http://docs.unity3d.com/Documentation/ScriptReference/Application-absoluteURL.html If navigating to the game from another page, they can pass arguments via a ?query-string that the server can ignore, and that you can parse via string manipulation. If you need to transition to your game without navigating to a new page, you can ...


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