Archive for the ‘Operating Systems’ Category

LightSwitch for Games Part 4: OData Access from C++ Client Code with the C++ REST SDK

April 2, 2014 7 comments

NOTE: Although this series is aimed at small game developers, it is equally applicable to anyone wishing to learn how to use LightSwitch.

In Part 2 of this series we built a user account and profile database on our LightSwitch server, and in part 3 we showed how to make a web interface to allow users to edit their account details. In this part, we will look at how to enable new users to register and existing users to log in direct from your C++ game (or application) code. If you’ve ever played a console game which requires log in to EA’s Origin servers or something similar, you will be familiar with this workflow and why it is useful to have in your game; that is, it saves users from having to go to a web site to make an account before they can play.

You don’t need to have completed part 3 in order to follow along with the tutorial below, but your LightSwitch project and database need to be in a state that matches at least the end of part 2. The web interface from part 3 is a fully distinct code path from what we will do below so it is not required for this code to work.

This article assumes some familiarity with:

  • HTTP requests and responses, methods and headers
  • JSON
  • OData transactions (covered in part 2)
  • a moderate understanding of C++ (including C++11 lambda functions)
  • a basic understanding of threading
  • setting up include and library directories for a project in Visual Studio

You will learn:

  • How to interact with LightSwitch OData endpoints using the C++ REST SDK (codename ‘Casablanca’)
  • How to use PPL(X) tasks and continuations
  • How to use OData to create new users (write table rows) and fetch user profiles (read table rows) from our server’s database programmatically in C++
  • How to update and delete rows with HTTP/OData directly or from within C++ programmatically
  • How to make the code error-resistant (for example if the user is disconnected from the internet)
  • How to separate the client-side logic (interacting with the server) from the user interface
  • How to access the server asynchronously (that is, using multiple threads so that the rest of your game or application does not stall or block while waiting for the server to respond)
  • How to create a basic framework of C++ classes to make your code easily re-usable and extensible

Project Goals

We need a client-side framework for communicating with the LightSwitch server before we start adding game-specific features and plugging the code into an actual game, so for this part our goal will be to create a simple console test application which allows us to create new users and fetch their profiles.

NOTE: The code presented below makes heavy use of C++11 features. You need Visual Studio 2013 Preview or later to complete the tutorials in this article. You can re-write portions of the code without these features if you need to compile it with Visual Studio 2012. Read more…


LightSwitch for Games Part 2: OData Tutorial and User Account Management on the Server

August 29, 2013 5 comments

NOTE: Although this series is aimed at small game developers, it is equally applicable to anyone wishing to learn how to use LightSwitch.

In part 1 of this series we looked at the rationale for using LightSwitch as a game data server and how to setup and publish a LightSwitch project on Windows Azure (optional). In this part, we’ll look at the server-side work needed to enable users to create their own accounts on the game network. We shall take a look at several client-side samples for registering and logging on in part 3 to complete the end-to-end process.

In this article, you will learn:

  • What OData is, how it works and the underlying HTTP messages it uses
  • How to use OData to retrieve and insert rows in your LightSwitch application database
  • How users, permissions and roles are organized in a LightSwitch application
  • How to create a desktop application to edit the users and roles in your application
  • How to create a WCF RIA Service which provides an updateable view of two tables
  • How to create an anonymous guest user with limited permissions (in this case, permission to add a new, real user)
  • How to limit a user to accessing only their own data in a particular table
  • How to create a user profiles table which can store additional information and automatically generates a new user in LightSwitch’s internal user authentication database when a new row (user) is inserted
  • How to automatically assign new users to roles

This article assumes some familiarity with:

  • HTTP (GET and POST methods, headers and request and response bodies)
  • a basic understanding of either XML or JSON
  • a basic understanding simple database structures (tables and rows) and basic SQL queries (SELECT and INSERT)
  • a moderate understanding of C# (but you can just copy and paste the code if you aren’t too familiar with C#)

NOTE: You need Visual Studio Professional 2012 Update 2 or Update 3, or Visual Studio 2013 (Preview) to complete the tutorials in this article. Note that in Visual Studio 2013 (Preview), the organization of items in Solution Explorer has changed so some items may be in different places to those indicated below. Read more…

LightSwitch for Games Part 1: Introduction to Building your Game Data Network with LightSwitch

March 19, 2013 6 comments

NOTE: Although this series is aimed at small game developers, it is equally applicable to anyone wishing to learn how to use LightSwitch.

Most modern video games have an online component nowadays. For games with online leaderboards, stats tracking, world-viewable awards and achievements, online virtual currency and distributed non-real-time turn-based games (for a very simple example, play-by-mail chess), a server is required with a database to store the information, and some way of retrieving and updating the data in a secure manner.

A typical and traditional way to achieve this is by using PHP and MySQL: you merely create tables in the MySQL database for the information required, and provide a series of PHP scripts or endpoints which can be passed data via HTTP GET queries (standard browser URLs with no additional data except that in the query string), and return the results – typically either the requested data, or a flag indicating whether the data was updated successfully or not. Your game code calls these endpoints as required to query and update the server-side data. Read more…

How to enable right-clicking with a buttonless touchpad in Ubuntu 12.04

May 13, 2012 7 comments

The buttonless touchpad, also known as the ClickPad – designed to allow greater flexibility in touchpads by treating the entire surface as one button with programmable click regions – is possibly one of the worst touchpad designs ever conceived. Unfortunately, it would seem that it’s here to stay. The last few versions of Ubuntu haven’t played nice with ClickPads, and one of the great touted features of Ubuntu 12.04 (Precise Pangolin) is vastly improved ClickPad support. Imagine my surprise, then, when I upgraded from 11.10 only to find that right-clicking and two-finger drag no longer worked. Read more…

Categories: Linux Tags: , ,

Tutorial: How to make WSUS 3.0 Selfupdate work with Apache

October 5, 2008 4 comments

The problem: You want to run Apache or another web server besides IIS on port 80 on a machine which is also running Windows Server Update Services (WSUS). When you disable IIS’s Default Web Site running on port 80, WSUS stops working normally and the following error is reported in the Event Log:

Event ID: 13042
Type: Error
Self-update is not working.
For more information, see Help and Support Center at

The cause: While client machines use an IIS web site on port 8530 by default to interact with WSUS, some files are required to be accessible on port 80 as well.

The solution: Make the needed files available via Apache or the other web server you want to run on port 80. Read more…

Slow network file copying / moving / deleting in Windows Vista when playing audio (MMCSS)

September 24, 2007 Leave a comment

File copying in Vista is, well, slow. I’m pretty sure I’m not the only one who has been sitting there wondering what exactly Vista is doing while it spends 5 minutes “calculating the time remaining” to copy half a dozen files. Read more…

How to fix being unable to login to Windows XP after you image it

September 24, 2007 Leave a comment

You just copied your Windows XP partition from one drive to another. When you reboot into the new partition, you reach the login screen, but when you try to login, it logs you straight out again with no error. Read more…

Categories: NTFS, Windows Tags: , ,
%d bloggers like this: