Feature – Component-based Engine

This feature is fundamental to the game design and consequently all of the features. That is why it is being covered first. The next feature I plan to cover will be much more interesting – promise!

Overview

The engine that powers Crea is known as a Component-based engine. For anyone interested in modding Crea, this is a crucial aspect of the game to understand. Everything in Crea is made up of entities, and an entity is a container for holding multiple components. A component is common logic encapsulated.

Lets say we want to represent a table in Crea. We would start with a blank entity, then add a render component and direct it to use the table sprite. Having a render component enables the entity to be rendered – in other words, now the table will show up in the game. Next we add an item component which enables the table to be carried in a character’s inventory. Finally we want to add a craft component, which enables the table to be crafted.

Modding

As you can see, an entity is the sum of its contained components. It’s a pretty simple process of using components like building blocks to create something new.
A component-based engine is by nature very modular. There are currently 30 different components and growing. Here are some component examples.
  • Render – Used for rendering the entity
  • Animation – Enables the entity to be animated (requires render component)
  • Item – Treats the entity as an item making it possible to add to inventories
  • Craft – Makes it possible to craft the entity (requires item component)
  • Interactive – There are several ways to interact with an entity. Right click on it to “interact” or “use” it from your toolbar are just two examples.
  • Placement – Enables an item to be placed into the world from inventory (requires item component)
  • Monster – Treats the entity as a monster.

Sometimes, as a modder, you’ll find yourself in need of a component that does not exist – at least not yet! It is entirely possible to create a new type of component. Components have a simple interface and are created in a python script just like the rest of the content.

Links

 

Crea Features

Recently I realized we do not have a comprehensive feature list for Crea. I decided this needs to change. Having a bullet point list of all of the features in Crea would be helpful to get a quick overview of the game but that would lack the depth that I want. So in addition to just a feature list, I am going to extensively cover every feature in Crea.

For each feature I plan to write a blog post, giving a detailed overview and elaborating on all modding aspects of the feature. I am going to publish these new feature posts on this blog every 2-3 days. With each new feature post, I will also create a discussion thread in the forums.

In the meantime here is the feature list I put together. Note that it may be missing a few things and continue to be updated over time. Here is the Official Crea Features forum thread.

Implemented Features – These features have already been implemented for the most part; however, they all will undoubtedly be modified and improved upon before release.

  • Character Customization
  • Crafting
  • Dynamic Music
  • Equipment
  • Interactive World
  • Inventory Management and Toolbar
  • Lighting
  • Monsters
  • Multiplayer
  • Organic Plants
  • Proficiencies and Skills
  • Water
  • World Generation

Planned Features – These features have been planned but not implemented yet. They likely need some more designing done as well.

  • Bosses
  • Day and Night Cycle
  • Mounts
  • NPCs
  • Quests
  • PvP (Player vs Player)
  • Weather
  • Second Playable Race

Desired Features – These are some features that we would love to see after release.

  • Build mode
  • Casino Biome
  • Pets

3 Free Programs for Game Artists

The majority of Crea graphics are made in Adobe Photoshop CS5, but I’ve also been collecting little specialty programs to help with specific tasks. These programs are all available for free! Sometimes the internet is a wonderful place, right? Let me introduce you to them:

1. Spriter

Spriter is an animation tool designed for 2D video games. We’ve been using this to create the character animations for Crea. Spriter makes it possible to easily swap out images in an animation, such as changing the hair style of characters, or the clothing color, or even their entire equipment set. Thanks to Spriter, all of the assets and animations only have to be made once – not dozens of frames for every single piece of armor. We plan to use Spriter for our characters, bosses and other animation-intensive creatures.

Earlier this year, the team behind Spriter ran a Kickstarter campaign to fund their project. Right now Spriter is still in an alpha state – which means that there are lots of bugs and not everything works smoothly. Additionally, it’s not really designed for teeny-tiny pixel art, and sometimes I feel like I have to wrestle with it a bit. Still, it’s been helpful to us and we eagerly look forward to each new update the Spriter team pushes out.

2. Pyxel Edit.

Pyxel Edit is a clean little program that makes it easy to create seamlessly patterned tiles and tile variations. The instructions are a little vague, but once you get the hang of it, it’s really pretty simple. We’re mainly using this for ground tiles. Pyxel Edit seems to have a little bit of trouble working with my Wacom tablet, but other than that it’s pretty much a godsend.

