• Advertisement
• entries
13
• comments
31
• views
15833

### About this blog

My Programming Journal

## Developing a small game with built-in level editor!

It has been a long time since I've posted anything in this journal, in fact I sort of forgot about its existence! Won't do that again. :)

I'm not sure how many people are familiar with it, but I'm using App Game Kit from The Game Creators, the same company behind DarkBASIC, to create the base engine for a really simplistic game. I won't get into too much detail about the game now, but suffice to say it should be a fun one to program!

One of the features of the game is going to be a built-in level editor which will allow the player to create their own unique levels. It will be fairly easy to implement, as the editor is basically going to be its own program in a separate included file, which will store map data in an array that the main engine will be able to use. I love building level editors, but there are a few things I realized player's would want in one.

• A GUI System (while I'm comfortable using keys and text, players will want buttons)
• Undo/Redo Funcionality

Both of those things I plan to work on and get operational before I start work on anything else. I'm actually working on the Undo/Redo API first as I thought that would be the most difficult. Turns out it is actually really easy!

First, I'm creating a custom type to store metadata in, then declaring two global arrays based on the type. Whenever an action is performed, I call a function which will record the action into the undo stack. Whenever someone undoes the last action, it will copy the information from the current element of the undo stack into a new element of the redo stack (say all of this ten times fast, I dare you! :P ).

In order to keep memory usage down, there will be a limit of 50 undo/redoes available. But the really good thing about this system will be just how customizable it is, if the user wants to record other types of data, all they have to do is add the necessary information to the custom metadata type.

I know there are much better ways to handle something of this nature, but this was the best solution I could come up with and I'm sticking to it! Anybody here use AGK that might be interested in it? :)

## OId Ideas spawn New Ideas

It's funny sometimes how one project you're working on can inspire new and completely different ideas, especially when the project you're working on is completely different and has unrelated game mechanics.

What originally started out as a 2D platformer is slowly evolving into a different game inside of my head, and the ideas I have for it are many and diverse. Sure, the genre has been done before, but I have several ideas to make it unique.

The game will no longer be about cubes, or even be a basic platformer. Instead, I'm going for a different idea all together, and I'm excited because I know I can do it: a 2D, sidescrolling platformer/action-adventure RPG.

You control a bumbling, inept, and ridiculously klutzy, very young Wizard, whose backstory shall remain in the depths of my head for now as I don't wish to give a lot away. He is the descendant of someone important, but again that shall all be revealed later. Perhaps I've already said too much!

The basics of the game are ones you would expect to find in any RPG game:

• Class system
• Magic/Hit Point/Stamina system
• Attack/combat system
• Level-up system
• Item drops
• Various other RPG-type things that we all love

So that's my new idea?, and I'll post some more on it later on. I just wanted to share some of my new plans, and possibly gain some encouragement. This will be quite the task, getting this made, but I've decided it's the game I truly want to make. Right now, I'm just starting the pre-production phase. I don't even have sketches drawn or anything like that yet, but I have a lot of notes and the basic story outlined, so we'll see how much further I get along!

## Keeping Cuboidz 2D

Well, after some considerable thought, I realized that keeping Cuboidz 2D would probably be the best route to go. Finishing the game in GameMaker should be easy enough, after I test out a few more features!

I also spent some time today re-designing the ground tiles for most levels. I will simply re-color them for other levels, as well as design a few more variations for more unique layouts, but this is the basics of what I have so far:

You can see that there's a lot more detail added in, while still keeping the theme of squares and rectangles. I discovered that blending two colors with GIMP's smudge tool, using a noise filter and then using the Posterize effect as the last step really helps to make graphics look retro, and it's easy enough to pull off! These really look somewhere between 16 and 32-bit graphics, eh?

The shadow underneath the grass sections really helps to make them "pop" out more, and the squares in the dirt actually serve two purposes.

1) - To reference Sonic the Hedgehog (one of my favorite games of all time!), and
2) - To hide some sections that I couldn't quite make seamless. The squares draw your eyes away from the inaccuracies, and literally cover some of them up! If you look REALLY closely you can still some stuff, but otherwise you wouldn't know they were there!

Now I just have to re-design some of the other sprites, and I'll be good to go!

