Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 07 Oct 2010
Offline Last Active Jan 12 2013 11:13 PM

#4983423 No knowledge of programming, wish to create an android game without aforement...

Posted by on 24 September 2012 - 07:59 PM

i want to create a breeding game such as TeamLava's Dragon Story. How do i do this without coding? And i dont want to spend 350 bucks on a lil game like that....

Not going to happen... I will give you a break because you're a newbie to the game development world and won't chastise you, but I want you to understand how silly this question/proposition is. Here are some questions which are as silly as what you're asking:
  • How do I design and create my own fighter jet without doing any actual aeronautical engineering?
  • How can I meet girls without leaving my house?
  • How can I win a basketball game while sitting on the sofa?

As jbadams and others have pointed out there are some bits of software out there that let you cobble together games without programming. However, the games you create with such software are going to be sub-standard junk that no one will want to play, much less buy. This "solution" of using "game-maker" software is as half-assed and silly as the "solutions" to the three silly questions I asked above: 1) Use a pen and paper to draw a sketch of a cool-looking fighter jet. 2) Get on the internet and talk to girls in chat rooms. 3) Play a basketball video game or fantasy basketball. None of them are the real thing and no one is going to be impressed with the result.

The fact is, as someone said above, games are software. Software is made up of code (and data), and software is complex. No human being or company is smart enough to create a universal "tool" that lets you put together an interesting and unique video game by clicking buttons and tweaking parameters. It would take a program so huge and complex that no modern computer could even run it. Games are that different and complicated. Thus any games you create with some little game-designing tool are going to be "cookie-cutter" games; games that, like cookies made with the same cookie cutter, all look and feel essentially the same.