3. Sprite Sheet Packer. 

Sprite Sheet Packer has one purpose, and it does it well: it takes all the individual frames for a sprite, arranges them into a tidy little sprite sheet, and creates an accompanying text file that “maps the image file names with their rectangles, for use in your program to find the regions of the image you are interested in,” as they put it. We only just started using this program, but it’s definitely been a time-saver for us.

So there you have it – a little peek into the tools that we use to create the visuals for Crea. I hope these programs come in handy for your future modding needs.

Tree Remix

So far the art in Crea has been a mixture of pixel art for the small things, like the character and items, and anti-aliasing for the large things, such as the background and the trees.

Anti-aliasing looks smooth, and it’s really fast to make. Pixel art, on the other hand, is very crisp so it works well for rendering tiny detailed things.

During the Kickstarter, some people said that the art in Crea looked “flat,” so I’ve been pondering ways to improve it. It occured to me that, since it was necessary to draw most of the game objects on a pixel-by-pixel basis, maybe I should just draw everything that way – except for the background. That will allow for greater foreground-background separation.

So I redrew the trees with the pencil tool.

The new tree is on the right.

Jasson agrees that this is a big improvement, and I like it as well. The objects have more dimension and solidity.

One drawback is that the pixel art is more time-consuming, but it will be worth it if it helps the game look better. The backgrounds will remain anti-aliased, which hopefully will help bring the foreground forward while preserving Crea’s unique look.

World Looping

The last week I have been working on several different features: optimized world loading, horizontal world looping, and a secret feature I’m working on that I will announce in detail before too long. Aside from that I’ve been doing some other things such as getting the forums up and running!

The world loading optimizations I made are really going to make a huge difference with the game’s performance. Before the entire world would be loaded and stay loaded. Every single entity would be updated every frame. This all could be quite taxing on both the cpu and memory. Now the world is broken up into regions and a region is only loaded if it is needed. If a region is unused for awhile then it is unloaded. For a large world only 1/8 of it will typically be loaded at one time. That’s a huge difference!

While I was breaking up the world into regions I decided it was a good time to finally implement world looping. This means that if a player runs in the same direction then he will eventually loop back around to the same place he started. Another way to think of it is take a piece of paper and curl it up so that two opposite ends are touching. This is what the world looks like now. This world looping was actually quite a bit of work. I faced two major challenges with it.

The first one was getting the rending to work. If standing next to the world seam (where the two ends meet), then I needed to have the entities, tiles and whatever else render from two sides of the world.

The other challenge, the more difficult one, was that all of the systems relied on the assumption that the world started at (0,0) and ended at the world’s end. If something went past either of these points, across the seam, then it would be ignored. For example light would suddenly stop at the seam and cause some odd lighting as shown below. The light needed to jump across the world seam and affect the other end of the world. I had to worry about this for all of the other systems as well such as the automata (water) and physics. There are still a few issues with it that I need to cleanup but I’d say it is 90% of the way there.

Expect updates from me to come a little more frequently starting now.

Notice the line in the middle of the blocks. That’s the world seam and shouldn’t be visible…

The Story of Crea’s Kickstarter

The basics:

We are a small independent team developing a 2D sandbox video game called Crea. In July 2012, we ran a Kickstarter campaign to help us raise development funds and gain publicity for our game. We started with a goal of $15,000, and 30 days later we had successfully raised $27,870. As of August 2012, Crea is still in development. Here’s the story of how our campaign went, and our advice for future Kickstarter hopefuls.

The story:

Early on in Crea’s development, we knew that we wanted to run a Kickstarter. We read all sorts of articles and blog posts about running Kickstarter campaigns – (here’s a list of some of the ones we found most useful), and Jasson trolled the video game category of Kickstarter on a daily basis, taking notes on the common traits of successful and failing campaigns.

Making a video game has been a lifelong dream for Jasson, so he decided that it would be meaningful if the Kickstarter ended on his birthday, August 7. This deadline motivated us to get cracking and create as much content as possible. We got Crea to the point where we had some nice concept art, some very early gameplay footage, and we also had a fantastic composer on board, Robot Science. With help from a friend, we made a simple video introducing Crea to the world.

Our Kickstarter video, which was played over 22,000 times

About a week before we planned to begin the campaign, we set up a Launchrock page where people could sign up to be notified once the Kickstarter began. We posted the link on Facebook and gaming forums, and got about 100 email signups.