## Would Cuboidz be better as a 2.5D sidescrolling platformer?

Well, I've been stuck on my Cuboidz project for quite some time. I haven't been working on it that much, because I've realized that 2D, while fun, is rather limiting to several ideas I want to implement in any of my games.

Secondly, as great as GameMaker: Studio is, it has severe limitations when compared to Unity3D. For example, in Unity, you can set up variables in your scripts that you can then access from the inspector, and essentially fine-tune certain things within the editor without having to recode a tone of values. You can even do it while the game is running!

GameMaker has no such option. In fact, its scripting is really rather limited. Do I think it was a waste of $50? Certainly not, but I do wish I had thought about it a bit longer before buying it. It's great for games, just not the one I want to make right now. Anyway, that's not the point of this post. I'm wondering, would people find Cuboidz to be better in a 2.5D style, similar to Rochard? Or should I stick with the 2D entirely, which can also be done in Unity? Another reason I'm considering Unity is because it allows for publishing to a wider range of Linux distros, whereas GameMaker officially only supports Ubuntu. There really are a lot more things one can do with Unity! Anyway, what does everyone think? ## Making good progress on new game Well, I've learned quite a lot about how GameMaker works since I've last posted in this journal, and I've even started developing a game! It's sort of a "test" game. I chose to make this one before "A Little Epic", because it will be a simpler platformer, and have a much simpler mechanics. Here's a little video, showcasing (now defunct) graphics, and the basic mechanics. I've done all of this in about 2 1/2 days. Planned platforms for release include (once I obtain the license) Ouya, Windows 7 and Windows 8, and possibly Mac OS X. Here's a screenshot, showcasing the updated visuals! ## It's been a long, long time... Well, it's been a really long time since I've posted here on GD.net, or used this journal. A lot has happened over the last year. Aside from continuing pre-production on my game project (previously known as "A Little Epic"), I've been really busy with figuring out what I need to do with my life, and trying to get things in order. I've decided to pursue game design and will begin online classes this summer. Anyway, I probably won't update this journal very much. I'l be posting in my more public blog. However, I will post occasional updates here as well, for those who don't feel bothered to go to yet another blog (I don't blame you :P ). Along with everything else, I've decided to use GameMaker: Studio for my game project. GML is a decent scripting language, and the features of GM:Studio are just too nice to pass up. Basically, I had a basic sidescroller working in about an hour, after following all of the tutorials I could find on the subject, and it's really easy to use. It could even do 3D games, though with Unity available, it may be difficult to compete. :P Anyway, I'm back now, and hopefully I can start working on making this game soon! -YodamanJer ## Life Update Well life has certainly gotten in the way of my developing desires. I work almost full-time at my job now, earning$7.50 an hour, paying bills with said check and occasionally taking my girlfriend out to dinner. It's also pretty much summer now, so I spend less and less time on my computer, enjoying the nice weather outdoors.

I'm also about to head a Youth Group project at my church, so time on the computer will be less and less. Does this mean I'll not be able to develop my game, A*Little*Epic? No!

Part of the reason I haven't been working on it as of late is that I've been looking for a suitable language to code it in. GLBasic was great, but I just can't afford the price of it and honestly, the fact that the code had to be written in all capital letters drove me insane. I then looked into Panda3D, and while that is a GREAT engine for small games, it slows down massively when you add sprites and super-detailed models. It's also ridiculously hard to configure Panda programs to your requirements. It may be an open-source engine but they sure try to make you stick to their specifications.

So I've gone another direction; OpenGL and Java. Thus, I discovered the Lightweight Java Game Library (LWJGL for short).

Interestingly, it's what Minecraft is programmed in, so you know it's quite the capable engine. Paired with a networking library (LWJGL does not support networking off the bat) and some assets, LWJGL will give me the power that I need, in a language I'm finding easier and more powerful than I dreamed possible. Yep, I actually love Java. Time to do some work with it!

## It's been a while...

As the title says, it's been a long time since I've posted here. This is mainly due to the fact that I got a ton of hours at my job and haven't really had much time to sit at home and do much of any game development, let alone programming of any kind. I also discovered how addictive Minecraft can be.

