+1 Our Site! Let your friends know you like us.

Sunday, December 18, 2011

LD48 Post Competition Write-Up

This LudumDare, I didn't have *nearly* the time or focus compared to the last one. I had family pictures, a huge family party, EATING, etc. I think I probably got in 20 hours of solid work, minus about 6 that didn't get used. Here's the broken down takeaway:
1. DO NOT START PROGRAMMING BEFORE PSEUDOCODE/DESIGN IS DONE. This caused me to lose a MASSIVE amount of time. Had I done about an hour more of design and planning, I would've moved right past my first implementation, and would have gained 5 hours of time. My entry would've been much more complete.
2. DO NOT TRY TO MIX GAME TYPE/CONCEPTS. It is great for long term development, but it just can't be done in 48 hours.
3. KISS. "Keep it simple, stupid" should be the tagline for the entire competition.
4. DO PLACEHOLDER ART FIRST. Trying to do artwork before coding an engine, and really the entire game, is BAD.
5. Don't go to family Christmas parties.

In all, I wrote 994 usable, end product lines of code. The one thing I did really well this competition was HAVE ALL MY USEFUL CODE IN A FRAMEWORK. That was spectacular, and saved me tons of time.

Download the game here, or in the downloads page.
Happy gaming!

Thursday, December 15, 2011

The Wonders of Collision Detection

Up to this point, collision detection has been a point of much internal dialogue for me. For instance, per-pixel collision tests are as accurate as it gets, and they provide a wonderful amount of positional information useful for many different purposes. However, it can get to be extremely expensive on the processor and GPU, so in most cases it isn't really an option.

For a while, I thought that rectangle based collision was the holy grail. It's fast, it's easy, and there's still vital mathematical information to be easily gleaned. Just try rotating your rectangles though, and you'll quickly realize that existing methods purely for rectangles will be broken.

After that, I moved on to circles. Circles are wonderfully inexpensive, and absolutely the easiest to implement. Even after parenting and otherwise layering them though, you still get  pretty inaccurate collisions in a lot of cases, such as objects with sharp angles. This can be minimized, but it takes a large amount of effort and can end up negating the speed gained over other methods.

Finally, I am where I am today. Convex polygons, as of this week, are my favorite method. I spent hours poring over different sites and their explanations of the Separating Axis Theorem. I looked at source code, I performed tests, I even looked in my Calculus textbook for help (no dice). Eventually it clicked for me, and it works wonders.

Still, there are grounds that have to be given up. SAT only works for convex polygons, which can be a bit of a hassle. You can represent any concave shape with multiple convex ones, but that is beside the point, and automagically creating multiple convex shapes from a concave source is something I have yet to understand. Also, while this method is relatively fast, it still isn't anywhere near as fast as its circle counterpart.

It is obvious to me at this point that compromises will have to be made with any method of collision, and even programming as a whole. Unfortunately, that doesn't keep it from bugging me...

Wednesday, December 14, 2011

Pathfinding (And Resuscitation)

