CINXE.COM
Articles - Build New Games
<!DOCTYPE html> <html lang="en" class="page"> <head> <meta charset="utf-8"> <title>Articles - Build New Games</title> <meta name="author" content="Bocoup"> <meta name="description" content="Creating a 3D game with Three.js and WebGL Jul 24th, 2013 | Nikhil Suresh In order to learn the basics of Three.js and its use in 3D games, we will …"> <!-- http://t.co/dKP3o1e --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link rel="canonical" href="http://buildnewgames.com/articles"> <link href="/favicon.png" rel="icon"> <link href="/assets/css/reset.css" media="screen, projection" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="assets/css/factory.css"> <!--[if (gt IE 8)|!(IE)]><!--> <link href="/assets/css/fonts.css" media="screen, projection" rel="stylesheet" type="text/css"> <!--<![endif]--> <link href="/assets/css/base.css" media="screen, projection" rel="stylesheet" type="text/css"> <!-- <link href="/assets/css/screen-small.css" media="screen and (max-width: 480px)" rel="stylesheet" type="text/css"> <link href="/assets/css/screen-medium.css" media="screen and (min-width: 481px)" rel="stylesheet" type="text/css"> <link href="/assets/css/screen-large.css" media="screen and (min-width: 1024px)" rel="stylesheet" type="text/css"> <link href="/assets/css/screen-horizontally-small.css" rel="stylesheet" type="text/css"> --> <link href="/assets/css/screen-medium.css" rel="stylesheet" type="text/css"> <link href="/atom.xml" rel="alternate" title="Build New Games" type="application/atom+xml"> <!--[if lt IE 9]> <script src="/js/lib/respond.min.js"></script> <![endif]--> </head> <body class="clearfix "> <banner> <header id="header"> <a href="/" class="bng-logo"> <img src="/images/bng-logo.png" alt="BNG"> </a> <nav class="large-nav"> <ul> <li><a href="/articles/">Articles</a></li> <li><a href="/authors/">Authors</a></li> <li><a href="/about/">About</a></li> </ul> </nav> <div class="home-page-info"> <h1><a href="/">Build New Games</a></h1> <p>Open Web techniques for cutting-edge game development</p> </div> </header> <h2 class="page-title medium">Articles</h2> </banner> <aside class="category-list medium"> <h2>Topics</h2> <ul> <li><a class='category' href='/blog/categories/design/'>Design</a></li> <li><a class='category' href='/blog/categories/engines/'>Engines</a></li> <li><a class='category' href='/blog/categories/graphics/'>Graphics</a></li> <li><a class='category' href='/blog/categories/javascript/'>JavaScript</a></li> <li><a class='category' href='/blog/categories/mobile/'>Mobile</a></li> <li><a class='category' href='/blog/categories/multiplayer/'>Multiplayer</a></li> <li><a class='category' href='/blog/categories/platform/'>Platform</a></li> </ul> <div class="advertisement"> <script type='text/javascript'><!--//<![CDATA[ var m3_u = (location.protocol=='https:'?'https://revive.bocoup.com/www/delivery/ajs.php':'http://revive.bocoup.com/www/delivery/ajs.php'); var m3_r = Math.floor(Math.random()*99999999999); if (!document.MAX_used) document.MAX_used = ','; document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u); document.write ("?zoneid=6"); document.write ('&cb=' + m3_r); if (document.MAX_used != ',') document.write ("&exclude=" + document.MAX_used); document.write (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : '')); document.write ("&loc=" + escape(window.location)); if (document.referrer) document.write ("&referer=" + escape(document.referrer)); if (document.context) document.write ("&context=" + escape(document.context)); if (document.mmm_fo) document.write ("&mmm_fo=1"); document.write ("'><\/scr"+"ipt>"); //]]>--></script><noscript><a href='http://revive.bocoup.com/www/delivery/ck.php?n=a23a1951&cb=INSERT_RANDOM_NUMBER_HERE' target='_blank'><img src='http://revive.bocoup.com/www/delivery/avw.php?zoneid=6&cb=INSERT_RANDOM_NUMBER_HERE&n=a23a1951' border='0' alt='' /></a></noscript> <span class="fine">Ads by <a href="http://bocoup.com">Bocoup</a></span> </div> </aside> <section id="main" class="page"> <ul class="article-list"> <li> <a href="/webgl-threejs/">Creating a 3D game with Three.js and WebGL</a> <span class="byline">Jul 24<span>th</span>, 2013 | Nikhil Suresh</span> <a href="/webgl-threejs/"> <img class="article-preview-image" src="/images/article-previews/threejs-webgl-pong.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/simulating-natural-systems/">Simulating Natural Systems in a Web Browser</a> <span class="byline">Jul 16<span>th</span>, 2013 | Vince Allen</span> <a href="/simulating-natural-systems/"> <img class="article-preview-image" src="/images/article-previews/simulating-natural-systems.jpg" alt=""> </a> <p>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?</p> </li> <li> <a href="/making-games-fun/">Making Games Fun</a> <span class="byline">Jun 5<span>th</span>, 2013 | Burak Kanber</span> <a href="/making-games-fun/"> <img class="article-preview-image" src="/images/article-previews/making-games-fun.jpg" alt=""> </a> <p>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.</p> </li> <li> <a href="/vector-field-collision-avoidance/">Vector Field Obstacle Avoidance</a> <span class="byline">May 31<span>st</span>, 2013 | Alexander Sutherland</span> <a href="/vector-field-collision-avoidance/"> <img class="article-preview-image" src="/images/article-previews/vector-field-obstacle-avoidance.png" alt=""> </a> <p>This technique provides realistic, seemingly “intelligent” behaviors in a wide class of games with very simple and highly reusable code.</p> </li> <li> <a href="/introduction-to-crafty/">An introduction to the Crafty game engine</a> <span class="byline">Feb 1<span>st</span>, 2013 | Darren Torpey</span> <a href="/introduction-to-crafty/"> <img class="article-preview-image" src="/images/article-previews/introduction-to-crafty.png" alt=""> </a> <p>This tutorial introduces the core components of the Crafty game engine and walks you through the process of creating a simple adventure game.</p> </li> <li> <a href="/astar/">A-STAR Pathfinding AI for HTML5 Canvas Games</a> <span class="byline">Jan 31<span>st</span>, 2013 | Christer Kaitila</span> <a href="/astar/"> <img class="article-preview-image" src="/images/article-previews/astar.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/game-engine-comparison/">JavaScript Game Engine Comparison</a> <span class="byline">Jan 30<span>th</span>, 2013 | Matt Greer</span> <a href="/game-engine-comparison/"> <img class="article-preview-image" src="/images/article-previews/game-engine-comparison.png" alt=""> </a> <p>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</p> </li> <li> <a href="/lighting/">Introduction to Lighting in Games</a> <span class="byline">Dec 4<span>th</span>, 2012 | Chandler Prall</span> <a href="/lighting/"> <img class="article-preview-image" src="/images/article-previews/lighting.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/box2dweb/">Making Games with Box2dWeb</a> <span class="byline">Nov 28<span>th</span>, 2012 | Pascal Rettig</span> <a href="/box2dweb/"> <img class="article-preview-image" src="/images/article-previews/box2dweb.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/particle-systems/">Particle Systems From the Ground Up</a> <span class="byline">Nov 21<span>st</span>, 2012 | Matt Greer</span> <a href="/particle-systems/"> <img class="article-preview-image" src="/images/article-previews/particle-systems.png" alt=""> </a> <p>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</p> </li> <li> <a href="/dom-sprites/">DOM Sprites: a Viable Alternative to Canvas</a> <span class="byline">Nov 16<span>th</span>, 2012 | Christer Kaitila</span> <a href="/dom-sprites/"> <img class="article-preview-image" src="/images/article-previews/dom-sprites.jpg" alt=""> </a> <p>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.</p> </li> <li> <a href="/compiling-to-javascript/">Compiling to JavaScript: What, Why, and How?</a> <span class="byline">Nov 13<span>th</span>, 2012 | André Rieussec</span> <a href="/compiling-to-javascript/"> <img class="article-preview-image" src="/images/article-previews/compiling-to-javascript.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/team-snake/">Team Snake: A Post Mortem</a> <span class="byline">Nov 12<span>th</span>, 2012 | Darius Kazemi</span> <a href="/team-snake/"> <img class="article-preview-image" src="/images/article-previews/teamsnake.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/gamephysics/">How Physics Engines Work</a> <span class="byline">Nov 8<span>th</span>, 2012 | Burak Kanber</span> <a href="/gamephysics/"> <img class="article-preview-image" src="/images/article-previews/gamephysics.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/2d-platformer-character-movement/">Deft and intuitive player character movement in a 2D platformer</a> <span class="byline">Oct 18<span>th</span>, 2012 | Mary Rose Cook</span> <a href="/2d-platformer-character-movement/"> <img class="article-preview-image" src="/images/article-previews/2d-platformer-character-movement.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/broad-phase-collision-detection/">Broad Phase Collision Detection Using Spatial Partitioning</a> <span class="byline">Oct 8<span>th</span>, 2012 | Andrew Petersen</span> <a href="/broad-phase-collision-detection/"> <img class="article-preview-image" src="/images/article-previews/broad-phase-collision-detection.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/a-study-in-adaptive-game-design/">A Study in Adaptive Game Design</a> <span class="byline">Oct 2<span>nd</span>, 2012 | Jack Lawson</span> <p>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.</p> </li> <li> <a href="/game-asset-management/">Asset Management for Web Games</a> <span class="byline">Oct 1<span>st</span>, 2012 | Chandler Prall</span> <a href="/game-asset-management/"> <img class="article-preview-image" src="/images/article-previews/cache.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/optimizing-websockets-bandwidth/">Optimizing WebSockets Bandwidth</a> <span class="byline">Sep 20<span>th</span>, 2012 | Eric Li</span> <p>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.</p> </li> <li> <a href="/physics-engines-comparison/">JavaScript Physics Engines Comparison</a> <span class="byline">Aug 10<span>th</span>, 2012 | Chandler Prall</span> <a href="/physics-engines-comparison/"> <img class="article-preview-image" src="/images/article-previews/physics-comparison.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/console-experience-on-the-web/">Getting a Console Experience on the Web</a> <span class="byline">Aug 8<span>th</span>, 2012 | Nikhil Suresh</span> <p>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.</p> </li> <li> <a href="/garbage-collector-friendly-code/">High-Performance, Garbage-Collector-Friendly Code</a> <span class="byline">Aug 6<span>th</span>, 2012 | Martin Wells</span> <a href="/garbage-collector-friendly-code/"> <img class="article-preview-image" src="/images/article-previews/gc.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/real-time-multiplayer/">Real Time Multiplayer in HTML5</a> <span class="byline">Jul 18<span>th</span>, 2012 | Sven Bergström</span> <a href="/real-time-multiplayer/"> <img class="article-preview-image" src="/images/article-previews/rt-multiplayer.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/progressive-enhancement/">Progressive Enhancement in Browser-Based Games</a> <span class="byline">Jul 12<span>th</span>, 2012 | Justin Rounds</span> <a href="/progressive-enhancement/"> <img class="article-preview-image" src="/images/article-previews/prog.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/js-game-code-org/">JavaScript Game Code Organization</a> <span class="byline">Jul 11<span>th</span>, 2012 | Greg Smith</span> <p>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.</p> </li> <li> <a href="/websockets/">WebSockets: A Guide</a> <span class="byline">Apr 2<span>nd</span>, 2012 | Jack Lawson</span> <p>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.</p> </li> <li> <a href="/taming-the-svg-beast/">Taming the SVG Beast</a> <span class="byline">Apr 2<span>nd</span>, 2012 | Andrew J. Baker</span> <a href="/taming-the-svg-beast/"> <img class="article-preview-image" src="/images/article-previews/svg-beast.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/sprite-animation/">Sprite Animation</a> <span class="byline">Apr 2<span>nd</span>, 2012 | Martin Wells</span> <a href="/sprite-animation/"> <img class="article-preview-image" src="/images/article-previews/sprite-animation.png" alt=""> </a> <p>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.</p> </li> <li> <a href="/mobile-game-primer/">Mobile Game Primer</a> <span class="byline">Apr 2<span>nd</span>, 2012 | Pascal Rettig</span> <a href="/mobile-game-primer/"> <img class="article-preview-image" src="/images/article-previews/mobile-game-primer.png" alt=""> </a> <p>Developing HTML5 games that work in the mobile browser comes with its own special set of requirements.</p> </li> <li> <a href="/global-composit-operations/">Global Composite Operations - Your Canvas Utility Belt</a> <span class="byline">Apr 2<span>nd</span>, 2012 | Glenn Barnett</span> <a href="/global-composit-operations/"> <img class="article-preview-image" src="/images/article-previews/composite.png" alt=""> </a> <p>This article will explore two of the lesser known GCOs - <code>source-atop</code> and <code>destination-out</code> - and show how they can help you solve some common problems in game graphics programming.</p> </li> </ul> </section> <footer class="medium"> Edited and operated by <a href="http://bocoup.com">Bocoup</a>. </footer> <footer class="small"> <p> Edited and operated by <a href="http://bocoup.com">Bocoup</a> </p> </footer> <script type="text/javascript"> // GA stuffs var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-1464992-54']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </body> </html>