Nebulon Now Available

Just letting everyone who reads this know that Nebulon is now available on XBOX LIVE Community Games. The official website for the game is http://nebulon.darkomengames.co.uk and you can go through there to buy online, or find it on your XBOX 360 console.

We are considering bringing this to PC, there are some things that need to be done before that can happen, but if DapydTheBard is willing it will probably happen.

Nebulon in Peer Review

I mentioned previously that a game by fellow DOG member DaphydTheBard was undergoing play testing. Well I am happy to report it is ready for peer review and hopefully should be out soon. If anyone has a Creators Club Premium account, it would be great if you could peer review Nebulon and help speed up its release.

You can get to the peer review page using this link: http://catalog.xna.com/en-GB/GameDetails.aspx?catalogEntryId=7432580d-50e3-439e-b180-f1ca39df65a3&type=1

Hope you enjoy the game, and let us know what you think on the DOG blog.

Edit: Seems it failed due to a MU issue that should be fixed soon. The DOG blog and other places will have further info when the game goes back into peer review.

Nebulon in Playtest

For those of you out there with a Creators Club Premium membership, head on over to http://creators.xna.com and help us (Dark Omen Games) out by playtesting Nebulon, our first game on the service. You can see a trailer for Nebulon in my last post here, and using the normal interface on the Creators Club website, you can access the build of Nebulon we have up there and try it out. Let us know what you think and if you encounter any issues in the associated forum thread.

Hope you enjoy it!

You can find out more about Nebulon here. We hope to have a game website up shortly with screenshots, videos, and information on both the PC and XBOX 360 versions.

Blogs have posts you say?

Just finished up all of my assignments for this semester, next up is the exam period. What does that have to do with posting on this blog? Well I find I get more done in the lead up to, and right after exam period, so I hope to put some or all of that here. I have also been working with some others in Dark Omen Games to help get Nebulon ready for XBLCG. A gameplay trailer is on the blog and we hope to get the game through peer review some time in June or July. I have also been considering another project that I will announce if it gets started, also done with the others at Dark Omen Games.

[Edit: Might as well embed the trailer here – Enjoy!]

Adding Direct3D 10.1 support to a D3D10 application

Since my graphics card (ATI Radeon 4870×2) supports Direct3D 10.1, I thought I might quickly add support for Direct3D 10.1 to my in progress D3D10 engine. Using MSDN docs and a slide from the 2008 GDC, I found it was really easy to add D3D10.1 support, since the device simply inherits from the D3D10 device, and since 10.1 simply adds features, you can use it selectively for some nice techniques and/or performance gains.

MSDN suggests that if you are going to be using the device a lot, and already have some place holding the D3D10 device, you keep a pointer to it, so I will assume you have such a class.

First you must create the Direct3D 10 device as you normally would, however you must use the D3DX10CreateDevice() method instead (see below), this is outlined in the SDK and multiple tutorials online. I may write up how to do this at a later point, however it is outside the scope of this little article.

Once the device has been successfully created, we can try and get a Direct3D 10.1 device from it. To do this, we will be using the following methods:

  • HRESULT D3DX10CreateDevice( IDXGIAdapter*, D3D10_DRIVER_TYPE, HMODULE, UINT, ID3D10Device** ); [This will create the D3D10 device, and makes it easier to do so and then create the 10.1 device.]
  • HRESULT D3DX10GetFeatureLevel1( ID3D10Device*, ID3D10Device1** ); [This will create the 10.1 device.]

The second method will take the current D3D10 device and create a 10.1 device from that if possible.

After we have our D3D10 device using D3DX10CreateDevice(), we can then call D3DX10GetFeatureLevel1, passing in the pointer to the device we just created, and a pointer-to-the-pointer to our D3D 10.1 device. This method returns a HRESULT indicating if the operation was a success.

If so, we now have a D3D10.1 device we can use for the extra functionality. I personally also keep a BOOL inside my Graphics class to allow me to easily check if I have 10.1 support.

Now you can take advantage of the new features in Direct3D 10.1, and SM4.1!

[Review] Windows via C/C++, 5th Edition

book_cover Title: Windows via C/C++ 5th Edition
Authors: Jeffrey Richter & Christophe Nasarre

 

 

 

 

Overview

“Get the preeminent guide to programming application for Windows with C++. Programming Applications for Microsoft Windows is a classic book (formerly titled Advanced Windows, Third Edition) and is now fully updated for Windows Vista, including the latest information about Windows XP. In-depth and comprehensive, this essential reference covers the Windows operating system and how to program at the API level. Recognized experts provide an inside view of how Windows works and how to use its features in Visual C++ development tasks. Topics covered include processes, thread pooling, virtual memory, DLLs, file I/O, and message crackers. For systems-level programmers, this is a must-have title. Includes code samples in Visual C++.”

