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

There are two sets of gibberish: aSpriteData and aFont. The former is passed to the loadSpriteData function and this is the only place it's used. The latter is used in the writeChar function and that's the only place it's used. Both are decoded by the base128ToBitString function. So: they're base-128 encoded strings which store font and image data. Source:...


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

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

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

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

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

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

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

For best results, you'll want to create a port of your application. A quick (and probably dirty) way to do that might be using Google native client (allows running natively compiled code in the browser). Otherwise you'll have to take the long road of porting your code from C++ to Javascript Dart or pure HTML5.


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

i'm a HTML5 game developer working solely with the ImpactJS engine. It landed me a couple good contracts. By that definition, yes the canvas is a viable development platform.


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

This question is making my head hurt, but I'll try to help you out. I do not know what limitations either of the games you mention have. I'm hoping you can take this info and fill in the blanks. First we can look at database size. We need to take the maximum size of the gaming world and make it persistent in a database. If the game board is made up of ...


2

If you are developing your game with Flash, you could easily get away using player.io (server-side components are developed with .net). A cheaper (and far more advanced) option is to use a cloud solution like Windows Azure or Amazon EC2. Any of these services will bill you exactly by the resources you use, i.e they are scalable. Note that these options won't ...


2

Here are 3 great games using the ImpactJS engine. Impact is a JavaScript Game Engine that allows you to develop stunning HTML5 Games for desktop and mobile browsers. If you're currently unsure about what you can do with HTML5, I'd say these are currently the best examples. Keep in mind though that because it's such a hot topic, the field is changing ...


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

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


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