Game Engine

Hi there, I am random guy #5,903,454,104 and I'm trying to make a game. It's not to make profit and also not to entertain thousands of people with my *brilliant new idea*. I was just bored and thought "this might be fun". Don't worry, I'm not some amateur new to the whole programming scene so I know what I'm getting into. A fair warning: I'm not taking myself too seriously, so neither should you. Below you'll find a small table of contents in reversed order that hopefully gets updated frequently.

4.Programming Phase 2Lionhead
 Yay! A new chapter in my life! Last time we implemented save-file stuff which has absolutely nothing to do with "Review and Refactoring". So, ladies and gentleman, may I introduce version available for download? Wait, why am I asking? Of course I may. But what if people say "no"?. This is quite the predicament. It would really hurt my feelings. Okay, that settles it, I'm not asking, I'll just put the source and binaries out there and anyone interested can download them as they please.
 3.6.Save FilesSave-Files
 Today's topic isn't really suited for "Review and Refacturing", but it is certainly fun. Unsafe files, like "love-letter-for-you.txt.vbs" are fun too, but in a different way. Wow, wiki says that's from the year 2000. People sure were stupid back then. Ow my, look at the time! I need to make this quick, I need need to wire some money to a Nigerian Prince by the end of the day. Can you believe this guy is giving me 30% of 200 million dollars? Heh! those Nigerians sure are stupid, I would have done it for 25%!
 3.5.Game LibrariesHelloWorld
 Splitting up code is generally a good thing to keep things manageable. We have some code laying around that we are probably not looking at for a long time, so it seems like an appropriate moment to think about creating separate DLL's for stand-alone chunks'o'code. And there was something else. O right! Hello World! Is it me you're looking for? I can see it in your eyes. I can see it in your smile. You're all I've ever wanted and my arms are open wide.
 3.4.Resource Management v2resource-manager-v2
 Let's make some time to improve the resource-manager. My father and mother, Chronus and Ananke, would be so proud of me. I haven't seen them in aeons, I wonder what they're up to. Maybe they're are off creating a couple of black holes to play a joke on that science-guy. What's his name again, Hawking or something? Making time is not easy. It's like trying to stop a river from flowing by gripping it with your bare hands.
 I noticed a lot of interest in the multithreaded render loop thingy, and my explanation of things could be a bit improved. Since this is a blog-like-site I will not create new content in older pages, instead I'll just create more content and add a reference for those who are interested. This time I talk a bit about extrapolation, but I've created an animation about the multithreading that should help people understand what is actually going on and what the triple renderstate is all about.
 3.2.Multithreaded Game Engine Design Discussionslapware-mma
 Finally a topic that deserves the name "slapware". MMA is a proud sport where one man fights with another, slapping each other, until the fight can no longer go on. Wellll... this is just a discussion about game engine design, but let me tell you: people tend to get ferocious when you pit them against each other. "Double state"? "Triple renderstate"? "Extrapolation"? "Decoupling"? These are the gloves that the men put on today. This is where a boy grows up to be a man. THIS ... IS ... MMA (discussion)!!!!!
 Choosing between triangles and cubes is one of the most difficult things in the world, solving world-hunger is easy compared to this! Triangles are simple and have nice properties, but cubes have nice symmetry. We can build cubes out of triangles, but not the other way around. Triangles are nice for rendering, cubes are nice for alignment. It is like choosing between chocolate and beer, they're both delicious, can't we have both? Wait, can we? I might be on to something here.