So don't be lazy: learn to program. Believe it or not programming is fun, despite what prejudices you may have and what you may have heard. You're probably afraid to start learning because you've heard people joking about how mind-numbing and painful programming can be. Sometimes it can be, lol, but it's still fun. And the sense of reward and accomplishment you get when you solve those extremely difficult problems is one of the greatest feelings you can get from any activity or challenge (except maybe, erm... you know what I'm talking about lol). I love programming so much that I've been doing it for the last 7 years or so, and every morning I wake up excited about what I'm going to do today and what I can try to accomplish. At night I don't want to quit or go to sleep because I want to get in a few more hundred lines of good code and see the result...I often stay up to 2-4am programming, even though I start around 8am! Developing games is especially fun. There's nothing like spending a bunch of time writing some very complex code and seeing it transformed into a beautiful 3D scene that takes your breath away.

So... Go download Visual C# Express and get on Amazon.com and order yourself a good C# book. You can choose another language, but C# is what I suggest. C and C++ are also good, practical choices but they are much more difficult to learn for beginners (and C#, in general, lets you develop robust and stable applications faster). While you're learning C# you can simulataneously start learning the basics of game development by flirting with the XNA Framework. But when you get good at C#, grab yourself a good DirectX10 or 11 book and download SlimDX. SlimDX is an almost 1:1 wrapper of DirectX for C#, so it's virtually DirectX for C#. It's an extremely powerful API which is fully conducive to developing professional-quality games.

If your heart is really set on Android you might want to learn Java or another language instead. But I think Android can run Mono, can't it guys? If so, that means you could still easily use C# by using OpenGL instead of DirectX (OpenTK and Tao Framework are said to be good C# wrappers for OpenGL). You could also look into a good engine, like Unity. Taking this path will be a wise choice because you can immediately and seamlessly port your skills to Windows, and with Mono that can disperse to virtually any platform (Linux/Unix-based systems, Mac, BSD, etc).

However, I'm speaking here out of my own personal bias because I love C#. Other people may suggest other things.

#4983084 WTF Moment: Pixel shader problem?

Posted by on 23 September 2012 - 08:49 PM

Solved... That was a tough one! FYI it was all because I was incorrectly generating the mesh's input layout. I use a special attribute class which is applied to fields in vertex-types structures so that input elements for meshes can be generated on-the-fly. I had specified the attribute for the vertex Normal field incorrectly. For some odd reason, in my bleary-eyed sleepiness, I mistook the purpose of some of the InputElement fields... For some reason I thought "Slot" was to be treated as an index for the field and that AlignedByteOffset was not from the base address of the vertex structure but from the last field in the structure lol... It took me a little while to figure out what I was doing wrong...however, my debugger saved the day lol. But now everything works correctly and I'm now feeling quite proud of and happy with this engine. Now that it's actually working correctly I can see for the first time just how well it's coming along!

#4983034 Rendering concept

Posted by on 23 September 2012 - 04:32 PM

I would opt against using a huge array ([4096]) to store objects. Not only is that wasteful but it's not a very elegant solution either. You also probably don't want to try to store objects in user-created memory unless you've written your own memory manager and you've proven (through testing) that it outperforms the C++ runtime's default memory management.

Instead you should create a data-driven rendering system which you feed render operations. Swiftcoder has made a lot of very good posts about this and is in fact the person who introduced me to the concept. Essentially, you'd want something like this:

[source lang="cpp"]// Some C++-ish pseudo-code; don't use verbatimclass RenderOp{public: Mesh* pMesh; Material* pMaterial; // add whatever else you need };class RenderOpBatch{protected: SomeCollectionType<RenderOp> renderOps;};class Renderer{public: void Draw( const RenderOp op );protected: RenderOpQueue* queue;};[/source]

That's not any sort of working implementation, but hopefully it conveys the point. You can use this to sort, batch and arrange to your heart's content. You can use collection types already found in the standard C++ libraries or you can write custom ones. For instance what I'm doing is creating a custom type called "RenderOpBatch" that allows me to batch render operations. For example, I might want to do a batch for all the parts of a rigged/skinned biped mesh and transmit information for it to the proper shaders/fragments. Batches are pushed into another custom collection type, a "BatchQueue".... however, unlike a standard queue type it allows you to select between LIFO, FIFO and custom sorting arrangements. With a little effort you can implement the same thing.

One thing is for sure: you don't want objects to be responsible for drawing themselves. This makes your engine code hideous, bloated and virtually impossible to port to or support multiple platforms. Defer that work to the renderer as described above. You can be creative in how you strip render operation data from objects, scenes/nodes, etc. Just stick to the data-driven philosophy and you will be a much happier programmer in the end.


Also, as someone else mentioned, do not store entire objects in memory within arrays, lists, collections, etc... Store only the pointer to it. Otherwise, you're duplicating (potentially) a LOT of data; plus, modifying one instance in one set of memory will not reflect the changes in another... and any type of sorting/moving operation requires a LOT of extra work for the CPU. Remember that the CPU moves data fastest when it comes in chunks that match the native size of the registers (e.g., 32-bit chunks for x86, 64-bit chunks for x64). So storing the pointers to objects in your array/list/collection can be a marked optimization, as pointers will naturally match the optimal native data size.

#4982064 Guide to bad game design

Posted by on 20 September 2012 - 09:36 AM

Here are some of my worst game ideas and design decisions for ya:

1) Yet another game involving zombies... to make the plot particularly original, it's a virus; and zombies must be shot in the head to kill.

2) A movie-game that attempts to follow the plot of the movie, but adds lots of "chores" and "busy-work" to fill in the gaps.

3) A game where everything is really dark in every scene and you can barely see. Add lots of cliche monsters, skulls, colorful flames, etc... This will help hide the poor level design and sub-standard artwork and programming!

4) Create what appears on the surface to be a realistic WWII simulation... but has awful physics, "nerf" all the German weapons and then get on your playerbase forums and try to insult and belittle anyone who questions your awful physics, poor programming skills and horrible "balance" (which makes it even better, because a simulation shouldn't "balance" weapons/equipments but present them realistically)... Oh wait, you might get sued for copyright infringement if you do that... *cough* WWII Online *cough* lol :-)

5) Another generic FPS game with completely implausible weapons, no actual ballistic physics (just trace rays for fake trajectory), no true damage model and "dumbed-down" game mechanics, controls and plot... When in doubt, just add aliens!

Enjoy! :-)