Our Launchrock page

Then we nervously clicked the big green “launch” button on our Kickstarter, and the campaign was on! Between the Launchrock signups, friends, and generous family members, support immediately came pouring in. There was a new pledge almost every time we refreshed the page! We were very giddy. In two days we had already reached 20% of our goal.

After a heady three days, the number of new pledges began to slow down. Because of our research, we knew that this was normal for Kickstarter campaigns, so we threw ourselves into developing more content, improving our reward tiers, and getting the word out. Still, we were a little nervous.

About a week in, Crea, along with our hopes and dreams, were languishing in the depths of Kickstarter. Pledges were coming in abysmally slow, averaging $200 per day or even less. At this rate, our project would fail to meet its goal. We rolled around our apartment floor groaning in despair, like katamaris of sadness.

Then one beautiful, beautiful morning we saw Crea on the “Staff Picks” page. Immediately our project got more attention, and that pushed us back up the “popular projects” page and eventually even to Kickstarter’s front page. This was the second wind we had been hoping for.

The front page of Kickstarter.com

Crea caught the eye of Jake from Edge of Space, another sandbox game which had recently finished a successful campaign. Like Obi-Wan Kenobi, Jake was full of much  wisdom, and he kind of became our Kickstarter mentor.

Encouraged, we began to update on a Mon-Wed-Friday basis, showing more and more Crea content. Our project was mentioned on Rock Paper Shotgun twice, which brought in a lot of traffic. Due to Jasson’s relentless networking, other Kickstarter indie game devs, such as Edgar from Spriter and Larry from Moon Intern, also gave us shoutouts in their project updates. Things started to pick up, and we reached our $15,000 goal with one week to spare!

Party llama!

We set some new stretch goals, and continued to network and update, update and network. We also did two livestreams, which greatly boosted the enthusiasm of everyone who attended. Many backers began increasing their pledges. On Jasson’s birthday, we gathered around the computer and counted down until the Kickstarter’s dramatic finish. Then we high-fived and rolled around our apartment giggling, like katamaris of victory. Then went out for pizza. And then we got right back to work.

Kickstarter’s graph of our funding progress

What we learned:

  • Clearly we had enough content to successfully complete our campaign. However, we really only had the bare bones of gameplay to show off – this left Crea open to accusations of being a “Terraria clone.” If we could do it over, we would have pushed back the campaign until we had additional content that would clearly show our game’s uniqueness. That way we would have been able to spend less time trying to defend our concept and convince skeptics. Our advice: wait until you’re absolutely sure that your project is ready for Kickstarter, then work on it some more. 
  • We started doing livestreams late in Crea’s campaign. While our audience was relatively small, it was enormously powerful for turning supporters into enthusiastic Crea evangelists. A few people even wandered into our livestream randomly, saying, “What is this game?” who later left saying, “I can’t wait for this game!!!” Not doing these livestreams earlier was a missed opportunity that would have boosted interest in the game. Our advice: do regular livestreams, and make them opportunities for fans to personally connect with you.
  • We underestimated the time commitment Kickstarter required. Writing updates, answering questions and comments and getting the word out is basically a part-time job. As a result, little time was left over for development. Our advice: treat your Kickstarter as a second job, and be sure to calculate the time spent on Kickstarter into your project timeline.
  • In some ways, the Launchrock was both a blessing and a curse. It was exciting for us to build momentum before the Kickstarter began, and it also helped us get our campaign off to a solid start. We believe that that initial boost helped us get noticed by the Kickstarter staff. On the other hand, once we had publicly announced a launch date for our Kickstarter, we were kind of stuck with that date. As we collected our material for the campaign, we started to second-guess whether we were totally ready to start – but we had to stick to our launch date. Our advice: start building momentum after your project is ready to show off, not before.
  • Reaching out to other indie game developers proved to be priceless. Jasson backed their campaigns, encouraged their projects, then asked them to mention us in updates to their backers. Through this method, we were able to reach thousands of people who were interested in indie games and already familiar with Kickstarter. Our advice: You can Facebook and Twitter and pester your friends all day long, but targeting your marketing to the most specific possible audience is infinitely more worthwhile. Get involved in the online community.
  • On Kickstarter, once someone has pledged for a certain reward, you can’t change that reward. Although this obviously is meant to protect backers from being ripped off, it can also significantly complicate things. People were sometimes confused about what certain rewards entailed, and we wanted to clarify or add more to rewards, but we were unable to change them because someone had already backed them. So we had to add footnotes in updates. Between all the modifying and clarifying and updating, by the end of our campaign the reward tiers were fairly confusing. Our advice: right from the start, make your rewards concise, clear and consistent.
  • We regularly posted content-filled updates, showing off new artwork, new music, new blog posts, new videos, new rewards, as well as encouraging our backers to spread the word. It was a lot of work, but it boosted interest in the game and others’ confidence in our ability to complete it. Our advice: update regularly, and always make sure that you have something worthwhile to say.

