Quantcast
Community Discussion: Blog by doctor insidious | doctor insidious's ProfileDestructoid
doctor insidious's Profile - Destructoid

DestructoidJapanatorTomopopFlixist





click to hide banner header
About
Hi, my name is Matt, but you can call me doctor insidious, because that is much more awesome.
My top ten games:
10. SBCG4AP
9. Sam and Max
8. Gears 2
7. Tap Tap Revenge
6. We <3 Katamari
5. Castle Crashers
4. Persona 3
3. Braid
2. Crayon Physics
1. Cave Story

I am one of the few people who actually know how to program in this world. And by program I mean know how to use pointers.

#include <stdio.h>

#define COCKS 0

int main (int argc, char **argv)
{
printf("Hi I'm doctor insidious\n"
"This is the most useless program I have ever seen\n");
return COCKS;
}
Badges
Following (12)  


*Note, I am writing this blog in haste because I have a lot of stuff to do I have school tomorrow so please excuse all run-on sentences. That was a joke, but seriously, I didn't have time to really proof this too well.

Well, I think most of the seven of you who remember last blog post recall that I was programming a game engine using the GNU library guile, which basically is a Scheme interpreter for C code. Well, unfortunately guile is not reentrant, meaning it can't handle multiple threads. What are threads? Threading is a concept in which allows multiple processes to be handled at the same time. This is critical for game engines, because a good game engine has to handle both user input and drawing stuff on the screen at the same time. This forced myself to write my own interpreted engine from scratch. I started yesterday, and finished today (aside from missing primitives the most important being "if"), and thought I'd show you guys the result. Note: PLEASE DEAR GOD DON'T MODEL YOUR LANGUAGE AFTER MINE. Not because of copyright or anything, but because you wont have good time trying to use it.
5
This is a number, return that number.
Simple enough, right? Well, it gets more complicated...
*1 4 5
This is a primitive followed by some numbers. This primitive, *1, adds the 2 numbers in front of it. To add multiple numbers, one must do something like:
*1 *1 5 5 5
This returns 15. Other useful primitives include *0: '=', *2: subtract, *3: multiply and *4: divide. One who has taken geometry at one point can compare primitives to postulates.
*0 @1 5
This assigns the '5' to the 1 place in the variable stack. Notice how I don't say the "first place" in the variable stack. That would be 0.
*1 @1 3
This is equal to eight.
[2 *1 6 7]
This defines the procedure '2'. Most of you will probably think: didn't he mean to write "functions"? No, there's a difference in my language. Functions take arguments, procedures do not. You can not pass arguments in my language. There's a reason for this, but it's more like an excuse.
$2
Calls the procedure 2 and returns 13.
*1 *3 $2 @1 5
Returns 70
Well, that's pretty much it. I just finished so I thought it would be cool to show you. I remember you all got a kick out of the (x86?) Assembly I showed you, so I thought I'd make the language as annoying as possible to express. Finally, the game engine will be called: The Berry Engine, named after my good friend TheRedPepperofDoom, who's birthday is tomorrow. Happy birthday!








Preface: I would say I'm good at programming. Well, no, decent really. I'm only a freshman in high school, you see, but I still am quite good (In my opinion). Well, good enough to want to get better that is. Recently, my quest for becoming a computer scientist has shown me a C library called Guile, a GNU interpreter for programs. I had an idea, and decided to share it with you. By the way, I was going to work on that game I told you all about, but nobody really cared so I had no justification to do so. Any way, lets begin: (Also if you don't want to go through the trouble of actually learning to program, but still want to use this, wait a few months and I'll have made it probably)

What is a game engine?
Most of you are reading this probably because you want to make a video game, and you've been to a few sites and have seen the term "Game Engine" thrown around. Well, what exactly is a game engine, and how do I make it? It's really simple. Wikipedia.com defines a game engine as: A software system designed for the creation and development of video games. That is pretty much it. The beauty of a game engine lies in that when you have one, you don't need to mess around with opengl, frame buffers, and most importantly, pointers. God I hate segfualts. Any way, a good analogy for a game engine is that the game engine is the CPU and the operating system system is the game. The game runs off of the game engine. How do you make one of these things you ask? Well, It requires low-level programming, and the high-level programming. You might be better just purchasing one online ( http://www.garagegames.com, http://www.unity3d.com), however these tend to be REALLY expensive, as they are not focused on indy devs. There are some free ones out there, specifically http://www.blender3d.com, which is both a 3D modeler, but as well a game engine which runs python, one of the easiest programming languages to learn.

I lost you at high/low-level programming. What is that?
High/low-level programming only refers to the amount of abstraction between the programming language used and machine language. That may seem a bit confusing, let me explain: Low-level (C, assembly) programming languages run faster, but the code for something simple (for this example, the Fibonacci sequence) ends up looking like this (assembly program):

fib:
mov edx, [esp+8]
cmp edx, 0
ja @f
mov eax, 0
ret

@@:
cmp edx, 2
ja @f
mov eax, 1
ret

@@:
push ebx
mov ebx, 1
mov ecx, 1