It would also be wise to make players waste a lot of time and effort. Always play really dull and boring intro/outro videos for everything that you cannot skip and are forced to watch. Make players work to develop skills that are totally useless in the game... for example, make the player help an old lady churn butter and spend hours building up their butter-churning skills, only to find out that it is the only point in the game in which you churn butter and even the one time you did it served no purpose... Always provide poor instructions to the point that they convey the wrong information to the player; that way they spend a long time just trying to figure out how to operate the game at all, only to have their hopes crushed when they realize the game sucks even when you're good at it. At random points in the game you should require the player to suddenly and unexpectedly press a complex sequence of buttons with perfect timing, precision and order; if they fail, teleport them back to the beginning of the game. Code all AI to cheat, cheat, cheat... If it's a card game, the AI dealer/opponents should know the player's hand and select whatever cards it needs to win. If it's a FPS, AI bots should be able to run, see and shoot through walls. But better yet, make sure they only do these things when the player isn't looking!


The ideas just keep coming! This is for #2, a lousy movie game... Make sure that ALL of the interesting parts of the movie plot are portrayed as non-interactive video cut scenes which have better graphics than the actual gameplay. Only make the dull parts and "chores" playable. For instance, the final battle between Harry Potter and Voldemort: cutscene... Harry Potter talking to Ron or running an odd errand for Dumbledore: playable...

#4980764 C# and C++

Posted by on 16 September 2012 - 08:14 PM

I say just go ahead and learn C#. It's an essential skill for modern Windows programming to know C# (or at least some .NET language) and how to use the .NET Framework. C# will be much less painful to learn and you will be a deadly programmer when you learn it. Moving on to learning C and C++ will be FAR easier, as you will already understand programming and the languages are very similar in style, syntax and structure. But, in the end, you will need to know both to be a really effective game programmer and be eligible for a wide variety of jobs in the games industry... I just think learning C# first will be much easier.

Don't fall into the trap of thinking language A is "better" than language B. Most such claims are complete nonsense, unless we're saying BASIC and VB.NET sucks (just kidding! lol). Programming languages also do not (I repeat, do NOT) have any attribute, element or property called "power". All Turing-complete languages are "powerful". Theoretically, any Turing-complete language can calculate the entire span of existence of the known universe. C# is not "less powerful" than C or C++, nor is the reverse true. Likewise, assembly language is not more "powerful" than C... Languages also do not have any sort of fixed performance. The performance/speed of code varies from machine to machine, API to API, programmer to programmer, etc... Some languages can be theoretically faster than others due to physical limitations or advantages (e.g., JIT compiling or interpretation), but no programming language has a "top speed". Well-written C# code can easily outrun badly-written native code, and vice-versa. Managed languages, despite being theoretically slower due to JIT compiling, can sometimes be superior in performance to native code considering the gains in memory efficiency, reduced bugs, cleaner and better-written code, etc. While I can usually squeeze a couple more milliseconds out of C than I can with C#, sometimes complex algorithms can be faster in C#. It really all depends... just, like I said, never subscribe to any belief that any language is necessarily "better", "faster" or "more powerful" that any other (provided we're talking about practical, Turing-complete languages...not brainfuck or anything impractical).

If you start with C#, then you'll have the opportunity to learn the essence of Windows application programming (via Winforms) and the essence of DirectX (via XNA Framework). Both of these are easy-to-use APIs that are quick and easy to get started with but provide very deep, far-reaching and low-level capabilities. There's no reason you can't write a big, bad multi-million dollar Windows application with C#, just like you can with C or C++! There are plenty of them out there! When you feel you have "outgrown" the XNA Framework, which is like to happen when you want to write next-gen games for Windows, XBox or other platforms, then move on to learning SlimDX (the C# wrapper for DirectX and all its related APIs) and OpenGL.

#4980737 Experienced programmer, where do I start?

Posted by on 16 September 2012 - 06:06 PM

Again this OP was not meant to make people angry, I could have just started hacking away trying to make a game engine but I thought I take a slightly smarter approach and see if I could get a bit of taste of the different ways to go about it, perhaps learn from others mistakes(in coding). I am actually very very surprised at such the negative responses I got from people, 3 out of 4 of you were more interested (seemingly) in discouraging me from doing this than supporting of my interest in something you all obviously are interested in. Are these forums not here to promote support of game developers? The only one who gave positive advice was Lance.

You didn't make anyone angry, my friend (at least not me). No one is trying to belittle you or say you're not good/smart enough. We only wanted you to heed our caution and realize the immense weight that any "MMO" carries. No one person on earth that I've yet met can do it alone...even if they're an amazing programmer and have no life, no girlfriend/boyfriend or any social interactions with other people lol. It's that massive of an undertaking... trust me...

