-
Creating a 3D game with Three.js and WebGL
In order to learn the basics of Three.js and its use in 3D games, we will be creating a simple Pong clone with basic materials, lights and shadows. This will also cover some of the basic logic code required for a functional Pong game.
-
Simulating Natural Systems in a Web Browser
My feline QA team was hard at work batting down digital fireflies while I thought about the threshold of belief. What were the compelling qualities of the system I created that convinced her these targets were real enough to attack?
-
Making Games Fun
There are surprisingly few people studying the fun of video games, considering the market size and broad applications of the ability to make things fun. But the (growing) few who have studied this have certainly come up with interesting observations.
-
Vector Field Obstacle Avoidance
This technique provides realistic, seemingly “intelligent” behaviors in a wide class of games with very simple and highly reusable code.
-
An introduction to the Crafty game engine
This tutorial introduces the core components of the Crafty game engine and walks you through the process of creating a simple adventure game.
-
A-STAR Pathfinding AI for HTML5 Canvas Games
Knowing how to get from point A to point B is something many games require. Whether you’re designing a deep turn-based strategy tactics RPG or a simple puzzle game, navigating your game world often requires more intelligence from your game characters than merely pointing towards a goal and moving in a straight line.
-
JavaScript Game Engine Comparison
Deciding on which game engine to go with can be tough these days. This article explores three popular JavaScript game engines, their pros and cons, and discusses some things to consider when shopping around
-
Introduction to Lighting in Games
Lighting is a topic which merits an in-depth study all on its own; most artists spend years mastering the subtleties of light and color. This article will introduce you to the key concepts of light in computer graphics and how to use it effectively.
-
Making Games with Box2dWeb
If all you need is to calculate when a couple of rectangles overlap, it’s not a big deal, but for games that involve lots of irregularly shaped sprites moving and reacting to each other realistically, you’ll want to use an industrial strength tool to get the job done.
-
Particle Systems From the Ground Up
Particle systems are a simple way to accomplish many great visual effects in your game. We’ll create a very naive particle system to show the basic concepts behind them, then dive deep into features commonly found in more advanced particle systems
-
DOM Sprites: a Viable Alternative to Canvas
Today we’re going to look at an alternative to the CANVAS tag which works great for HTML5 games. The best part? It is easy to implement, and works everywhere! It even runs well on mobile devices - sometimes faster than canvas by a long shot.
-
Compiling to JavaScript: What, Why, and How?
As more and more companies jump onto the HTML5 bandwagon, the JavaScript part of their applications gains in complexity and developers have started feeling some growing pains. So some people have started to bridge the gap.
-
Team Snake: A Post Mortem
This article looks at the development of Team Snake, a rapidly developed multiplayer game designed to be played in a large lecture hall using mobile devices as game controllers.
-
How Physics Engines Work
This article will guide you through the essential physics of game engines. My goal is to point you in the right direction and teach the concepts that you’ll need to build upon later. The next step is up to you. I hope you’ll use this article as a springboard and go write your own game engine, researching advanced concepts in the process.
-
Deft and intuitive player character movement in a 2D platformer
Recently, I released Empty Black, my 2D shooter/puzzler/platformer. In this article, I’ll describe how I made the player movement deft and intuitive. My general approach was to change something, then try it out. I took the ideas for adjustments from several sources.
-
Broad Phase Collision Detection Using Spatial Partitioning
This article focuses on two approaches to broad phase detection of collisions. The first is a brute force method that, while simple, quickly becomes wildly inefficient at typical game entity counts. The second is a form of spatial partitioning called a spatial grid. It is relatively simple, yet handles large numbers of game entities efficiently.
-
A Study in Adaptive Game Design
You can take 50% of the market with desktops, you can take 50% of the smartphone market with iOS and Android apps, or you can provide an experience that is engaging to consumers with top-end and low-end equipment alike.
-
Asset Management for Web Games
How to package and compress all of the data necessary for web sites has been addressed countless times, but the sheer volume of content in games emphasizes the lag we see between opening a game and being able to play it.
-
Optimizing WebSockets Bandwidth
Like a snake in tall grass, bandwidth costs can seemingly come from nowhere. This article discusses the oft overlooked cost of network bandwidth and techniques for minimizing it.
-
JavaScript Physics Engines Comparison
In this article we will take a look at three popular Javascript physics libraries and one that is currently in development: box2dweb, Ammo.js, JigLibJS, and Cannon.js. For each one, a quick introduction will be given and then the library will be rated based on ease of use, performance, and feature set.
-
Getting a Console Experience on the Web
In this article I will be discussing 3 main features of traditional gaming systems, and compare them with the offerings of the open web, and discussing how you can leverage these offerings to bring in new audiences for your games.
-
High-Performance, Garbage-Collector-Friendly Code
If you’re developing a game that has many things happening at the same time, say a weapon that fires missiles 5 times per second – not an unreasonable weapon fire rate for a high-speed shooter – you’ll quickly discover that one area of substantial impact to performance is object construction and subsequent garbage collection.
-
Real Time Multiplayer in HTML5
We will look at input prediction, lag compensation, client interpolation and more importantly - how to do this in your normal browser using websockets. The article will present a playable demo with parameters to play with, showcasing the concepts discussed.
-
Progressive Enhancement in Browser-Based Games
One fundamental challenge of web development is providing access to the diversity of devices accessing the web, allowing users to interact with content regardless of platform or connectivity. One strategy for working with such diversity — *progressive enhancement* — is of significant benefit to browser-based game developers, and can help realize the full potential of games on the web.
-
JavaScript Game Code Organization
First I’ll discuss organizing JavaScript code into files and modules. Then I’ll talk about code sharing approaches such as component systems. Lastly I’ll share some ideas for writing data-driven code in games.
-
WebSockets: A Guide
It is useful to first look at the history of WebSockets and gain an understanding of how WebSockets work at a technical level before we examine how we may use WebSockets most effectively. Armed with this knowledge, we can simplify the network layer and build amazingly responsive games that provide a high level of multiplayer interactions.
-
Taming the SVG Beast
With the large number of varying screen resolutions available on today’s HTML5 gaming devices, it is now advisable to give some consideration to incorporating vector graphics into your games.
-
Sprite Animation
In this article I’ll run through some of the choices to be made developing 2D games, and hopefully give you some ideas for developing your own games using HTML5.
-
Mobile Game Primer
Developing HTML5 games that work in the mobile browser comes with its own special set of requirements.
-
Global Composite Operations - Your Canvas Utility Belt
This article will explore two of the lesser known GCOs -
source-atop
anddestination-out
- and show how they can help you solve some common problems in game graphics programming.