games  anime  |  toys
This is a Dtoid readers's blog. For staff blogs click here. Confused? read this Create you own!  |   Members: Login now





It's my birthday today
doctor insidious | 4:08 PM on 02.16.2010 14 comments


Yah today is my 15th birthday.
Goddamn what to do?

read more



Programming Advice #1
doctor insidious | 12:45 PM on 01.04.2010 10 comments


I am bored. Sitting here in the middle of class, you would expect I'd have something to preoccupy myself with.
I don't. This class is called "Intro to Java", and it's the only programming class I was able to take freshman year. From what you've read in my blog so far, would you consider me a "beginner" programmer? God I hope not, I've worked to fucking hard for that.
Anyway, this brings me to the meat of my blog. I came up with an adage for you aspiring programmers, and I liked it. I decided that I'd come up with more and share them with you, like a weekly/monthly thing. So anyway, here's the first one (I really hope I didn't subconsciously steal this from someone):
"Assume the users wants to do everything and nothing and has no idea how."
This compact statement tells of the importance of three things:
-Memory management
-Program protection
-User interface

He wants to do everything, memory management:
Most newbie programmers don't really consider how important this is. He will allocate a block of memory and say "This is how much input you can enter" (creating a character array). This would be like if the people who made Open Office decided that one can only type up to 1,000 pages, and that was it. Sure not a lot of people want to write a book that long, but there are still people who want to.
case in point...


He wants to do nothing, program protection:
This is pretty obvious. Remember, when you are writing a program, don't forget: Error checking, Error checking, Error checking, Error checking, Error checking. What is error checking? Well, say you write a program that gets a random integer and divides it by an integer taken from input (why? No idea). You could right your program seemingly perfectly, but in the end, what if the user enters the number zero?
you can't divide by zero!


How the hell?... user interface:
Don't let other people tell you otherwise: If you have a great program with terrible user interface, you are only doing have the job. Programs should be easy to start and get into, or at least include a manual. What would it be like if when you started up a video game you had to press the A and B button to move through the menu and press down the left analogue stick to select the menu item. While all of you people would be kinda interested messing around with it, I'd be in another room, KILLING MYSELF.
This is good UI (thank god for emacs):


So I hope all you beginning programmers were interested a little bit. I certainly like the quote.
One last thing, how did the word "noggertits" (see last blog) become popular (kind off not really)?! I'm a go and drink some hard cider.

read more



help
doctor insidious | 2:12 AM on 01.01.2010 8 comments


i have noggertits what do?
aslo new year sucogk

read more



Designing a game engine, part 1.5 (short blog)
doctor insidious | 10:38 PM on 11.17.2009 9 comments


*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!

read more



Designing a Game Engine: A quick, condensed guide
doctor insidious | 5:44 PM on 09.21.2009 7 comments


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.

read more



Shocking new evidence proves that Gordon Freeman is getting even more rugged (shortblog)
doctor insidious | 6:50 PM on 07.22.2009 16 comments


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

read more



Attached photos:

Photo
« OLDER


 about me

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


d

 friends' updates
Hamza CTZ Aziz's Profile Hamza CTZ Aziz
MAG getting free DLC next week
Jim Sterling's Profile Jim Sterling
Mr. Sterling on Original Gamer
mix's Profile mix
iRok2 - Youtube, Last.fm. Guitar Hero Everything!
Mr Gilder's Profile Mr Gilder
Movin' On
Niero's Profile Niero
Gather around old man Niero: Destructoid turns four
randombullseye's Profile randombullseye
I give up.
seigfreid's Profile seigfreid
Its birthday time!
shipero's Profile shipero
PS3 Friday Night Fights: Boldly Going Forward, 'Cause We Can't Find Reverse
TSuereth's Profile TSuereth
49 Reasons You Need a PSPGo Right Now!


 
 
  get involved

register or login
post a blog
post a forum
enter a contest
contribute a news tip
suggest a feature
be a guest editor
support

new member's guide
login assistance
tech support
report abuse
email our editors
read our dev blog
nuclear crisis?
keep in touch

RSS feed
Twitter
Facebook
Myspace
Flickr
Game nights
Meetup+play online
seriously

about Destructoid
advertising
terms of use
privacy policy
jobs at MM
buy our crap
our network

Tomopop
Japanator
Despingation?




Destructoid is an independently-run publication forged by our love of video games and the gaming community's need of accountable enthusiast press
living the dream since March 16, 2006