I'm all for the idea of you writing an engine. If you re-read my first post in this thread, you will see that is exactly what I suggested you do! Perhaps you will end up making it good enough to someday use to develop a good game; perhaps even an MMO when you have the man-power and capital? I say stick with the engine idea if you're a competent programmer and have the time and willingness to work and learn. Perhaps we can even be of help to each other, as I am writing a very large engine myself...

I didn't see where anyone was getting angry at you in the least; just giving advice/guidance, which we assumed you wanted because you posted here! :-)

Heck, someone even down-voted me for absolutely no reason, so I suppose some people have gotten a bit too emotional about this indeed lol...

#4980539 Beginning Game Development Path - Need Opinions

Posted by on 15 September 2012 - 09:32 PM

Well, I know basic C++, but I just don't know how to apply it to my situation. I'd really like to use C++ rather than Python... Working with Python makes me realize that I'm not a big fan of blank space. I like encapsulation... Give me the good ol' curly brackets any day Posted Image

Basic input would be interesting, I was wondering how I should catalog and reference commands...

Should I do a string of if statements, or store them in an array, list or dictionary?

My basic command structure should end up being something simple, such as '[action] [target]' like Attack Goblin, or Open Inventory, or Open Door. This seems simple enough. We can just take the input string and split it by a delimiter, such as a space or '>', so the input could look like 'attack>goblin', and then reference it with the list of commands and functions to call...

My question is, what method to go about call the functions once the game realizes what command you have given...

Oof, why does C++ make everything so complicated? Even something as simple as splitting a string is drawn out to an unreasonable extent... It makes me miss Java.

The questions you're asking are basic C++. So you don't know basic C++ quite yet! :-)

However, you do show some knowledge and initiative. That's a major ++2 on your chances to succeed. So don't be discouraged. Keep learning the basics. Try, toil and struggle with a game if you must and your mind is set on it. You'll still learn, it will just take a long time to feel successful and recieve any gratification for your efforts. If you're not the type of guy who lets that stop him then go ahead and keep trying to write a game and don't slow down.

To answer your C++ question, if you're using an [action][target] structuring for your command inputs, then you'll want to learn to write your own class. I'll show you what I mean in C++-ish pseudo-code so you still have the challenge of doing it yourself:

[source lang="csharp"] class Command { public Command(string action, string target) { this->action = action; this->target = target; } public string action; public string target; }; int Main(string[] args) { PrintHelpMenu(); Command cmd = getCmd(); // This is how you use if/else if (cmd.action == "close") { if (cmd.target == "game") Exit(); else if (cmd.target == "menu") CloseMenu(); else ; // whatever... } // This is how you use case/switch if (cmd.action == "open") { switch (cmd.target) { case "help": PrintHelpMenu(); break; case "items" ShowItems(); break; // blah, blah, blah... You get it now! [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] default: break; } } return 0x00; }[/source]

Don't try to compile and run that code, because it's not valid C++. Though it is quite similar in syntax and style. Read it and take the concept it expresses and learn to do such things in C++. Programming, after all, is learning to turn concepts in your head into code! :)

#4979955 Double char to single short? Easy C++ question.

Posted by on 14 September 2012 - 12:03 AM

Unfortunately, you're code is invalid Posted Image

Say waaahhhh!? Posted Image

Here, run this:


#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
char ch[2] = { 'A', 'B' };
char *cPtr = ch;
short sh = *((short *)cPtr);

char dst[2];
short *pSh = (short *)dst;
*pSh = sh;

cout << dst[0] << dst[1] << endl;

return 0;


Output: AB

So I don't see how my code was invalid? Posted Image </scratch head>

EDIT: Oh, were you talking about how I accidentally used an ampersand in front of the array indentifier, which would actually create a char**? Twas just a typo, but your reply was nonetheless correct; as is my above example, where I didn't make the same typo! Posted Image

EDIT (AGAIN): BTW, did you fix that in my first post for me? ;-)

#4979949 Experienced programmer, where do I start?

Posted by on 13 September 2012 - 11:53 PM

So my question is where to start? I really want to create an MMO, judging by some of the really shitty graphics I've seen in other games, I assume the bad graphics is a result of using a generic game engine. I would rather write my own game engine than to waste my time making a game with shit graphics. I want to be very clear about this fact, I want quality over quantity and speed.

