Archive for the ‘Games’ Category

Space Trader for XNA is GO!

March 12, 2008

Space Trader is a game for Palm, and it is my desire to port it to XNA.

Of course, it has periodically been my desire to port it to the Yahoo! Widget Engine, JavaScript, and plain C#. I have taken up the project a number of times, and failed at it. I’ve got lots of stray code to show for it.

The original was written in C, and is heavily forms based (as one might expect for a Palm app). Fortunately, all of the resources for the UI, strings, alerts, bitmaps, etc were recoverable using the PalmOne tools (they extract them into a nice XML file).

It is also GPL, which means I don’t even need to talk to the author to do this port. And I haven’t.

There is already a C# port for windows, but it has some differences in it that I don’t like, including the “put all of the screens on one window” thing that I don’t care for.

The screens are all 160×160, which really can’t give too much information at a time. Currently, I’m working on it in 800×600.

One of the first things I did was to make a utility app to scan in the resource xml files. I did this mainly for the large number of string and alert resources. The forms I just have to duplicate by hand, since they need to grow in size anyway.

Which brings me to control issues. The Palm version used (duh) the stylus, for which the windows equivalent would be the mouse. However, in XNA the target controller should be the 360 controller and the keyboard (the two controllers that both windows and the 360 support) but more importantly, everything should be doable from a game pad. It’ll be interesting to see what I can come up with for equivalent controls.

Some Stuff

March 10, 2008

I figure I’m due for blogging about blogging, so here I go.

Why do we actually make blogs? There are lots and lots of them, and for the most part, I don’t care about very many of them.

Typically, when I am regularly doing a blog or blog like thing, I will get discouraged at some point because I’ll take a look at the stats, and it becomes patently obvious that few are reading, and even fewer are commenting, which indicates that, just like I don’t care about most blogs, mine is just another one hidden in the woodwork.

But then again, am I saying anything worth reading? Not really… I mostly blither on and on about the development of my games.

Lately, with Diamond Maze, some things have been happening:

1) I am mildly disinterested in progressing because I am pretty much doing a clone of a game I already created. Sure, I changed the number of types of keys in the game, but that doesn’t exactly make it a different game, you know?

2) I’m having another “why am I writing games in the first place?” moments. I don’t play my games. My wife plays Connect!, but Diamond Maze has not, to my knowledge, been heavily played by anyone.

3) The group project I joined on sourceforge has dried up. Good luck next year, Tom.

4) I decided to actually play some games. I like Castle Wars although I’m not entirely certain it has been properly balanced. I played the first Submachine game, and I found out that Stick RPG has been finished, so I played that a little, but quickly lost interest.

5) The desire to write one of the big three games is back again. For those who don’t know, the big three are Dungeon Delver, Island Interloper, and Medieval Micro-manager.

And really, anymore, I would divide Dungeon Delver into multiple distinct games:

A) A text-based interactive fiction design tool and player

B) A roguelike game

C) A graphical adventure creation system and player (a la ACS on the C64), something Inaria-esque.

Island Interloper could also be Interstellar Interloper, and the game would basically be the same, it is still a “travel between outposts and trade commodities” games. I would also like to port Space Trader to XNA. Basically, it is turn based Elite. Of course, I have a long history of starting ports of this game but never finishing.

Medieval Micromanager is like Hammurabi on steroids.

There are also a number of BASIC listings of games that need to be brought up to the current generation of tools.

Inevitable

February 25, 2008

JetLag in XNA screenshot

xnajetlag_ss_200802242158.png
Download RAR file containing game here.

Stuff

January 25, 2008

 So, due to completely random circumstances, I found this:

http://chivalry.deirdrakiai.com/

Which means not only is there a new item on the blogroll, it also means I found this:

http://dead-code.org/home/

In my brief investigations, it is an engine that may suit my nefarious needs.  (Ok, my needs are hardly nefarious, but they are still needs).  The scripting language is suitably javascript-esque, the price is right (free), and the applications are stand alone.

Sure, the engine is designed for point-n-click adventures, but, like most things, it can be abused to make puzzle games or really anything else I feel like.  I’ll investigate it further before too long (JetLag, anyone?) and then I’ll have a new platform (like I needed more).

Anyway, enjoy killing the Queen, or whatever you have Phlegmwad do.

Now With Themey Goodness!

January 22, 2008

So, I took the suggestion of a comment writer, and Connect! now supports themes.

Of course, at this point the themes consist of the original color scheme, and now a new, totally pink and purple theme called “lovey-dovey”!

Lovey-Dovey Theme

Yay! Lovey-Dovey!

Later I can always put in all sorts of other themes, now that the support is there.

As far as what sort of value this adds… it actually allows me to address the color-blind issue, by handling it with themes.

I’m also starting to notice the creeping complexity and size of the UI buttons on the side. When I first wrote the game, I wrote it with no buttons at all, and to start a new game, you actually had to refresh the page. It also had zeros in nodes with no connections. It also had all black nodes and connections.

Actually, blogging the development of this game has been pretty cool. Already I can look back (a whole week and a half) and see the various permutations it has gone through. It goes to show that even a game as simple as Connect! goes through a refining process.

And now that there are more than two colors on the board, it is really getting to be time to put in some instructions. I think I need to do that before anything else.

Board Sizes Other Than 8×8

January 19, 2008

Behold:

JSConnect 16×16 Partially Solved Board

I finally got one of the big features left to implement done, namely the ability to have differently sized boards.