Anyhoo, I've abandoned GLBasic in favor of Panda3D, because Python is slightly easier for me to manage then another BASIC dirivetive. It also runs on all Operating Systems natively, so it's much easier to use for game development.

So in the next couple of months, you'll start seeing some images from a game I'll be developing with it. It's a port of my old game called "Coins Galore", which you can view here on my website. That's also where my main development blog is located.

## Multi-Platform Development!

So I haven't ordered it yet and won't be able to until next Month sometime, but very, very soon I'm getting myself a shiny new iMac. It will serve two key purposes; one is to start developing for Mac OS X with GLBasic, the other is for video editing, which is my other major hobby.

One of the things I hope to do with the iMac is to start changing how many games are available for Mac. Sure, there's a few commercial games available for OS X and multiple games for iOS, but there's just not as many as there could be. It's a shame, because the Mac is capable of great gaming.

My first game for Mac will be for Mac, Windows and of course Linux. It will be the one discussed earlier in my journal, and I'm going to start coding it now on my laptop. Then, when I get my iMac, I'll hopefully have a small demo to produce for it and test it. Then we'll see how it all goes from there.

## Some problems with GLBasic...

Fantastic. Just when I thought this tool would be great, I discover a lot of problems with it on my current computer. It could just be my hardware (I am on a laptop, after all), but it's really annoying to have gotten so excited over it and then find some problems.

First, for some reason or another, every now-and-then GLB doesn't want to load ANY font file and goes back to its default barely-readable default font. Terribly annoying, especially when one is relying on it to ALWAYS load the correct font file and use it. My game requires a very specific font to be used. I've made sure that my font file is located in the correct folder...so I have no idea why it's doing this to me.

Second, there's problems within setting up the transparency for Sprites, but this at least can be worked with. Originally, I was creating a tileset for my game sprites, and loading a single image and splitting it in a For Next loop.

Fairly simple, eh? Not so much; even after making sure that the originally loaded sprite was transparent, using GRABSPRITE seemingly REPLACED the masked-out pixels with black again, and even using "SETTRANSPARENCY" before "GRABSPRITE" did not work. Someone showed me a way to get around it using polyvectors and it looked simple, but I decided to just save my sprites as standalone tiles. Annoying, yes, but it works.

I'm scared to try 3D stuff because some of the demos show a lot of screwed up faces, particularly the shadow demo. Others look fantastic, though, so I'm guessing it just depends on what shader you're using and what version of OGL you have. I think my graphics chip just really sucks.

In the meantime, I'm going to study Blitz3D again, because I found a huge series of tutorials on YouTube in making a 2D platformer with it, and it's easily modifiable to run in GLBasic or even DarkBASIC, and one could also go a step further to making it with C#, which is eventually what I want to learn anyway and have been studying in my spare time with this site, which is a FANTASTIC crash course through the fundamentals of C# but not necessarily on programming itself.

I still want to use GLB someday because the platform support is phenomenally good, but until I figure out why it's not working very well on my computer, I'm sticking with B3D and XNA.

[Edited out the code snippet because it got messed up]

## Some notes on my future game

Something that I've realized recently (over the last couple of days) is that I have NO idea how to program 2D games. When I first started programming back in 2007, I jumped head-first into 3D and never even looked into the 2D stuff. Normally, people start out with 2D, but not me; I was too excited about making an explorable world, similar to "Super Mario Galaxy"...but that never happened.

So I have a LOT of research to do on making a sidescrolling 2D platformer, as that's what my first game with GLBasic is going to be.

The photo below is simply to prove that I've been working on sprites and that I'm just messing around with them to see how to make them seamless. I keep going back in GIMP and editing the sprite, but I think I finally have found a final design I really, really like, but I might still change a couple of things.

Originally, "A*Little*Epic" was going to be a 3D game, but with throwbacks to old 2D sidescrollers. The levels would be completely linear, the player locked to the X/Y coordinates to simulate the old days where the Z coordinate wasn't yet in use, and the old high-score-gets-you-lives thing would certainly come into play.