Review

Although the title of the book is slightly misleading, this book certainly accomplishes what the overview says. The authors provide a great wealth of information concerning Windows development topics like Threading, Process Management, working with memory, DLLs and many other areas.

Weighing in at 800+ pages, this is a extensive guide to working with Windows. The book presents the information at a rapid pace and ultimately works better as a reference book than something you sit down and read. For example I was working on a wrapper for the Windows API INI functions for a game, and whilst I have worked with strings before, I have not worked much with the Unicode strings that Windows uses. This book really helped me to understand the many different available functions, and realise that even if you use the ASCII versions, Windows will convert behind-the-scenes. (Which could have a detrimental effect on performance)

Whether it be working with strings, or working with DLLs, this book will provide a nice overview of the many different functions available to you in the Windows API, as well as short instructions on how to best make use of them.

The book is split into Strings, Processes/Threads, Memory Management, DLLs and exceptions, and each part has many sub-parts each containing a wealth of information on the topic. Each chapter is laid out with a summary of how you would accomplish the tasks in each area (Thread creation etc), and for each function and structure you may use (or group of functions/structures), there is a small summary of the best way to make use of the capabilities of the function, as well as tables describing each part of the structure or the parameters for the function.

The book not only covers the correct ways to accomplish a task, but also provides information on legacy equivalents in case you encounter them or have to use them. (Although it does strongly advise you use the newer forms)

For those doing Engineering at UTS, this book covers the Windows API equivalents of what you would learn in Real Time Operating systems, and includes all the information about inter-process communication and inter-thread communication. I am unsure what IT students do as an equivalent (if there is one).

You can find the table of contents in the book’s MSDN article here and there is also excerpts from two chapters so you can get a nice example of the structure and writing style, that way you can try before you buy.

This book is aimed at intermediate or advanced developers who already have an understanding of C++ and want to work in a Windows environment. Most of this book applies to both CLI and Win32 development, and could even be used in Game development, as long as it uses the Windows APIs. The book is also up to date with the changes for Vista.

I would say this is a must get for any C++ Windows developer’s reference library. It has many applications and the theory of how things work in Windows on a lower level can be taken into many other languages.

If you are still beginning C++ development, you should probably steer clear from this book for now, and pick it up later when you have a better grasp of the language. This book provides very short and concise code samples that generally only cover the correct way to use a feature instead of a complete sample application. It assumes that you have experience with working with C++ and all of the language specific features, and is best used to extend your knowledge into Windows specific areas.

Rating: 8/10

I am currently running a competition at www.utsmsp.com where I have cross posted this review. If you are a Student or Developer in Sydney or Melbourne, you might be able to win the 2nd copy I have, more details at the end of the review there. (http://www.utsmsp.com/2009/04/review-windows-via-cpp/) If you are not in Sydney or Melbourne, you can still win this, but will have to cover the postage from Sydney.

Future Plans

As I mentioned in the last post, I could not move the Vectors/Scalars post over without too much issue, so I decided to drop it and instead rewrite it later, also taking into account suggestions I received about its contents. I am considering experimenting with presenting it in a video form where I can explain it better than in a written form.

I also intend to expand it into a series where I will cover the basics for 3D math/objects like what tangents and normals are, as well as an overview of Trigonometry. (Probably as a side video)

I hope to start on these soon, and I am also looking into working on some samples/tutorials for XNA, and maybe even native Direct3D10. I also have some plans for a game I would like to make, but that may take a backseat to everything else + University.

Finally thanks to the nice people at MS Press Australia, I have a copy of Windows via C/C++ 5th Edition to give away with an upcoming review of the same book. I need to consider how I will do this, but expect more information then. (Also if you have suggestions, feel free to contact me via comments, Twitter or email.

Blog Move

Update: It appears that there are some issues with the ISAPI filter and rewriting all the possible URL combos that WordPress needs. I hope to move to an apache install soon, at which point this will be over. The current permalinks will always work, and hopefully I can have cleaner ones in future.

I have taken the time to move over my most valuable and still relevant posts (okay its just the Halo Wars review) to my new WordPress installation. I needed to move from a .Net solution as I am not sure if I will be staying with this host in the coming months, and the Blogengine.net software was causing me too many issues to deal with at the moment.

I have already setup a redirect for the Halo Wars post, and am working on a redirect for the RSS feed in the meanwhile.

Sorry for any inconvenience caused, please be sure to update your RSS reader and any bookmarks.

I hope to rewrite the Scalars and Vectors tutorial some time soon, I had some issues with how I wrote it previously and wanted to add some more examples to it.