My brain makes things explode.
Projects
Blog entries related to my various development and programming projects.
Lights, Camera, Action/RPG! Initial Design Plans
Jul 29th
This is going to be the first of several “Thinking Out Loud” entries. In these, I’m mostly going to just put my thoughts down in a retrievable area, in a place where people can read them.
This first piece will be my initial design plans for my Lights, Camera, Action/RPG project (or rather, projects) – discussing some thoughts, some initial ideas on gameplay and development, etc. Readers will notice that my development style is very iterative – I don’t like to plan things out too detailed ahead of time, because it screws me up in the end, when I find a more efficient way of implementing a system. I prefer to focus on certain portions at a time, building on and optimizing what was present before.
Here is the first part of my build process – determining my initial plans.
As far as the design of the game goes, I intend to make the prototype an isometric, third-person 3D Action/RPG, much in the style of Titan Quest, Diablo, Torchlight, and similar games. I plan to use a cel-shaded graphics style, and will be using bright, stylish colors for characters, items, monsters, and spells along with dark, murky environments and static geometry to give a slightly contrasted mood in the game.
Character Classes
I’m planning on implementing three classes, each with a specific role in the game. These are Wizard, a ranged caster class that focuses on controlling/restricting enemy movement and area-of-effect damage spells, Warrior, a melee fighter that brings large blades to bear against hordes of enemies, and the Scout, whose focus on stealth and fast attacks allows him to quickly eliminate targets.
Multiplayer
I am planning on implementing a cooperative, multiplayer game mode. It will be a party-based gameplay system, played with two to four players over either remote internet connections or a local LAN. The Torque 3D version of the prototype will utilise the internal networking library, while the in-house engine will likely use the RakNet Multiplayer Game Network Engine.
Lights, Camera, Action/RPG!
Jul 28th
Well, I’m back. With the return of the Internet to my computer, it is time for me to return to my development. Unfortunately, I’ve been away from writing my tutorial series for too long, and I’m not going to be continuing it. I intend to release some one-shot tutorials for a while, and I’m working on developing two 3D Point-and-Click Action/RPG prototypes – one with a custom C++ engine using OGRE 3D for rendering, the other using Torque 3D. Both prototypes are pretty much going to be the same thing – but each of them is intended for me learning/touching up on different systems.
ZuneHD – Virtual D-Pad Component for XNA 3.1
May 16th
Just finished working on a pretty basic virtual d-pad for the Zune HD/XNA Framework 3.1. It’s really rough around the edges, and certainly isn’t optimized, but it works.
Download
Source
DPadHD.dll (Managed Library)
Description
A simple, kind of messy virtual d-pad for your ZuneHD games. You can feel free to add it to your games, with or without crediting me, just don’t distribute the D-Pad or modifications of it without at least giving word that it came from me. It’ll need a fair bit of optimization and editing before it’s ready for any game that you wish to distribute, however.
Features
Position can be configured
Works similarly to the default XNA input systems
Built as an XNA DrawableGameComponent
Usage Sample
dPadManager = new Segfault.DPadHD.DPadManager(this); dPadManager.Landscape = true; this.Components.Add(dPadManager);
Creating the system is easy. First, you create it as you would any other component. You can set whether or not you want to use it in Landscape mode (which merely rotates the inputs counter-clockwise – I assume a “back-button-to-the-right” landscape view) by setting a simple boolean value, and then you add the D-Pad Manager to the components list. It will update automatically, just as the XNA input managers do by default.
Its position can be set on screen with the following code:
dPadManager.Position = new Vector2(50.0f, 12.0f);
And finally, the state of the D-Pad’s four cardinal direction buttons can be checked by retrieving the current game state:
if (this.dPadManager.GetState().IsButtonDown(Segfault.DPadHD.DPadButton.Up)) pos.X += (gameTime.ElapsedGameTime.Milliseconds); if (this.dPadManager.GetState().IsButtonDown(Segfault.DPadHD.DPadButton.Down)) pos.X -= (gameTime.ElapsedGameTime.Milliseconds); if(this.dPadManager.GetState().IsButtonDown(Segfault.DPadHD.DPadButton.Left)) pos.Y -= (gameTime.ElapsedGameTime.Milliseconds); if (this.dPadManager.GetState().IsButtonDown(Segfault.DPadHD.DPadButton.Right)) pos.Y += (gameTime.ElapsedGameTime.Milliseconds);
Enjoy. :D
Qt4
Mar 29th
As of last night, I started looking into using Qt4 for future Application development projects of mine – and damned if it doesn’t look like the best option available to me (the best alternative being writing the UI on each different platform individually). For those who don’t know, Qt4 is an immensely popular and very powerful cross-platform application library that works with C++, and is supported on a large number of machines – from 64-bit Windows desktops to 32-bit embedded Linux solutions to the wonder that is Mac OS X. All without having to change the code – all that is required is a recompile (assuming you’ve set things up properly, of course). It even supports cross-platform project (.pro) files, and has a cross-platform toolset that accompanies its SDK – including a GUI designer, a set of debugging tools, and even an IDE that ties with a MinGW compiler.
I’ve started working again on an IRC client – now under the name alienIRC (formerly SevenIRC, which was being planned solely for Windows). I’ve also decided to make it completely open-source, and intend to license it under LGPLv3, something it shares with the Qt framework that is going to power it. I’m going to be setting up a Git repository on Gitorious for the project, and will be setting up some development pages on this blog – including issue tracking, a wiki, and some other tools. Right now, my plan is to closely emulate the mIRC interface – mostly because mIRC is my favorite IRC client – and will be working to make sure it feels native on all supported platforms. I will personally be maintaining builds on Windows (32- and 64-bit), OpenSUSE 11, and Mac OS X Snow Leopard. I will primarily be using the IDE that comes with Qt, though I will work to ensure that it compiles in X-Code 3 and Visual Studio 2008/2010.
As far as alienIRC itself goes, I’m looking at the possibility of using WebKit for the chat windows’ messages. This would make it incredibly easy to add formatting, because I could easily change messages from the mIRC color character into HTML tags before adding the text to the message box. It all depends on how it runs compared to a custom text box. I also plan to implement a number of features that are popular with mIRC, such as scripting (Lua, specifically), “address books,” nick highlighting, file sharing, et cetera. I’m currently working on some UI concept work – since it will have to be different from SevenIRC’s WPF plans and the previous OS X-only alienIRC UI concept that relied on some UI elements only found on Mac (such as Drawers).
If anybody is interested in contributing to this project, send me some messages – I’d be happy to hear your input, especially on features that you feel would be good to implement. Make sure you sign up for an account on Gitorious – and that you upload your SSH keys and such. If you’ve never used Git, and you’re a Windows developer, this is a very useful link for seting it up on Windows: Git for Windows Developers: Part 1
I’m not dead. I promise. So can I please eat your brains?
Mar 16th
Well, I haven’t exactly blogged much of anything in the past couple weeks, mostly because I’ve been side-tracked with a couple projects, such as the new website for the Keyboard-Failure IRC network (http://www.kbfail.net- or point your IRC client of choice to irc://irc.kbfail.net). You can see the new theme (which I think is a major improvement over the pink-background, black-text spawned by the lack of any desire to work to give KBFail a real theme/system. What can I say? We’re all lazy.) by going to the development page: http://minalien.dynalias.net/kbfail/. Guess when I get around to working on it, I’m going to install the newest Release Candidate of SMF for development/testing of the new site, and I’ll probably get around to rebuilding my old mod to integrate Alex Gorbatchev’s SyntaxHighlighter (which I use on this blog) sometime soon, too. Gods, I wish SMF were object-oriented. :P
It seems that I do actually have somebody paying attention to the Direct3D Pong tutorial series I’ve been writing. I kind of shrugged off doing much more work on the project because I didn’t think anybody was bothering to read it, but a recent tweet shows me that there is at least one person reading it. That, for me, is plenty – so @Ogreman, you can look forward to the next tutorial in the series to come along (hopefully) by the end of this weekend.
I’ve been going through some.. personal issues. Anybody familiar with my past will probably know what I’m talking about, so I’ll just kinda leave the details at that. Suffice to say that life is a pain in the ass, but I’m (uncharacteristically) looking toward the brighter side of things and moving forward with life. On the lighter side of things, my plans to visit Erin in Phoenix are going through, so I’ll be blissfully free of work and hanging out with a friend. I’ve been acting very out-of-character for me, recently. I mean, social activity? Something seriously has to be wrong with me. I think I broke my head. D:
Recently renewed my subscription to Safari Books Online – I pay for the $40-ish unlimited subscription, but they’ve got a $20-ish (monthly) ten-books-per-month plan. Very useful, and I highly recommend it for anybody who deals with technology on a hobby basis. Large collection of full books on there, ready for you to read on your computer at home, or even in mobile-optimized forms on your iPhone or (if you’re one of the cool kids, like me) Android or other smartphone. Anyway, I’ve been reading up and studying for the CCNA certifications, which I’m hoping I will be able to take on-base without first going through the “NCO” courses. In the worst case scenario, I’ll just find somewhere closeby off-base, probably in Los Angeles, to take it on my own. They’ve got a full collection of Cisco networking books, programming (including game programming) books for a large selection of languages (Obj-C, C, C++, C#, Ruby, Java, HTML/XHTML, PHP, ASP.NET.. you name it, it’s there). For those who can afford it and will use it, it’s much cheaper than buying each of the books separately, and much more legal (and less of a pain in the ass for searching) than downloading the books on your favorite torrent client.