But before I could even start work on the 3D engine, I started looking into better tools to design it with. First, I thought that DarkBASIC professional would be perfect, but it has a lot of troubles with Windows 7 since SP1 was released. Blitz3D was my second choice, but I didn't want to be restricted to just Windows, as I also enjoy working on Linux every now and then. XNA was my next choice because I could develop it for the Xbox 360, but again, it used DirectX so it was restricted to Windows. Plus, as much as I've tried learning C#, it confuses me more than C++!

GLBasic was discovered, and it's the perfect tool for this game, I just know it. It supports so many platforms it's almost unbelieveable!
Now, I'm making this game 2D because I not only want to start making 2D games, it's the only type I can make with the demo version of GLBasic.

Here are some notes on the features this game will have...

• Cutscenes. These will be very key to the whole game, as there's simply no other way to tell the story. It will be reminiscent of the old cutscenes games used to have, with no spoken dialog, just a simple box with scrolling text...I like retro.
• Bonus Levels/Bonus Worlds. This is something I love about certain video games; unlockable levels/entire worlds. If the game has hidden the paths to these unlockable areas pretty well and lays out clues to their existence, it keeps me coming back to the game in an attempt to find them. I plan on at least four very hidden, very unlockable worlds, and once the player has won the game and found every secret, something truly Epic will happen...
• Built-in Level Editor. This is for replay value, as is the last note. I want players to be able to design and play their own levels, and to be able to share them online. With that functionality, the game will almost never be over, as people can submit and download new levels every day!

Granted, that's not a lot of features, but they're very important ones. And there's a lot I haven't shared yet, and won't until the first demo of this game (due out in twenty years, give or take a couple of decades) is released for testing and review. Stay tuned if you're interested, and I'll post more about this when I have an actual game up and running!

Time to look into how to make this thing....

## GLBasic - My next game development tool

My next game will not be produced with Blitz3D after all. After studying GLBasic for a few days and playing with its various demos, seeing others' incredibly impressive work and looking at screen shots and videos, I would be stupid not to go with GLBasic.

The language is a lot simpler of a switch from DarkBASIC to Blitz3D, and it also seems to be more powerful. It uses OpenGL to render its graphics as opposed to DirectX, enabling support for Windows, Mac OS X, Linux, Android, the iOS platform and even webOS! Quite simply, GLB is a very powerful tool.

It is absolutely perfect for the game I have in mind, which I wanted to be able to be cross-platform anyway, so this is a God-send for sure. Thanks to ukdm for telling me about it, without him I would never have discovered it!

So, now I've just got to purchase the full version (after my next couple of paychecks, so in about a month's time), and I'll be able to start programming my game that will run on ever computer platform out there right now. Since I dabble in Linux from time-to-time, this software is perfect because now I can develop more 3D games for Linux as well!

## Introduction

Hi all!

I'm new to this forum, but I'm certainly not new to programming! I've been dabbling around in DarkBASIC for ages (since 2007) and have created a few interesting things. My main projects have included level editors and small platform games, but unfortunately I lost all of them in a crash, and even worse is that since DarkBASIC has issues with Windows 7, some of the back-up code from those old programs I've found on old hard drives do not work on my current system. All of this has led me to Blitz3D, which the more I play with it, the more I realize just how much better it is than DarkBASIC.

It uses a syntax more C-like than DarkBASIC, and as a result it's closer to "real" programming than DarkBASIC. DarkBASIC does a lot of things behind the scenes so that the programmer doesn't have to deal with it. While this seems like a great idea in theory, in practice it totally wrecked my view of programming. Blitz3D has forced me to think about programming in new ways that I hadn't thought before, and I like that. Granted, every other programming language does the same, but I really like Blitz right now and want to stick with it for a little while. It's a great language!

However, this does not mean that I won't learn a more advanced language such as C#/C++. Eventually I do want to get there, and I even have a few books on the languages to study in my spare time. Eventually, I want to develop games for the Xbox 360 with XNA...but that's at least a couple of years off! So in the mean time, my games will be made with Blitz3D, and I'll release them soon! I'm working on one now that I will detail in future posts, and I must admit I'm very excited about it. It's a 3D Sidescroller, and that's all I'm going to tell you.

So if you're interested, stay tuned! Otherwise, well, I'll post a thread and you'll be surprised. Either way, you win!

-Jeremy, aka CoffeeCoder

• Advertisement