3.Review and RefacturingOur-fallen-comrades
 Today I have mixed feelings. It is time to say goodbye to some of our fallen comrades, but we can also rejoice that our army now has more room for new recruits. It is time to refacture the code and review some of the decisions we made before we continue with new fun stuff. Today marks the end of an era. Today we look back and respect our elders. Today I might finally become serious. Today I'm in the mood for pizza. Hmmmm pizza...
 2.14.Procedural Emptiness
 I dislike most procedural generated worlds and am in the business of generating one myself. There are plenty of obvious pitfalls that we'd like to identify that makes most procedural generated worlds only interesting for half an hour. I'm not saying I can do any better, but the least I can do is try to be better. As we're approaching the point that we're actually generating polygons it seems to me that it's a good idea to look at the generic flow of procedurally generating worlds.
 Any procedural world without different types of biomes is doomed to be bland. It is possible to create biomes using a temperature and moisture distribution, height-based or even completely random. We'll probably mix these techniques but have as requirement that no single biome may be so big that it'll become boring to traverse. In this part we'll discuss clustering to create area's that will contain one type of biome.
 2.12.Planetary Maze
 Mazes are stupid! As a child I may have found them fun for a while, but not anymore! When you are walking through a maze you never get the feeling of "oooh what will I see around this corner?", it all looks the same! That's just so boring. It wouldn't be much of a challenge if you remember exactly where you've been before, so for a maze being boring is kind of a prerequisite. sigh.... 'mazes'. Let's create one!
 2.11.3D Sphere
 We've finally added some depth to the demo's. Get it!? "Depth" because it's 3D? Whahahaha, hilarious! It's just a cube and a sphere, but that sphere will be a mini-planet someday. This sphere is actually a whole lot more complicated than you might expect. It contains oceans, forests, deserts and creatures roaming the wild. Unfortunately everything is colored brightly green so it's very hard to see them, but I ensure you, they do exist. ... haha ... depth, that was so funny!
 2.10.Resource Management
 Another update already? Yeah... All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy. All play and no work makes Alex a sharp boy.
 2.9.Multithreaded Renderloop - Part 4_Better
 Breakout was one of the first games I started playing, or one of it's many clones, I'm not sure. It is totally irrelevant to the topic we are discussing, Multithreaded resource loading, but that doesn't discourages me! If I want to talk about Breakout I'll just talk about Breakout, it is my blog-thing after all. I'm not known for having very coherent thoughts so it's probably best if... Hahahahahahaha, it's a giraffe!
 2.8.Multithreaded Renderloop - Part 3
 I was working on part 3 and have quiet a bit of text typed. Part 3 was supposed to be about resource management on the video card, but I thought my current tests are fun enough to show. That wall-of-text I typed about resource management will have to wait for a couple of days. Maybe, if I have some time left, I'll take a stroll on the internet to find some relevant pictures. For this part we've included a video so you don't even need to download the source or binaries!
 2.7.Deterministic Behavior
 Much of the engine design so far is based on the principle that I want deterministic behavior, while having a dynamic, non-blocking, rendering procedure. So before I start typing up Part 3, i'll take a break and talk about the reason why determinism is a feature you might want to have. I'm not talking about the philosophical discussion of free will v.s deterministic behavior, determinism has an impact on real-world applications.
 2.6.Multithreaded Renderloop - Part 2
 Who thought you could use more than 50 words to describe a rendering loop? I'm going for the Guinness book of world record to type the most words about such simple concept. You know what? I think I'll write a Part-3 too. Yeah I'm still not that interested in continuing the DRM code, so we need to come up with subjects that'll keep me busy. It's not all about making progress! Really it's not. I just want to avoid parts that are boring.
 2.5.Multithreaded Renderloop - Part 1
 All that talk about DRM made me a dull boy, so to mix things up a little we're gonna implement a decent multithreaded rendering loop. It may not be the most interesting topic, but it is often overlooked as something you can implement at some later stage. If multithreading is implemented when the game is as good as done, it will likely be very messy and contain many WeIrD bugs. To prevent future WeIrDnEsS we'll just implement it now.
 2.4.Unicorn Ranking System
 In the serene landscape of unicorns the love and magic is slowly disappearing. Unicorns now fight for survival in 4-way free for alls just to be crowned the most beautiful of them all. It's a battle royale of creatures otherwise known for their stature and beauty. No one is spared, there can be only one! Who do you think deserves to be crowned king? Who do you think deserves our admiration and loyalty?
 2.3.Music + DRM Part 2
 The soothing music and the view of unicorns is making me feel all tingly inside. This will be the first release that has some actual content. True, it is still only DRM related code, but we've done some programming that will also help us in creating a cool game. This release is able to play music and shows a functioning GUI for the unicorn DRM nag-screen, but most important, the buttons make clicking sounds =D.
 2.2.DRM - Part 1
 We started with the DRM system so there aren't any nice things to demonstrate. We estimate at least 2 more posts about DRM till it is completely functioning, so I apologize for all the boring posts that are yet to come. Now that we have 2 Omega-versions we can test if the setup-system is working properly and that we are indeed capable of having two versions of this game installed at the same time.
 2.1.My First Omega
 While writing this I'm drinking beer (typing with just one hand). I have cause for celebration! This page marks the date for the rest of all eternity to be the date that the first version of Alpha and Omega is released. Sure you could say that it is just an empty project or that drinking alone can hardly be called a celebratory party, but to those people I say: "Mweah". Thats right, you've heard me. I just like to drink beer and sitting alone in room is plenty of reason to open that bottle of bubbly burps~
