My brain makes things explode.
Posts tagged Windows
C++/D3D Pong Tutorial 04: Adding Keyboard Input
Apr 25th
Tutorial Description
In the last tutorial, we established a rendering engine and got scene objects working, with basic physics. In this tutorial, we are going to implement the initial Input manager, which will be focusing on the keyboard. I was planning to include mouse input, but it turns out that DirectInput only handles the mouse in relative positioning – which is perfect for three-dimensional first-person shooter games that need to track the movement of the mouse – but it’s poor for two-dimensional casual games. For those of you that do wish to use mouse input, I will be covering it a later tutorial – the methods of getting absolute positioning will require a bit of modification to our engine.
Downloads
Please note that I’ve switched to using 7-zip in place of WinRAR for compression
Binary Only (20.4KB)
Full VS2010 Project Dir (26.8KB)
SVN Repository
As of this tutorial, I have created and added a Subversion repository on Assembla to store the code for the tutorial series. I will continue to upload the source for each tutorial – the SVN will merely contain the code as I write it, so you can feel free to play around with the code that I’m working on before I release a tutorial. Mostly, this is to help people play around with things if there’s a point where I’m slow to create the tutorial following the code (as was the case with this tutorial).
SVN URL: http://svn2.assembla.com/svn/d3dpong
Starting Words
Notice: This tutorial continues from where “C++/D3D Pong Tutorial 03” article left off. Please read it if you have not already.
Some Changes
Apr 7th
For those of you watching my Direct3D tutorial series, I apologize for the continued delay of the Keyboard Input tutorial. I’ve been having some life issues coming up recently, and have been putting in ridiculously late hours at work, all of which take priority. I also got Red Steel 2 and Final Fantasy XIII (and a DSi XL), so my time’s been stolen. Decided it was time for a fresh start on my computer (I do that every now and then), and I was too lazy to download the copy of Windows 7 Ultimate that I had pre-ordered while I was in Afghanistan, so I installed Xubuntu for a while (I feel dirty. I really don’t like Ubuntu. It takes away the only reason anybody should ever want Linux in the first place.) Don’t worry, because I backed up the project files, and I’m going to be reinstalling Windows 7 tonight – assuming I get off work at a reasonable time – and will be able to continue the D3D Pong series.
Which brings me around to my next point. Unlike what I had planned, I am probably not going to be continuing this engine after the Pong clone is complete. I just don’t seem to have the time anymore, and I feel that my time is better spent with Erin and working on other life issues than releasing these tutorials. In short, I don’t feel that I could release the series in a timely manner. Don’t get me wrong, I’m still going to be programming, and I will still be developing tutorials – even a couple series tutorials. I’m just not going to be worrying about releasing the tutorials on any sort of deadline, and most of them will be one-shot tutorials (kind of like my XBOX 360 Controller Input tutorial at CodeProject).
Sorry if this is bad news for anybody, but you gotta do what you gotta do. I’ll still be available for help, if you want it. Best place to hit me up is #snoopy at Keyboard-Failure.
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
Aliens vs Predator
Feb 18th
Well, Aliens vs Predator was finally released two days ago, and I hadn’t noticed. Started downloading it the night it was released, rather than the day. Anyway, started playing it last night, and this morning, and I’m loving the game. The demo wasn’t all that great, I’ll admit, but that’s mostly because Free-For-All in the AVP setting is pointless. To really enjoy the game, you need a Team Free-For-All, with each team being one of the three races in-game (Xenomorph, Predator, or Human). Although I have to say, playing as a Human/Marine in the multi-player game modes is very masochistic. Think about it – as a human, you lack the badassery of the Predators, which includes vision modes specifically designed to help hunt humans and Xenomorphs (believe me, in the dark multi-player levels, Xenomorphs are hard as fuck to spot, harder yet to kill, and don’t even think about catching one if they decide to sprint away), you lack the cloaking, so you’re easy as hell to spot, no matter where you are (again, the Predators can spot all humans with one visor mode, and the Xenomorphs (aliens, for anybody who hasn’t figured that out yet) can track you by “scent” – which, in gameplay terms, is an outline showing where you are. Unlike the Predator’s visors, though, Xenomorphs can see you even through walls), and if you aren’t with a group of friends – well, count yourself among the dead. Because that’s really the only opportune time to kill either of the opposing races – if they start to take out one of your buddies.
Playing as the Xenomorphs, in multi-player especially, but single-player as well, can get disorienting fast. You see, Xenomorphs can run on walls, and can jump from one wall to another. And they’re fucking fast. If I, as a Xenomorph, get injured and need a quick escape, I hold my sprint key and just fucking run. There’s no way that either a Predator or a Human will be able to catch up to me – especially if I’m switching between walls, ceilings, and floor, and jumping from surface to surface. But, as I said, this has the disadvantage of being severely disorienting, however incredibly bad-ass it may be.
Playing as the Predators is amazingly fun, especially in the multi-player games. While you can be seen by humans when your cloak is engaged, they’re usually twitchy as hell and won’t spot you well in the shadows. Xenomorphs still have their scent-tracking thing, and will spot you just as well as they’d spot a human, but you’ve got auto-tracking, shoulder-mounted badassery in the form of a laser gun that is fast enough to track them, provided they don’t jump behind a wall or into a vent. You’ve also got proximity mines, and a few other useful tools, and no player will be too happy when, out of nowhere, in spite of their vigilance, they’re blasted from behind by a laser cannon from a creature they can barely play. But hey, if they’re masochistic enough to play as humans in multi-player, that’s their own damn fault. Who wants to play a pathetic human when you can play incredibly-advanced alien hunters (I guess that human’s aren’t the toughest prey anymore) or incredibly-deadly alien beasts, anyway?
In short, if you have the chance to buy it, whether it’s for PC (where I play), XBOX 360, or some other platform, I highly recommend it. If you do get it on PC, don’t be a puss – buy it over Steam, not at a store, and hit me up for a game.