Okay, so it's been a little while since anything went up here.
A long while.
Now that admissions of guilt are over, to the future! For the past couple of weeks I've been preparing for LudumDare #22 (click the link for a description if you don't know what that is), working out some problems that afflicted me last time, trying out some new concepts, getting better at commenting my code, and just generally practicing. I can't tell you how excited I am! No really, I can't. My motivation is a little bit gone at the moment, I've been quite sick this week.
Regardless, I *will* be participating, and I'll force myself to like it if I have to.
Today, I managed to implement some relatively simple pathfinding in a node-based system. Essentially, you split your playing map into nodes. You assign each node a list of neighboring nodes. After giving the system a starting node and an ending node, it determines which neighboring node has the shortest distance as the crow flies to the ending node, then makes that node the current node. This process is repeated, adding every node that has been visited to a "closed" list that it will not re-visit. Once the ending node is reached, the closed list becomes your path!
My system will *always* find a path if one exists (which is possible that it doesn't, considering some nodes are "unwalkable"), although it will not always be the shortest. It works well enough to satisfy me though! Especially since I spent all of my waking day throwing my currently broken brain at this problem, and all I've got is a barely working algorithm that is some 50 lines of code long... XP
Anyways, thanks for reading, and look for more posts from me soon!

Monday, October 17, 2011

Warlock Is Coming Along (First Look)

So far, I have a couple of the basic skills, some basic AI, collision detection, movement, and about half of the map generator DONE. The focus now is going to be working out the various skills, then working on a more complicated AI for each of the characters. I really do hope that I'll be able to release some time in this month!

Without further ado, here's a screenshot of what the game looks like now:

Sunday, October 16, 2011

More Art

This is very similar to the last post, but here's some colored and more precise examples. These still aren't finished though:

Saturday, October 15, 2011

Map Artwork!!

I've got some more new artwork to show you guys! Working with another fantastic person from deviantart, the game is now going to have some professionally drawn game tiles! This artist is Victor Cabanelas, and he has been wonderful to work with. I've only got some sketches for you for now, but here they are:

I'm excited for these to be implemented into the game, and for them to be finished. Note that some of these are not shown from an orthographic top-down perspective, but they will be in the finished product.

Monday, October 10, 2011

Enigma, The Shadow Backstory

A woman of little mercy, Enigma is just as her name suggests. She is a mystery to even the gods, who fail to comprehend her need for despair. They will never be able to fully understand her, as their existence is a polar opposite to her. Some say that she is the opposite of being a demigod, some say she is nothing but a human whose lover was murdered and now seeks to bring others to her level. Regardless, she has made the mission of her existence to maim, murder, and mutilate.
She cares not why the gods choose to put her in their tournaments of death, only that they continue to do so. Her  humanity long gone, she is now death incarnate, the Soul Reaper, One Who Walks With Death, and many other such names given to her by mortals ignorant of her purpose.
In point of fact, she was once human. Long before the Elders of Aegeis met in council for the first time in the Year of Great Harvest, Enigma was happy. Destined for greatness, she had mastered her fathers teachings in magic by the age of twelve. She could adeptly practice the same spells as those with decades more practice than she.
The next year, she was going to start higher education. She had been accepted as a pupil of the Elders, and was expected to quickly rise as their leader. Unfortunately for her, and for the rest of the world, she never had this opportunity. The Cult of Dominion had seen to that.
As she was running errands for her father at the market, she was approached by an old man seeking some help getting his groceries home. As he led the willing young girl to a dark back alley, she realized something was amiss, and felt the darkness seeping from his frail body. As it turned out, this man was the host for the Avatar of the Titan Dominatus. He pushed her up against the wall, and her essence left her, her body no longer her own. The girl whose name has since been forgotten was now the Avatar of Dominatus, and she would not be easily forgotten.
The Avatar left the market, and returned to her bodies home. She slaughtered her bodies parents. She slaughtered the neighborhood. She went to the Elders, and managed to kill 7 of the nine before the Grandmaster could put her into a stasis able to contain her long enough to figure out what to do. In the end, they forced her into the space between spaces, the non-existence that is emptiness, with the help of the gods. There she burns in agony, twofold because none other may suffer with her, and because she shares her body with the Avatar.
She will hunt you.
She will burn you.
She will take the fears you hold in the deepest recesses of your mind, and paralyze you with them.
You will burn.

They Ask How I Do It

1. Google is your friend!
2. Support from family, friends, and a girlfriend!
3. Dubstep...
4. Spotify!
5. THIS.

Sunday, October 9, 2011

Enigma, The Shadow

Here's a rough draft of Enigma The Shadow, one of the warlocks kept in reserve by the gods. There are some very talented artists over at deviantart.com, this one in particular happens to be Jane Barrie. Thanks much to her!

Also, expect some background for her very soon... ;)


I've decided that my current focus is going to be a game I've named Warlock.
The idea is this: Powerful warlocks are brought from across the multiverse to fight in The Arena for the gods' pleasure. They use their abilities and location to gain whatever advantage they may. For instance, one room in The Arena is a temple, surrounded by lava. As the game progresses, the lava continues upward, drowning the map. You can use your abilities to push people into the lava, pull down a statue around their ears, or simply evade them until the moment to strike is right.
There will be some stories and illustrations forthcoming, so bear with me as we explore this new setting together!


Welcome to the Syntactic Sugar Studio Development Blog! Here you'll find the latest and greatest of development information concerning the Studio projects.
Stay tuned for the upcoming!