2.Let The Programming Begin
 We are about to start programming and are setting up a project in Visual Studio to receive every line of code we are able to squeeze out of our fingers. Setting up a new project requires us to think about a decent structure for binary releases. Files hierarchies, Installers, Versioning, Code Signing, no stone is left unturned. The next page is surely is going to have a link to a zip-file and even though it will not contain much interesting stuff, it will be cause for celebration.
 Wow, that is really pink, it makes my eyes bleed. I wanted a colorful picture because the last three were kinda dark. Sure I could replace it, but that takes time and time is very precious to me. In the time it takes to replace the picture I could just as well write a small piece of text to introduce the page on Digital Rights Management. So now my motivation is clear, I've written down some of my thoughts on DRM, so yeah... DRM, yay.
 1.5.The First Alpha
 We are almost done brainstorming, there are just a few steps left. We know what we want to make, what programming environment to use and even know the long term goals of this project. Now its time for short-term goals, we are working towards the first compilable chunk o' game. I'm getting excited! I'm getting that tingly feeling all over my body and if you're a programmer you know what I'm talking about, the joy of starting a project (as opposed to finishing it).
 What is it that we want to achieve? Will I really be content by creating a visually pleasing tech-demo? Its like you really want to have a loving relation but instead of searching for "the one" you lock yourself in a room with a magazine (Donald Duck being my personal favorite). The source will probably get lost in a weirdly named directory on my hard disk never to be used again (or at least 95% of it). This is how these things usually go and I'm not really sure how to break out of this circle of failure.
 1.3.I Changed My Mind
 Compiling my source every time I change some function is so much work, maybe I should figure out a way to speed up this process. If somehow I can find a way that removes this tedious step I could make my development process a whole lot more efficient. That lack of cross-platform support is bugging me too. It may be a bit too soon to start cheering, but I might have found the solution to all my problems.
 1.2.Programming Language
 There are so many cool programming languages to choose from. We could go for Haskell, LISP or just go back to the roots and start coding in Lambda Calculus. It would be boring to discuss these languages because everybody already knows that LISP is the superior one. The real decision to make is whether we'll use Common Lisp or Scheme. I think I'll go for Scheme just so I could play around with Chicken and Stalin.
 1.1.Procedural Content
 Programmers are not well known for their ability to create worlds that are pleasing to the eye because they usually stink at graphical design. I'd love to please, I want to please so hard, but I too have to admit that I'm not very good at it. Usually we ask a bunch of designers to remidate this problem, but that would require me working with other people. The obvious solution is to use procedural generated worlds, but somehow I got sidetracked by the fear of being eaten alive by Velociraptors.
 Usually I just start programming, see how things go and start all over again because somehow I got sidetracked to optimizing sort algorithms. I've heard from this one guy of a new technique called "thinking" that requires us to visualize what we want to do and want to achieve. I told him he was crazy, but he insisted that he had reasonable success with it. Obviously I asked for statistics to support this claim for which I'm still waiting today. Just to proof that projects will also fail when thinking things through, I will start with a brainstorm.
 Being just one guy, my chances of creating something cool are very slim. If only I was two people or maybe even three. There are other guys out there with similar blogs as mine worth checking out, but cooperation is probably not an option. I'm just some no-name guy trying to entertain myself with a programming-game-design-challenge. If only I had a multiple personality disorder than we could have done this together.

Comments are closed.