Tag Archives: game development

Extra Credits Game Jam 5

I entered the Extra Credits Game Jam 5, and completed a simple platformer game. It’s similar to the two Ludum Dare platformers I made and currently have on my Portfolio page, but also different in a couple of important ways. The first, clearly, is that I used some art and music I didn’t make myself. The second is that it’s made in Godot instead of Unity.

I’ve been working with Godot for the last few months and the switch has been mostly positive. Expect more games made with Godot from me in the future!

For now I’m going to link the itch.io page of my Game Jam entry, but it’ll go up on my Portfolio some time after the Jam is over.

Enjoy Puppy Passages:

Tagged , , ,

Ludum Dare 40

I had neglected to add my Ludum Dare entry from late last year to my Porfolio so I did that just now. It’s a game called Warehouse Blues that I made in two days in Unity from scratch. It’s not perfect but I think I did a better job than my last 2D platformer.

Tagged , ,

Ludum Dare 37

I competed in Ludum Dare 37 and managed to complete a game!

Here’s a link to the judging site: http://ludumdare.com/compo/ludum-dare-37/?action=preview&uid=7912

Tagged , ,

Ludum Dare 27 – Episode 2

After leaving the college I spent some time relaxing, to shake off what anxiety had built. Then I procrastinated for an hour, and finally went out to do some more work. I’m only just reinstalling Eclipse again, and it’s already four, and less than an hour before the cafe I’m working at closes.

Hmph, no different here.
“Once Eclipse restarts, you must specify the location of your Android SDK directory:

In the “Welcome to Android Development” window that appears, select Use existing SDKs.”

And yet no such window appears. Maybe I should just download the version of Eclipse already set up to use Android and hope that works with the other things I need?

Blah, now I can’t even delete the eclipse folder. I’ve gotta restart my system…

Okay, restarted and starting on my fourth? Eclipse install of the day. It’s strange though, the file I’m downloading is half the size of what the ADT thing installed before. Did I install two copies without it overwriting maybe? Oh well…

Also, hey Google, you should make it so that when you close a window it gets moved to the top of your history. When the tabs I had open are things I have to dig through my history to find? I don’t like that.

Alright out of time at this place, gotta find another place.

Tagged , , ,

Ludum Dare 27 – Episode 1

I’ve begun my Ludum Dare attempt. The theme is 10 Seconds and I’m going to try to make a 2D platformer where the background, and some of the platforms, change every ten seconds.

I decided to abandon Slick2D, which it turns out is dead and most of the guides and tutorials are gone. Instead I’m going to try using LibGDX. They have a lot of documentation and tutorials, and even an example platformer based on one of Notch’s Ludum Dare entries. I’ll probably base my work on that, which I’m pretty sure is legal in the Ludum Dare rules because it’s publicly available.

I’ve already hit a problem, though. I installed Eclipse and I’m trying to install the Android Toolkit. Why would I do that, you wonder? Well, it’s neccesary for LibGDX, which can deploy to Android, and some other platforms. It seems sort of like HAXE, except with Java instead of ActionScript, so that’s neat.

Unfortunately, things didn’t go as the instructions instructed. I think it might be because I wasn’t running Eclipse in Administrator mode, and it wanted to create some files in a protected directory. I’m trying to get it to make the files again but it’s not as easy as it sounds…

Easy solution; I’ve barely started, I’ll just reinstall Eclipse and do it again in administrator mode.

Well, that didn’t work. Shoot. Not sure what to do now…

Trying to use the SDK Manager. Geez, this thing is trying to create directories without permission too. Why do these programs expect carte-blanche when they don’t even try to boot in administrator mode, or ask permission or anything?

Geez, I’ve been trying to get this set up for a couple hours now and I still haven’t gotten it to show the “Welcome to Android Development” dialog it said to expect in the previous step.

Oh for goodness sake, now I can’t install the GWT Project plugin. This is why you’re supposed to get your tools ready before Ludum Dare. Geez. Well, I can’t say I didn’t TRY to get ready…

Geez Gravy, I don’t even know what to do at this stage… It says it can’t install the plugin and I don’t see any other options on the GWT Project page. I’m also uncomfortably warm.

It’s a wonder I’ve been having anxiety issues the last few days as I tried to prepare myself for Ludum Dare, and now that I’m actually doing it and encountering tremendous difficulty, I’m just plugging away.

Alright, nothing is working here. I think I’m going to take it from the top again. As soon as the more basic version of Eclipse finishes downloading, I’ll head out to another place towork, and to get lunch, because I’m too warm here and I need a change of scenery.