Let me know if you found this useful, or if you have any questions. Best of luck in your own Kickstarter endeavors!

New monster concept and background

This monster is a Glow Bat. It lives underground in stalactite formations. It uses its glowing tail to attract people who like pretty glowy things, then it blasts them with its sonic wave attack.

We are planning to make the tail’s glow be dynamically generated. I look forward to showing you guys the completed glow bat in its full glowy (ba dum ching).

Also, some people were commenting that the background of Crea looks flat, so yesterday I  started trying to add a little more dimension to the background layers. Here’s the old version:

And here’s the new version:

What do you guys think? Better?

Good Momentum

Typically I post updates much more often than I have recently. I’m not much of a writer to begin with and I wrote so much during the kickstarter that I think I burned myself out on it. I have also been really wanting to make some real progress on development – get some good momentum going.

I have been working nonstop since the kickstarter ended 10 days ago. I am almost done with the lighting system (the initial pass at least). Both equipment and proficiencies (leveling) are fully implemented. Now we just have to make the content!

So what is lighting looking like so far?

Sunlight with a lightsource (torch)

I’m currently finishing up the lighting. Optimizing it some and adding in colored lights. Right now I don’t have dynamic lights casting shadows. I really want shadows but they are not essential and right now I need to just focus on the core essentials.

Equipment is looking great. I want to do a future write-up all about equipment, but for now I will say that you can do nearly anything with it. This means not only will we be able to make awesome and unique equipment, but through the easy modding setup, so will everyone else! Here’s some visuals:

Programmer UI with no gear equipped

Programmer UI with chest plate equipped

Equipment dialog mockup

Right now there are no visuals to show for the proficiencies, because at this point its all logic. I will be posting the write-up on equipment soon. Be sure to subscribe to the blog to get updates when they happen.

Lately I have been doing impromptu coding livestreams. If you follow the Siege Games twitchtv account, you’ll be notified with an email whenever I start up a livestream.

We did it!

We did it! Crea’s Kickstarter was a smashing success, reaching 185% of our original goal. We are very humbled by your support. Thanks everyone for helping make Crea a reality, and thanks for giving Jasson the best birthday ever!

After the Kickstarter ended, we high-fived and went out for Chicago-style pizza.

Some people have been asking how they can keep in touch with us – don’t worry, we’re not going anywhere! We intend to continue regularly updating this blog and Facebook page, as well as doing more livestreams. If you backed our Kickstarter, we’ll also be sending out some updates regarding rewards. We’re working on getting some community forums set up soon. So stay tuned – this is just the beginning!

Lessons Learned from our Livestream

Well, we ran our first Livestream last Saturday for a whopping 14 hours, and it was an exhausting but rewarding experience. We didn’t get the turnout that we had hoped for, but we still had a very active chatroom with full of people curious about Crea.

Here’s what we learned about Livestreams yesterday:

  1. Nothing kills the buzz quicker than technical issues. We had difficulty switching between computers during the Livestream, as well as optimizing the video and audio quality without lag. Every time this happened, we lost viewers. Looking back, we probably should have done a more thorough practice run the day before.
  2. A fast computer helps a lot. Kelley’s computer, which is the newest of our computers, ran the Livestream beautifully. Jasson’s older computer, however, limped its way through the stream, causing the audio to jump.
  3. Kelley raises viewership. Every time we switched the stream to Kelley drawing artwork, the number of viewers jumped. Like magic. Like they just heard Kelley’s voice calling to them from across the internets.
  4. We need a new headset. Wearing it feels like your head is in a vice.
The character Kelley worked on yesterday is called an oil slime. It’s a low-level monster who drops oil for players to make tools with. As they watched the oil slime come to life, the audience grew fond of him. They named him Norman and decided that he was from Taiwan. (???) Here is the art Kelley made for an audience of averaging 30-40 people throughout the day: