warning: Creating default object from empty value in /home/hplus/ on line 33.
You need to know your stuff.
jwatte's picture

Highscores for XNA 4.0 test release

I've heard the requests, and decided that they are right: It's better to release something that probably works for Xbox for XNA 4.0 now, and then follow up with the Phone version later.

jwatte's picture

Range queries in key/value stores, part two

In my previous blog entry, I talked about cross-shard transactional integrity for key/value stores, and how SQL databases have solved this problem. I also poked fun at some of the best known key/value stores for not quite solving all of my problems for me, for free. Go read it, it's fun times!

jwatte's picture

Cross-shard transactional integrity

I've been looking at NoSQL data stores for online transaction processing lately. Yes, related to work :-)

The basic model of a key/value store, where the value is a JSON object or similar, only gets you so far. The bonus with it is that it is very, very easy to horizontally partition ("shard" or "federate"). The draw-back is that you really can't do any online queries on anything other than primary key values. If you're trying to do a query on, say, "any foobar created between 2011-01-05 and 211-01-06" then you're screwed -- you have to traverse the entire data store to find that.

jwatte's picture

The XNA Offline and Online Highscores Component Version 2 (distributed leaderboards, sort-of)

XNA Game Studio makes it possible to write games for the Xbox without being a developer with good publisher contacts and lots of money to pay for marketing and Xbox development kits. This is great!

However, because the XNA Indie Games system is not fully controlled by Microsoft, certain features of Xbox Live! are not available, because they would be too easily abused. These features include online Leaderboards, and unlockable Achievements.

The XNA community has developed alternatives to those functions. Many XNA games contain "Awardments" that can be unlocked, and many more XNA games use the XNA Network Highscores component to implement distributed, peer-to-peer highscore sharing. The name for this is generally "Online Highscores" rather than "Leaderboards," because the latter name is reserved for use by Microsoft-certified titles that use the real Xbox Live! functionality.

This article introduces version 2 of the XNA Online highscores component, which is free for you to use in your own game under the terms of the MIT license.

jwatte's picture

The onward march of complexity (LRBni)

It used to be, a microprocessor was simple. It had instructions like "Load the accumulator from the address stored in the X register (LDA(X))." Or "Add register B to register A (ADD B, A)." And that was pretty much it. Time marched on, and we got more esoteric instructions, like "load effective address of scaled register indirect with offset" (LEA eax, [ebx*8+ecx]).

jwatte's picture

Scheduling jitter measurement for UNIX

2009-03-12 latency2.txt README --

This program measures scheduling latency/jitter for a CPU bound process on a UNIX system. It is intended to determine the suitability of various virtualization products to hosting real-time processes such as game servers. To compile it, use g++ (make sure it has been properly installed!):

$ g++ -o latency2 latency2.cpp

jwatte's picture

Can't get custom MFC CSettingsStore to work :-(

I want to implement my own CSettingsStore that stores data in a file in local application data, rather than the registry. (I note that the documentation claims this is a good idea from a security point of view, but I'm doing it for other reasons).

jwatte's picture

Widgets and Scene Graph

To implement a GUI, there are a number of widgets provided in the support library (text edit box, rotary knob, slider, selector, pushbutton, checkbox, etc). Given that ItfWindowSlave interface, a plug-in can also implement custom widgets. The widgets, in turn, use the retained-mode scene graph to describe what they look like.

jwatte's picture

GUI Windows and Slaves

A plug-in can be called upon to open a GUI representation of its parameters. While the support library will provide a default GUI for a plug-in that doesn't want to customize itself, most plug-ins want to do something fancier.

jwatte's picture

Support Interfaces

A number of interfaces exist as support for other interfaces in SAPS. These are collected below.

class ItfAddressable
    /* Where do I post messages to if I want to send a message to this target? */
    virtual Address     Address() = 0;
class ItfBlock
    /* Read the block -- a pointer to the beginning of the data. */

Syndicate content