Don't try to write an MMO. Start with less ambitious things. Even if you're the greatest programmer on earth an MMO is still out of your reach because of the HUGE amount of resources it takes. Not only art, sound fx, music, video, localized text, shaders, code and everything else, but financial, logistic and labor resources. You simply can't do it. Believe me... I'm a damn fine programmer... who tried and gave up when he realized he couldn't pull it off without a very big team.

However, you could start writing and testing an engine conducive to MMO development... make enough progress and finding a big team and the resources you need might not be so far out of reach. If you're interested in this sort of thing and you're a competent C# programmer with C/C++ experience then shoot me a pm. You might find my work interesting.

#4979947 Why is it faster to develop in certain languages over others?

Posted by on 13 September 2012 - 11:40 PM

I see a lot of comments about how writing code in something like C# is faster than C++, and I fail to understand why. This has nothing to do with performance of applications; simply the difference in taking say 3 weeks to develop in a certain language and 6 in another. Also, I am really just concerned with mainstream languages such as C#, C++, VB, Java, Lua, Python, etc.

Which of the following could you do faster:
1) Write an essay with perfect grammar/spelling on the First World War in English?
2) Write an essay with perfect grammar/spelling on the First World War in Japanese; using a textbook and translation software?

Obviously, you will be able to deal with the English essay much faster (unless, by some chance, you're a native Japanese speaker). English is what makes sense to you. It's grammar (syntax) is familiar to you and just seems "right", as you've grown up speaking, reading and writing it. You focus your time on the quality and content of the essay, rather than struggling with the language itself. Likewise, some programming languages are more familiar to humans while others are more cryptic and difficult to read/comprehend.

Take a look at the language called brainfuck...yes, it's a real language and I'm not trying to use profanity on the forums. It's incredibly cryptic... designed to be obfuscated and virtually unreadable to amuse and challenge programmers. Now, if you will, imagine how much longer it would take you to write a Windows application in brainfuck than it would in C++. C and C++ are much more "human-friendly" and understandable, so you can turn the ideas in your head into working code more easily than you can convert it into cryptic brainfuck or x86 assembly language. This is precisely the answer to your question. As newer languages come out and grow to maturity, many of them become more "human-friendly" than their ancestors. C#, for instance, is a lot more "elegant" and readable than C.

Is it just about compile time, which seems to be the reason that developing in a scripting language is faster than a compiled one?
Does it have to do with memory management and garbage collection, because it just takes forever to remember to delete your pointers?
Possibly it involves inherent access to libraries or functions such as the printf("") in Python as compared to cout << "" in C++, is that the case?

"Compile time" means one of two things: 1) the amount of time it takes to compile code 2) the time when code is compiled. For example:

1) "The compile time for this project is unbelievable! We need to speed up our builds somehow!"
2) "In C#, a readonly variable is assigned at compile-time."

This doesn't have anything to do with how fast you can finish a project in a language because the languages humans find hardest to understand (assembly language, C, C++, etc) tend to compile faster than a managed language like C#.

Basically, I am trying to understand why the general consensus seems to be that writing code in C# (for example) is better than writing code in C++ (for example), but the performance of that running code is worse.

That used to be the "consensus", but not so much anymore... And it has never been a consensus that any practical language was necessarily "better" than another...

About speed, you will be surprised at what a modern C# application can do. I'm amazed every time I do a new project. The real overhead with a .NET application is in the JIT ("Just In Time") compiling process... this is, essentially, when code is compiled on-the-fly as the application runs. The JIT compiler only compiles portions of the IL assembly that are needed. For instance, if the "PrintDocument(string name)" method is never called it is never compiled. JIT compiling slows the application down a bit, but this tends to only occur when the application is starting and everything is being "JIT'ed" or when a particular method is compiled for the first time. Wanna see it yourself? Write a C# method that takes a long time to iterate through a large sequence. Wrap it in the "Action" delegate-type and use a System.Diagnostics timer/stopwatch to time the code. Call it 5x's in a row and record the time it takes to complete. The first call will seem sluggish, but the following 4 will be almost indistinguishable from native code in terms of speed. Why? Because the JIT compiler turned the IL into native code behind the scenes!