Revised TODO for Connect!

  1. Timed play, starting only after the first move is made.
  2. The ability to choose a random seed/game number, so that the same board may be generated again.
  3. A “Give Up”/”Solve” button.
  4. Improved graphics.
  5. Help file, including tips and trick for solving a puzzle.
  6. A tool that allows one chain of connected nodes to disconnect all nodes within it(Hammer Tool).
  7. Three “Levels” of play, Beginner(will not allow nodes to create isolated pockets nor loops), Intermediate(will not allow nodes to create loops, but will allow isolated pockets), and Expert(go ahead and loop and isolate all you like).
  8. The ability to “lock” connections that the player “knows” are correct.
  9. Title Screen.
  10. Declunkify the UI.
  11. Graphical themes.

Finishing Off Connect!

January 18, 2008

I’m at that point in writing this game.

The point called “Concept Complete” or “Prototype Complete
, which as often as not winds up being a state called “Done”.

For another of my games that is permanently in this state, try out the Unnamed Game, which hasn’t changed much since it got into the current “Done enough to play” state almost three years ago. I did wind up changing the colors of some pieces about a year ago, but that’s been it.

I suppose it could be worse. I could be one of those developers with a bunch of title screens and demos that aren’t quite games, and super-pretty websites with forums and concept art.

Instead, I have some “almost games” and some games that are “done-ish” … at least they are playable.

So, why do so many of my games and game concepts go this route? What keeps me from completing them, and by complete I mean *COMPLETE* (professionally finished and polished)

The main reason: the current incarnation of Connect! has taken maybe 15 hours of development time and has been interesting to do. To finish the game and polish it and give it all of the bells and whistles and usability that it should have in order to be a finished game it would take at least another 60 hours, and much of that development is uninteresting.

Still, I’d like to finish Connect! – even if only to prove to myself that I can actually finish something completely. For this I need to enter into the Time of Refactoring.

So far, Connect! has consisted of a single source file. At the moment, it has a little over 500 LOC.

Mostly, the stuff outside of the board itself (the buttons, the cheerleader) have been hacked onto it in an ugly wartish way.

In other words, the code has reached the threshhold of unmaintainability.

So, it is refactor time. I should, after about 5 hours of work or so have it in better shape. It won’t play any differently, but it’ll be better organized and adding the remaining feature set will be made much shorter by doing the refactor now.

Good Progress

January 16, 2008

This evening, I was able to knock out features 2, 10, and 12.

There is now a winning animation that uses some cheerleader icons from IconBuffet.

The load time is pretty much instantaneous now.

The player now has the ability to save the state of his game and later restore it.

Most recently, my game development environment of choice has been HTML with JavaScript.  Usually, I start out the game pretty bare bones, with nothing more than a <DIV> tag in the HTML, and I use JavaScript to bootstrap the content into there.  The entirety of playdeez.com works this way.  The pages themselves consist of empty <BODY> tags and a bunch of scripts.

For example, the HTML behind the page with connect on it looks like:

<html>
	<head>
		<title>PlayDeez Games</title>
		<link rel="stylesheet" type="text/css" href="styles/standard.css" />
	</head>
	<body id="pagebody">
	</body>
	<script src="scripts/common/pagebody.js"></script>
	<script src="scripts/common/titlepanel.js"></script>
	<script src="scripts/common/sidebar.js"></script>
	<script src="scripts/common/utilities.js"></script>
	<script src="scripts/jsconnect.js"></script>
	<script src="scripts/jsconnect/connect.js"></script>
</html>

As you can see… not much there.  All of the work is done in the JS files.  All of my layout stuff is in the scripts in scripts/common.

Typically, when I am building a page in  this manner, I build up a string filled with HTML, and at some point find an object in the DOM and set that objects innerHTML to the string I generated.

When I started putting together Connect! (which actually began as a Yahoo! Widget, which is why I made some of the architectural decisions I did), I instead APPENDED strings with HTML to the innerHTML of my main <DIV>.  For a Connect! board with 64 nodes, 56 vertical connectors, 56 horizontal connectors, a background image, a cheerleader image, and 6 buttons,  thats close to 200 DOM objects getting inserted, one at a time, into another DOM object.  No wonder it seemed to take forever to load.

So, I switched the code so that it instead build up a string as it went, and only put the objects into the DIV at a single time.  The result: nearly instant load.

And yet another valuable lesson learned about manipulating the HTML DOM with JavaScript

Connect! Feature List

January 15, 2008

The following is the Feature List for Connect! :

  1. Differently sized boards (4×4-16×16).
  2. Improved win notification, involving an animated cheerleader icon from IconBuffet.
  3. Timed play, starting only after the first move is made.
  4. The ability to choose a random seed/game number, so that the same board may be generated again.
  5. A “Give Up”/”Solve” button.
  6. Improved graphics.
  7. Help file, including tips and trick for solving a puzzle.
  8. A tool that allows one chain of connected nodes to disconnect all nodes within it(Hammer Tool).
  9. Three “Levels” of play, Beginner(will not allow nodes to create isolated pockets nor loops), Intermediate(will not allow nodes to create loops, but will allow isolated pockets), and Expert(go ahead and loop and isolate all you like).
  10. The ability to save and restore the board state (a single save/restore point) .
  11. The ability to “lock” connections that the player “knows” are correct.
  12. Improved load times.
  13. Title Screen.

Target Platforms:

  • HTML + JS on PlayDeez.com
  • Adobe Air
  • Google Gadget
  • Yahoo! Widget

First Post

January 15, 2008

This is a traditional first post. Typically, a blog’s first post points out that it is the first post in the blog. This means that the first post is breaking one of the fundamental rules of blogging, which is not to blog about blogging.

This blog is meant to go alongside http://www.playdeez.com and to chronicle the developments there. Currently, I am working on a new game, tentatively titled “Connect!”, which you can see here.

Oh, and this is the first post.