Category Archives: Game Development

Tribulation of Colored Lights

I was hoping that the issue with colored lights would slip under everyone’s radar. Oh how foolish I was! Nearly everyone who played for more than a few minutes would not only notice but feel compelled to point out the oddity of the Way Crystal’s blue light.

crystal_light

There are a few parts of Crea’s engine that I try to avoid due to the inherent complexity of the system – lighting is prominently at the top of this list. I was tempted to leave things be but when I started working on lava I realized lava wouldn’t look right without giving off a warm red glow. Thus began my tribulation with colored lights.

Lighting Background

My first attempt was kind of a mess with the lighting affecting the background

I managed to hack my way around it though.

Lighting Working

Mostly working lighting with many colors

Had some fun playing with the brightness, saturation and contrast of lights

Had some fun playing with the brightness, saturation and contrast of lights

After playing around with the lighting I found two small issues with it and both were due to my hack. One is that when something was transparent it would look weird at night. The other issue was that sometimes the background would show through the ground. It is hard to see since it is a few pixels scattered about.

lighting_alpha

Death particles with weird black edge

Background bleeding through

Background bleeding through

After hours of attempts to resolve these issues I conceded defeat. While beginning to write this blog post I had an epiphany and managed to resolve the core issue and abandon the hack. Yay!

While I had these two issues I reworked the lighting system some to enable light sources coming from anywhere instead of only entities. Now particles can be a light source or even lava!

lava_flow

Weekly Recap #5

Something amazing happened this last week – we finally released beta! The response has been quite positive. Thank you to all of those that have bought beta to help support us and thank you to everyone for reporting bugs and providing invaluable feedback. Even with all of the help, this still has been the most intense week ever for me (Jasson). Here are my stats from last week.

  • Bugs Fixed: 50+
  • Hours worked: 110+
  • Hours slept: 6/day
  • Times I went outside: 3?
  • Cups of coffee consumed: 25+
  • Times I whined to Kelley about being tired: too many
  • Number of day jobs quit: 1

Overall it was a good week for me and an amazing week for Crea. Over the span of the last 10 days Crea has been transformed from a clunky tech demo to a (mostly) playable game. The beta has breathed life back into the forums and the IRC.

Wonderful fanart by beta tester Lune

I am currently close to being done on fixing the obvious multiplayer issues – the ones I can reproduce. Once that is wrapped up I plan to release a new patch and fix any other multiplayer issues that slipped by. Hopefully that will be a small list so I can quickly move onto fixing water and being done with bug fixing for awhile. I’m considering implementing a few small nice-to-have features and then moving onto doing the major mod API refactoring.

I am anxious to start this refactoring because this is my chance to clean things up that have been bothering me for awhile – something developers love to do. However, I am also quite cautious as this refactoring could cause some large regressions or entirely new bugs. It could also drag on for more than two weeks if I’m not careful. Consequently, I am meticulously planning things out and will be breaking tasks down as much as possible. Additionally, lots of unit tests will be written to assist in catching the wild bugs before they get away – kind of like pokeballs.

Oh yeah, also since I quit my day job and things have calmed down from the beta release, I am now doinglivestreams again. Yay! Come listen to ambient music as I code away.

jdubbhouse

Screenshot of beta tester thejdubb02′s Crea abode

Seeking Developer

This position has been filled! Thanks again to all that applied.

After much internal debate, I have decided to look for an additional team member. This is a programmer/designer position for Crea and would preferably be long term (4+ months). Here are some details.

Requirements

  • Advanced scripting knowledge
  • Game design sense
  • Available to work for 20+ hours a week for the next few months (at least)
  • (major plus) Familiar with Python and/or C++

Duties

  • Implement content using the modding API (Python)
  • Design content such as items, monsters, biomes and so on
  • Help write modding tutorials and documentation
  • If you know C++ then you can help with the game engine as well.

Compensation

  • Upfront payment and/or profit sharing (To be negotiated)

Location

  • San Francisco area but remote work is fine.

If you are interested or have any questions, then please contact me at [email protected]. Be sure to include details about yourself and any projects you have worked on.

NOTE: The roadmap I posted yesterday was made under the assumption that I do not find another developer.

Open Development

Little kids look up to firefighters, police officers, and astronauts and make one their role model. Similarly, I am a little indie kid and I look up to Wolfire as my role model. They are working on Overgrowth and started the bundle movement with Humble Indie Bundle (HIB).

Even though both of those are amazing, that is not why I look up to them. I have been following Wolfire for a few years now, well before HIB, and something that always stood out to me is just how open they are with their development process. They have weekly alpha video updates providing an overview of the progress made that week. Along with that they less frequently do art asset overviews. Occasionally they will make a blog posts about game tech. They even have livestreams for some of the members - David and Aubrey. Lots of great stuff and very inspirational to me.