Tagged , , ,

Collision Detection Insufficient

Delight of delights, I finally have a modern laptop. I’ve already gone ahead and moved most of my stuff onto here, and I have already got my previous work compiling and running. Great! That’s how I like things; working. I like myself working too, so I’m happy to be back at the cafe with my IDEs open.

Last time I worked on my programming, I added in the Animals to my little sandbox. They don’t DO anything yet, but they’re there. Little blue triangles.

I’m going to use a state-based sort of AI. Each critter will have a bunch of different behaviors wrapped in functions, and depending on what state they’re in, they’ll use different functions. It depends on their needs. These first ones will focus on eating, so they’ll have a hungry state, and a rest state. I’ll probably throw in a play state later.

So first off, I’m making the hungry state. When an animal is hungry, it’ll start using its senses to search for food. To simulate senses in this 2D world, I’m going to have the animals generate invisible shapes and see if those shapes collide with things. There’ll be a sight shape, which will be sort of like a cut-pie in the direction the creature is looking, and a scent shape, which will be a big circle. These guys will be pretty dumb to start. If they see food, they’ll move straight at it. If they smell food, they’ll move in it’s general direction. If they don’t see or smell food, they’ll keep wandering untill they do.

Using shapes like this for collision testing might be a bad idea. It’s easiest to test collisions with a square. Using a complex shape makes things a lot more processor intensive.

Hmm… On further investigation, it looks like HaxePunk entities can only have rectangular collision areas. Shoot.

*loads up the Entity code* Hmm… the collision detection is surprisingly simple. I could probably extend it myself to make shaped collision detection. I’m not sure if that’s a terribly good idea or not though. The more I work with HaxePunk, the more it feels like I’m pushing beyond it’s intended purpose.

Maybe I should do some research on how other people have solved this problem before. Or maybe I shouldn’t. It’s a tough call. They say that you shouldn’t worry about optimization at first, just make something that works, and then refine it afterwards. I could make a shaped collision system. Of course, I could also do the senses by other means than colliding with objects.

Yeah I think I’ll do research for a bit, see if I can dig up any ideas.

Hmm… Well, one thing I’ve learned is that apparently there’s a pollitical blog named Collision Detection. How about that?

Another interesting thing is that when you google Collision Detection, you mostly get linked to articles from the turn of the century.

Oh, here’s one from last year. Looks interesting. The math involved may require me to do further research, though. I’m lucky I’m able to figure out advanced math like this, even though I didn’t learn it in school. I wish I had, though.


This article assumes the reader has a basic grasp of mathematics and geometry he says. Matricies are not basic! EVER!

Well, it seems like it’s a good article anyways. I’m not done with it, but I need a break. Learning makes my anxiety peak.

Tagged , , ,

The Plants are Planting, and Synthesizing Food

Well, I’ve been working a bit more on the first a-life experiment. So far, I have some ugly scaling bitmap plants that grow over time. Some of them are overlapping the boundary of the sandbox though and I don’t want to have that, so I need to make them move away from it when they touch it. Also, future me, draw your graphics large and scale them down. I don’t know what I was thinking making little green dots and scaling them up like this…

A big problem I’ve got is that when the plant collides with the sandbox boundary, it doesn’t give me the location of the collision. It’ll give me the colliding entity, and if it was a regular entity I could extrapolate the collision based on its location and dimensions, but in this case I’m using a tilemap and it doesn’t give me the tile’s info, it gives me the TILEMAP’s coord, which is 0,0.

Oho! I have come up with an idea. It’s a bit dirty but if I make sure that, upon growth, the plant is at least 16px from the border, it won’t overlap!

… Not sure that’s a great idea.

Instead, I think I’ll just futz it, leave it as it is, and only spawn plants at least their maximum size away from the walls.

*work work work* Okay, looking good! The plants are functional, so it’s time to add the animals. To start with, I’ll be making a mobile herbivore that will eat the plants, mate, reproduce, and die of old age.

They’ll need to have a sense of some kind to tell what’s around them, what direction to go, and so on. I’m thinking I’ll give them a radial sense, since most herbivores have a wide range of vision. I might give them a sense of smell, too. Sight will give them the exact location of a thing if it’s in range, and smell will have a longer range and give them a general direction to go in.

I’ll start by making them sense food and eat it; I won’t do reproduction untill I at least have them moving around and finding food.

But, for now, it’s getting busy in the cafe, I’m getting tired, the sun is shining in my face, and I’m all done my food. I think I’m going to head home.