I have seen many occassions where a C# application can not only out-perform but burn a C or C++ application (and surprisingly, sometimes even assembly language as hand-written instructions aren't always optimized for speed). The first notable instance I saw of C# outperforming C was when I had to write a special tool for creating software patches for a larger project. My C version performed very well, but we weren't quite pleased with it... Rewrote the entire thing in C#, optimized the code and disabled some of the CLRs checks, and the damn thing outran the C version. But why?

A C# application has a smaller "memory footprint"... only the needed code is compiled to begin with. The CLR manages objects and collects garbage transparently, not only reducing general programming errors and memory leaks but greatly increasing memory efficiency. Once the code is run through the JIT process it is essentially a native binary image itself, with all the added benefits of being a managed application. Imagine how much faster C and C++ would be if they had highly efficient garbage collection, automatic memory management and reduced memory footprints! This is just part of the reason, but some of the most important things.

Of course, results can vary from application to application, programmer to programmer and algorithm to algorithm. But don't fall into the trap of thinking languages have "fixed" performance... they can perform as good (or as awful) as you make them, to a certain extent.

#4979583 How Would You Tackle This Simulation?

Posted by on 12 September 2012 - 10:45 PM

Here's an idea using some "thinking outside the box"...

Create a fixed range from 0-1, in the form a single-precision floating-point integer (type flot); 0 represents the very inside of the track and 1 represents the outside. You could also do this as a texture than changes, in smooth gradient, from black to white. Each entity (runner, horse, car, whatever...doesn't matter) will "seek" a lower number, trying to get closer to the inside and gain the advantage. However, they will check for obstacles in their way (rocks, other entities, whatever) and avoid them. If another entity is directly in front, slowing them down, then they will sacrifice space to the inside to pass on the right. This can be achieved with good performance through a quick radius check which leads to more detailed checks against objects within it (bounding box/sphere, collision hull, actual geometry, etc).

EDIT: Use the texture idea if you have to represent a complex track with varying optimal paths and complex obstacles. If it's just a plain, round, paved track like a NASCAR track then just using a simple float value will work fine.

#4979171 Platform-agnostic renderer

Posted by on 11 September 2012 - 10:30 PM

Thanks again to everyone for the incredibly helpful insights, advice, examples and information. Things have progressed very far very fast, and I hope to be rendering this engine's first scenes very soon!

I'm most likely going to call for some of the community's brilliant guidance on a very robust shader/material and lighting system. But I'm going to spend some time working out the design the best I can and come prepared with good questions and examples.

#4978783 How do I make a game?

Posted by on 10 September 2012 - 10:40 PM

If you want to learn to "make" games, then you will need to be serious about learning. You're not going to write the next Minecraft, Total War, IL-2, ARMA or Call of Duty without several years of learning and practice -- and once you know how you need the time, financial/man-power resources and some business experience to make it happen. But that can all come to you from getting a job in the industry (once you learn), managing money wisely and learning, learning, learning! Most people who are in your position, just wanting to start off, end up giving up (probably 90% or more). The other 9% never make a good game... yet another 0.9% only make moderately successful or decent games, and only 0.01% end up making a multi-million dollar AAA-grade title. But if you know you have what it takes and you're serious about making it, don't let statistics scare you. Some of those "0.01%'ers" are hanging around these very forums! :-)

I recommend heartily that you go with C#, and start off learning with the XNA Framework. It will let you get your feet wet and show you how DirectX games are put together without making you kill yourself learning about low-level graphics programming.

#4977311 Platform-agnostic renderer

Posted by on 06 September 2012 - 12:31 PM

I understand that, and I've already implemented the "Renderer" interface in that manner and got that part of things worked out...

So what you're suggesting is that I pass the drawable object to the renderer interface reference (which will "trickle down" to the D3D10, OpenGL or whatever specific implementation) and do my rendering that way? That is a viable idea, I think. Please elaborate if you can. I have a few ideas but I'm just undecided on the best way to do this.

#4977306 Platform-agnostic renderer

Posted by on 06 September 2012 - 12:28 PM

I think your 2 choices (from someone with no experience) are create a monstrosity or use only OpenGL, I assume your compiling on mono?

Using OpenGL only defeats the whole purpose of what I'm doing. But anyway, I'm just doing Microsoft.NET builds right now. Going to do a Mono port further down the road.