When I started Crea I decided I wanted to apply this inspiration. When I come across a new opportunity to share I welcome it with open arms. When I decided to start a pivotal tracker to do project planning on; I made it public. I now do coding livestreams on nearly a daily basis. I like to think I am very open with my development. The other day I was reminded of my inspiration’s source after watching a reasonably old video with two guys from Wolfire doing a talk on Open Development.

I’m aspired not only to continue my growth as an indie in the same direction as Wolfire, but also to help improve, expand, and explore open development.

The Quest For Dual Wielding

We have wanted some form of dual wielding since the inception of Crea. The motivation behind this was simple. First and foremost, we wanted the player to be able to use multiple items without changing their active item on the toolbar. We also wanted the toolbar to provide access to more items. We knew what we wanted but how do we get there?

When I think dual wielding I think left click for one item and right click for the other. I think this is how most games do it. There are games that have single click to use both weapons but we need to provide means to individually use the items. This creates some new questions though. Item interaction was right click but what is it now? How do we display which items are assigned to the toolbar?

We considered splitting the toolbar and having 1-5 be for left click and 6-0 be left click. Something else we tried was having items on the toolbar be left or right click. We tried having 20 items on the toolbar. There are many other paths we fumbled down. We commonly ran into two problems. The first was adding dual wielding with only 10 items on the toolbar seemed to add more complexity than it was worth. The other problem was if we wanted 20 items, two items per number, then how do we display the items efficiently? Every way we tried left at least one of us unsatisfied.

We ventured down several paths but none of them felt right. For awhile we even dropped dual wielding, but since we really wanted it we picked it back up. I had pigeonholed myself into thinking we needed dual wielding to happen with both left and right click. I stepped back from that and quickly stumbled upon a working solution.

toolbar

Current toolbar showing what both the primary and secondary looks like.

Instead of having a single toolbar the player has two toolbar, which we call the “primary” and “secondary”. The primary toolbar is active by default and to get access to the secondary toolbar simply hold down the shift key. There are 10 items on each toolbar with each item assigned to a number key. There is only one number slot active at a time. There is also only one active toolbar at a time. Since only one toolbar is active at a time the solution to our display problem was obvious. We would only display one toolbar at a time. Left click always uses the active item on the active toolbar.

Time for an example! Lets say “3″ is your active item on the primary toolbar. Left click and you use this item. Hold down shift key and now you see your active secondary toolbar. Left click again and you will use the “3″ item on your secondary toolbar.

It took awhile to get there but it was a worthwhile journey. The controls feel right and I think are intuitive. I am looking forward to getting some feedback about this feature from the testers.

Feature – Dynamic Music

Charlie (Robot Science) and me (Jasson) working on Dynamuse

Overview

The music in Crea will be dynamically generated. This means you will never hear the exact same track twice. The music is broken down into small sound clips that I am calling “samples”. These samples are played dynamically based off of some parameters such as how much danger you’re in, time of day, and how long the track has been playing.

The thing that turned me onto doing dynamic music was watching Renaud Bédard’s GDC talk Cubes All The Way Down. I had not heard too much about dynamic music in games, but I knew that it would be a perfect fit for a sandbox game. It is so easy to get sucked in for hours and before too long the music becomes very very very repetitive. What do we do when this happens? Mute! I know that’s what I do and it is a shame since video game music is so great. My hopes are that by making the music dynamic it doesn’t get repetitive enough to warrant mutiny…

As I have mentioned before, I made a tool for Charlie that I dubbed “Dynamuse”. Dynamuse is used to define the rules for when samples should play in a track. I will admit that Dynamuse is a little on the complicated side but with that comes much power. I recently got Dynamuse more or less completed and soon we will be hearing its true power.

Version 2 of Dynamuse

Modding

Because I’m all about modding and being open, I’m going to make Dynamuse available to everyone. That means that anyone who wants to can modify existing tracks or even create their own. Eventually I will make a tutorial on how to use Dynamuse, but for now here’s a brief overview of how it works.

A Dynamuse track is composed of any number of samples. A sample has a name and music file associated with it and it also contains a list of triggers. A trigger contains a few things but most importantly it contains a list of conditions. There are several types of conditions such as time of day, status of another sample (playing, paused, or stopped). If a trigger has all of its conditions met then it signals the sample to play. And that is about it. Simple, right? (not quite unless you’re a programmer)

Mac Port Progress

Figured this was noteworthy – I got Crea running on mac now! It does have some graphical issues that I need to iron out but besides that things are running smoothly! And no, the toolbar is not having graphical issues – it looks bad (particularly the bag area) because I made it.

Anyways, this is huge news, mostly because it proves that what I have been developing is in fact portable. This also means that the linux port is not too far away, but it will still be awhile before I do get to the Linux port. Don’t worry though – Early Beta will have all 3 platforms!