Tagged , ,

Back to Work

Back to work after a while.

The task list I added previously is helping a lot. I was able to quickly get back to work with only the briefest refresher. I just polished up the generateLocationText function to wrap the text in a font tag to give it a nice format.

Next I’m going to work on the input method for the textworld class that recieves the textEvents from the interface and handles them.

*work work work* Okey dokey, it recieves input and handles it. I’ve got it sending flash traces whenever I click on one of the menu links.

Next I’ve got to make some exit objects and link them to spaces, so that I’ll be able to move my player around the little world I’ve created so far.

I haven’t figured out just how I’ll link a text line with a specific object. I’ve been thinking of using hash tables for each of the item types and including the hash in the text though. Already have a hash table for the spaces so that the exits can find them before making a more solid reference.

Alright, I’ve already got some exits I made before and forgot about.

I’m also considering making it so that in order to create game objects, I have to use methods in the TextWorld object, which will add them to the proper lists when they’re created.

Hmm… It occurs to me that having a single switch statement for all of the possible input just isn’t sensible. I’d have to put in a case for every possible object. I’ll have to use it as a sort of code.


exit51, menuOption, action3

Maybe something like that. For the actions, when you click on an object in the Location text, it’ll put your options for interacting with that object in the action text area. The actions might have to be big compound things, since it needs to include what type of action it is, as well as what the action is happening to.

Well, I’ve made some progress but it looks like it’s starting to rain, and there might be something more serious rolling in. So, I’m going to pack up and head home. I wish I had a better idea where I was headed with this program, I’m usually a lot more clear on how everything will work.

Tagged , , ,

Lots of Lists

I’ve been working for a while but hadn’t written anything in my open text editor for the blog. Didn’t have anything to say, I guess. Now I do.

I’m not sure how I want to handle the list of a space’s contents. I was going to have it be a list of things, but then I realized that thing children would loose their special properties; it would store them all as things, even mobiles, exits, and other spaces.

There’s two ways I could handle this. The first way would be a list with the Dynamic type, which can have members of any type but isn’t perfect across different platforms in HaXe. Or I could have seperate lists for each of the possible child types. That would mean a list of all the contained things, a list of all the contained mobiles, a list of all the contained spaces and a list of all the contained exits. The downside would be that I would have to handle all the lists seperately. That might be good though too. I think I’ll do it that way.

Alright that’s pretty much it. Not much to say this time, I did a bunch of stuff but I’m so sleepy it’s hard to say what. I will say that I added a couple of text files to the project to help keep things organized. One describes the game’s intended logic, and one is a list of tasks for me to do, so I know what I’m working on and what to do next.

Now it’s time for sleep, probably.

Tagged , , ,

TextWorld Coming Along

So the essential game loop of my initial TextWorld will be something like this:

Respond to Player Input by performing the task associated with the link that was clicked.

Run down the list of active mobiles, updating each one

Check if the player’s location has changed, and update the Location text accordingly

Check if the player’s status has changed, and update the Status text accordingly

Add action text based on the player’s input and mobile actions, and bring the action area to the bottom of the scrollbar

Wait for Input

I’m bringing back the timing factor. Each action the player takes will take a certain amount of time, potentially zero if the action doesn’t do anything but open up another menu. Or long enough that an active mobile would be able to interrupt them. There’ll be a list of mobiles to see who goes next based on the time it takes to complete their next action. If they interact with the player, the player is given the option of a response. Likewise for mobile to mobile interactions and player to mobile interactions.

Each of the Update stages will require complex coding, especially for getting the text right. That’ll be the hard part.

I think my first task will be to set up the world tree, the list of space objects and their interconnections, and load that.

Then I’ll have to make the player object, and put it into the space.

Third I’ll have to develop the functions that assemble what the player sees, based on the location of the player object.

Fourth I’ll have to deal with the interaction between the player and the text links, to allow the player to move between spaces and perform actions.

After that I can start making mobs, widgets, and actually making the whole thing a game. But first things first; the world tree.

I’ll need to make a function that loads the world tree, to begin with. Eventually I’d like to have it loaded from an XML file, but for now I’ll do it all in code.

Hmm… I forget so soon, I was going to use a list of spaces rather than a tree of linked spaces. Load all of the spaces into an array or a hashtable, then have the exits lead to particular space numbers, since I couldn’t use direct references.

For now I’m going to make the description for the room all myself, but later I want it to be procedurally generated based on the room contents.

Okay it’s almost time for DnD, time to go be nerdy in a different fashion. Glayven.

Tagged , , ,