@@:
lea eax, [ebx+ecx]
cmp edx, 3
jbe @f
mov ebx, ecx
mov ecx, eax
dec edx
jmp @b

@@:
pop ebx
ret

It would be pretty much Impossible to write an engine this way. In contrast, Higher-level (python, scheme) programming languages substitute speed for clarity (scheme program):

(define (fib n)
(if (< n 2)
n
(+ (fib (- n 1)) (fib (- n 2)))))

Although you probably don't know what this is either, unless you went to MIT with the intent to get a degree in computer science, or actually have a degree in computer science, but you can tell that its a lot simpler.

The right tool for the right job:
Let me ask you a question: what would be better for writing a game engine with a game, a lower level or higher level language? The answer is neither: you use both: For writing the actual language itself, I would HIGHLY suggest C. It's low level, not completely crazy when it comes to syntax, has good graphics library support, and will help you improve your programming skills in general. For the language the games are written in (and then interpreted by the engine), I would use scheme. There is a great GNU library out there called Guile, as mentioned earlier, that would save you the hassle of writing your own interpreter. Also, scheme is good for learning the basics of recursive and iterative programming, a key part of programming.

Graphics library waaaaahhhh?
A graphics library is what you would use for drawing stuff on the screen, making GUI, and the like. The two main libraries are: openGL and DirectX. While both equally as powerful, openGL is cross platform, however it is lacking in anything besides graphic tools (I think). DirectX, while only available for windows, provides a suite of tools, and in fact, MS Vista's desktop was actually written in direct 3D, the DirectX 3D library, and that is why I use Kubuntu now among other things. Both openGL and DirectX are viable options, but since you probably want you game engine to be cross platform, you probably shouldn't use either. Yes, openGL is cross platform, but I'm pretty sure you need to tweek the code quite a bit. I suggest SDL (Simple DirectMedia Layer), a cross platform library available for: SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported (taken from www.libsdl.com). It's not an actual graphics library, but instead a tool set that provides easy cross platform compiling and has a large tool set for things such as controller input.

Well, that's all for now young folk, I hope you enjoyed my commentary. By the way; IF YOU STEAL MY IDEA FOR A GAME ENGINE THAT USES GUILE, I'LL HURT PEOPLE. Oh, one last word of advice, when learning to code for Linux, USE EMACS RAAAAAHHHH.

End part one.








Gordon Freeman is known to be the most sexy, rugged, and smart video game character ever made. from the the glasses to the crowbar, everything about Gordon screams "Ima fuck you up then fuck your mother". However, 5 days after returning to earth, It seems that Gordon Freeman is becoming more rugged by the minute.

How interesting
Photo








Unfortunately I have no trailer of my video game for you guys today, as I didn't think it would be all that complicated to make. I was wrong. Instead, I offer you a shocking find on the Gizmine site, as it appears to be they're selling Mr. Destructoid head shaped toilet paper holders, dubbed as: Robot Toilet Paper Holder. If your the kind of man that fancies having Mr. Destructoid on the paper in which you wipe your ass with, then you may enjoy this, however it only comes in the colors; black, red, yellow and white, with green apparently being too uncool for their super-snappy awesome site.









Well, it sure has been a while, hasn't it? Well, despite my apparent absence in the world of Not-fail blogging, I have returned to give you a quick update on the "d" game, with a few announcements. first off:
It's not called D game! Anymore!
No in fact it's called "Warning 10,000" (which is over 9,000, heh heh). The name is a ripoff of the famous indie shooter called "Warning Forever", because I'm not clever enough to come up with one of my own.
But Dr., how does that name relate at all to growing up and puberty? My answer:
It DOESN'T!
That's right! The new game has NOTHING to do with the growing up! As all you astrologists/physicists may have been tipped of, the game is about being a particle in the sun and journeying up to the surface, then lighting up the earth! Oh, one more announcement:
The subtitle is: Let's best the sun!
The reason why will be given in tomorrow's post, along with game play videos and other information. Now I leave you with a screen shot:
Photo








Well guess what arrived today? It's my GP2X Wiz (that I waited like three months for)! Here is a video I made of unboxing this beauty, I hope you like! I know you guys hate blogs with just a single video in them, so I put a review in here as well. Sorry for the low quality, had a lot of trouble doing this covertly. I'm especially sorry for the grammar mistake in the beginning, I'm not having a "smart" day.

Review:
The Wiz is really great, very well worth your money. All the complaints I have heard of Wiz seem so completely invalid to me; the issues with the dpad is totall BS, the screen tearing issue is unnoticeable, and, um, I can't think of any other known issues. In the video I mention that the touch screen is solid, and wow, does that really help when playing games. The fact that it's open source means that I'm soon going to be able to take my entire collection of sonic games on the road, thanks to a large community ready to make emulator after emulator for it. In fact, I'm considering taking a PS2 emulator, shaving it down until it can only play one specific game at full speed, and dub it as "Katamari Player", so I can take that too on the go.
But I'm rambling now. It's an easy 9/10.

Score: 9 -- Superb (9s are a hallmark of excellence. There may be flaws, but they are negligible and won't cause massive damage to what is a supreme title.)