Hot answers tagged

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)


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

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

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

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

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

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 ...


4

The short answer: You need client-side scripting to make real-time games possible. The long answer: What is a server? A server is a computer used to run services for other computers on a network. What is a web request A web request is what web servers handle. It is a request, often created by a user from home on a home computer, netbook or a smartphone, ...


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 ...


3

There are basically two types of web browser games from technological perspective: 1. Games that do not require server back-end (client only) These are mostly casual arcade-like games - e.g. shooters, platformers and side-scrollers - which usually require no data persistence, networking or multiplayer capabilities, or which only require client side data ...


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

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

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

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

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 ...


2

I would just go for it and use all the HTML 5 that I can. I think that if the website is designed as a gaming site, people that come to the site with a browser that doesn't run your games would have no problem coming back with a compatible browser if they have to.


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 ...


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