22 August 2011

Blogroll v3

Below, the feeds currently in my Google Reader. There were 200+ feeds in January 2010 (around 150 items posted every day) and 99 feeds in September 2010 (40 items posted per day). I am now down to 77 feeds, and a total of 25 items to read every day.

I obtained this list by using a series of Notepad++ regexp on Reader's ODML list of feeds (this link will redirect to your own ODML, if you are using Reader).

Game Dev Blogs

Double Buffered
Gaffer on Games
Gamasutra Feature Articles
Game AI for Developers
GameDev.net - Latest Articles and Columns
JakeWorld!
PlayNoEvil

MMO Gamers

Blessing of Kings
Stropp's World
That's a Terrible Idea
Uploads by TheDoddler

MMO Devs

Antipwn
Broken Toys
Creating Living Online Worlds
Derek's Blog on Games, Home Theater and Programming
Elder Game
Measuring Gameplay - article
Mobhunter.com
Of Course I'll Play It!
Online Game Techniques
Psychochild's Blog
Scott Hartsman - Off the Record
T=Machine - MMOG development
Wolfshead Online

MMO Community Mgmt

BIFF THE UNDERSTUDY
Eating Bees
Emergent Future
Nerfbat

Game Industry

Dernieres actualites business - JeuxOnLine
edge online keynotes
GamesIndustry.biz - News

Mess

Information Is Beautiful
The Big Picture

Mgmt and Marketing Games

Game Tycoon
MMO Tidbits
Virtual Goods Insider

Video Game Design Blogs

Applied Game Design
Blog
Click Nothing
Critical Gaming
DESIGNER NOTES
Fullbright
Game Design Aspect of the Month
Game of Design
ihobo
Lost Garden
Magical Wasteland
Mike Darga's Game Design Blog
Online Alchemy
Pixel Poppers
post-hype
Raph's Website - Game talk
The Bottom Feeder

Academia CS and Game Design

Center for Computer Games & Virtual Worlds
Game Balance Concepts
Game/AI
gewgaw
IEEE Spectrum: Consumer Electronics
Teaching Game Design
The Ludologist
Virtual World Economics

Academia Psycho Socio

Game in Society
Games and Culture OnlineFirst Articles
Games and Culture recent issues
PARC PlayOn 2.0
Psy et Geek ;-)
Terra Nova
The Psychology of Video Games
Virtual Cultures

Academia Mess

Game Design Advance
Look In The Air
Metaverse Law
ScienceDaily: Video Game News
ScienceDaily: Virtual Reality News
Virtual Economy Research Network

Cartoons

Penny Arcade
Virtual Shackles

21 August 2011

MVC and game developers

MVC in software engineering

The model stores data, and runs domain-specific logic. An example of domain-specific logic in the banking domain is if customer's account is below zero, refuse withdrawals. The view gets data to display from the model. Some MVC have the view pull data from the model itself, others have the view notified by the model, and others have the controller tell the view to update itself. The controller receives and converts user inputs in actions understandable by the model. In web development, such as ASP.net or Java servlets, the controller picks which view is going to be displayed, and then the selected view is actually in charge of displaying information on the screen. If this description is not clear enough, the wikipedia page about MVC has a scenario that helps explain how the model, view and controller fit together.

MVC in games

Many amateur game developers say ideas from MVC can be applied to games but in general it is just a waste of time. For many, there is no such thing as game architecture: The only difference with classic MVC is that in a game, the graphics data, logic and game algorithm is fused together. Others argue that in a rapid prototyping context, where iterating is key, one should not waste time conceiving a modular/maintainable system, but rather focus on testing the game as fast as possible.

Many non-indie games are made with MVC in mind. Splitting data from presentation induces extra work on the code and managing slightly more objects in memory. However, this is exactly what allows an easier testing and debugging of mechanics, UI, and network components. In fact, MVC has been applied to game programming since at least 1998. A blogger at TigSource states that MVC can be applied in any part of a game. Taking the example of a network connection: The input view in this case is a network receiver running in it's own thread and listening for data from a socket. When the view receives data, it's translated into an internal class and sent to a controller for processing.

Middle ground

I find that explicitly implementing an MVC pattern for the network connection is a bit of an exaggeration. Heads-up displays and other UI input perfectly fit as controllers, and are naturally decoupled from the model. On the other hand, there is a strong tendency by many game developers to ignore software engineering practices. Some even put forward the Extreme Programming side of rapid prototyping to justify their ignorance of any architecture. Agile methods do not contradict the use of any architectural pattern.
That may explain why so many of pygame's projects contain a single file with thousands of lines of code ...