Over the past several weeks I've been working hard to make some major improvements to our map editor. Tonight, I'm happy to be able to share the results of that effort and demonstrate what our new editor can do for us.
The impetus for this work was that our old editor, while fully functional, was cumbersome and tedious to use. Our upcoming release includes one map that is larger and more complex than anything we have published in any of our past releases, and we found ourselves discouraged when we made attempts to create this map in the past. I look at this work as a long-term investment in this project that will pay off down the road as the map creation process will now be easier, faster, and more enjoyable.
For this release, the work on the editor is now considered complete. The major focus for the next month will be to use this tool to create the additional maps that we still need and to write the corresponding map scripts. A development snapshot release will be coming in the near future.
The culture of our development team has been a positive factor that has helped nurture the growth of this project. I always wanted this project to feel like a collaboration between real people, not just screen names. In the early years, I made an effort to call everyone on the project by their first name. I can’t do this anymore due to the sheer size and volatility of the team. In fact, I completely forgot that I used to do this until I started reading through some old forum threads when researching our history to write this series of posts.
Another important aspect to our team’s culture is ownership. I have never wanted anyone to feel that they are working on “Roots’ game”, but rather that they are working on their game. I wanted people to have ownership on this project, and to that end I encourage others to share their ideas for features, quests, and so on. If people feel like they can guide the destiny of this project and not just be a brick-layer for its predetermined path, they are a lot more invested and excited about the work that they are doing. Giving people a feeling of ownership hasn’t been easy, and some people on the team were flat out uninterested in design and simply wanted to make art, write code, or otherwise exercise their talents and abilities.
One of the biggest challenges with a free project like Allacrost is finding talented and motivated individuals willing to contribute their time. We do not pay a salary or promise any sort of financial reimbursement to our team. How can we attract volunteers, especially when there are comparable projects to ours that are for-profit? My answer to this question was simple: make sure that people are enjoying the work they do. If people are unhappy or frustrated with the project, they will leave. This policy is still in effect today and all new contributors read about it when joining the team . But it’s not perfect, and some great people certainly have left this project in the past due to feelings that prevented them from enjoying working with us. While we can’t make everyone completely happy on this project, but we sure as hell try.
After our initial team had finished our first series of design discussions and we had a better idea of what we were building, we began our first efforts to seek out additional help. They were wildly successful. Despite not having an experienced team or anything to show for this project, a lot of people were attracted to the type of game we were building and the ideas we presented and wanted to be a part of it. Our recruitment process was very formal in the early days and was almost like applying for a real job. There was a questionnaire that we required every applicant to fill out, then we would share their answers privately amongst the team and discuss the applicant. If no one objected to hiring them and they seemed like they would fit in, we welcomed them aboard.
One of the goals of this formal hiring process was to weed out people that lacked the qualities that we felt they needed to be successful. This could be any combination of experience, attitude, motivation, or other factors. It worked out well for the most part and the majority of the people we brought on the team met or exceeded our expectations. It wasn’t a perfect system though, and we did have some members that were not useful, or even downright damaging to the project. We hired one programmer and one artist in September 2004 and neither of them ended up working out. Here are their stories.
The artist we hired was producing great work that was very promising, despite his extremely young age. When another artist created an improved version of his work, he took it personally and got very offended that someone else would touch his art. Despite reminding him that this is a collaborative effort and that he should have read about this in his welcoming e-mail, he refused to accept the situation and promptly left the project. It was a shame as he was very talented, but not mature enough to work on a collaborative project like ours. It remains the only time we had an incident like that with a team member.
The programmer we hired immediately started making all kinds of destructive changes to the code as soon as he was given access to our code repository. He was scolded for making so many changes to our code policies and structures without first consulting other programmers to get their approval. As a result of this, we began being more careful about granting people commit access to the repository. He was tasked with developing the battle system for the game, which didn’t yet exist at that point. He repeatedly promised and failed to deliver anything for months. Eventually, the team dismissed him and he ultimately was just a hindrance to our progress.
The positive culture of this project was one of the reasons for its early prosperity and its continued survival throughout the years. We were extremely lucky to find so many talented and dedicated people in the first year of this project’s history. These early successes still influence the project today.
 - Allacrost Team Policies
Coming up next:
The first objectives for development of Allacrost were to do basic operations such as draw things to the screen and play sound and music files. I didn’t know it at the time, but I was writing a game engine from scratch. I wouldn’t even know what a “game engine” was until months down the road when we already had a primitive one in active use. The fact that Allacrost was built using a custom game engine is, in my mind, one of the most catastrophic errors that this team made in the early days. Designing and writing an engine from scratch, even for a moderately complex 2D game, requires an enormous amount of time and effort to do. Our engine is pretty nice and solid now after being worked on for so many years, but in the beginning it was pretty awful because we had no experience or idea about how a good engine design should function. A project like Allacrost should have used an existing engine from the beginning. We would be much, much further along in the game right now had we done so. The only positive benefit I feel we got out of it is that we gained a lot more software development experience than we would have otherwise. Of all of the time this team spent writing code for the first three years of this project, I’d estimate that we spent around 75-80% of it working on the engine.
One of the first steps that we needed to take to build the game engine was to select which software libraries we would use. In the very beginning, our technological goals for the game were pretty limited and we decided to use SDL  for pretty much everything. Within a couple months, however, we found ourselves disappointed when we realized the limitations of SDL, especially in terms of graphics. Although we were only making a 2D game, we wanted to harness the power that a 3D graphics library could afford us for making special effects and other nice touches. I began learning OpenGL and after a few days of study, felt that it would be a much better idea to find a graphics programmer  with the sort of experience necessary to write us a 2D graphics engine. I think that was the correct call to make, as with my limited experience and knowledge, anything I made would have been much worse.
Selecting the correct libraries to use is a very important step in creating a custom game engine. We carefully selecting each library that we chose to use, but we didn’t do enough research and ran into several problems. In the early days, we experienced a lot of grief resulting from some of our library selections. One of the first instances of this pain was with our audio engine. We switched back and forth between using SDL_Mixer (an extension of the SDL library) and OpenAL  a total of four times. Thankfully, the audio engine is relatively straightforward and didn’t take much more than a day or two to rewrite and test each time. We initially used SDL_Mixer because it was easy. We then switched to OpenAL because we wanted to use some of its more advanced features. There were some technical difficulties with that library (on Linux, at least) that eventually lead us to drop it and move back to SDL_Mixer for better reliability. We gave OpenAL another shot later and went back to the drawing board with a new engine design. We’ve had no problems with it since. It was frustrating and a poor use of our time. I’m not sure we could have avoided that hiccup though, as sometimes its hard to know whether or not a library works as good as it claims to on every supported platform. We would run into this issue with other libraries in the future. Below is one of the early UML designs I created while developing the first iteration of our audio engine. The UML of the same engine today is significantly more complex.
Needless to say, we reached the end of the summer of 2004 without much to show for it. We had the birthings of a pretty basic 2D engine, but not much in terms of game logic. There was still much, much more that remained to be done than what we had already accomplished. Reality began to set in for our team with regard to how difficult this project was going to be to pull off, and that it was going to take us much longer than we had hoped. Morale was still high and we were collectively learning and getting better every day. But by the end of August, we always felt like we were behind from where we should be. And that feeling still lingers around today.
Coming up next:
Its been a little over two months sinc this project's most recent revival. So far, I've been the only one actively working on it, although others are still around and participating in design discussions. We've agreed that we need to start growing the team again and will be looking to fill a few empty seats. With that in mind and the end of the year approaching, here's a status update on where we are and what we need to see our next release happening.
Our Roadmap has been recently updated and organized to reflect the current state of our progress toward the next release. As you can see on this page, a large number of the tasks for the next release are already completed. The remaining work that needs to be completed include creating map files, artwork, and sound files. I expect that we'll be able to procure some of the media content that we still need from sources like OpenGameArt. There's a forum thread for discussing the roadmap and direction of this project if you are interested in the details.
The primary focus right now is map creation. We still have two small maps and one huge map to complete. Map creation has, thus far, been much more difficult than it should be. The maps that we already have completed for this release and past releases were difficult to produce, largely because our map editor tool was cumbersome and difficult to use. Our sister project Valyria Tear made a great number of improvements in their map editor and map design process in their recent Episode 1 release, so we decided to follow their example. I've spent the last six weeks on a major redesign of our editor. Our editor code hasn't gotten the amount of attention and love that it needs over the history of this project because it was never a high enough priority until now. Once we have a first draft of completed for each of our maps, we'll make a development release available for others to try out and give us feedback on. Getting to this point is our most immediate goal right now and will mark the completion of a huge milestone.
Its difficult to say when we will get to this point. It depends on how soon we can get the help that we need, and how much time that help has to dedicate to Allacrost. With that in mind, here are the positions that we are looking to fill before the end of 2014.
This is the first time we've sought to recruit someone to join our team whose primary role is map development. Even with the improvements that will be made to the editor, map design is still a very challenging and time consuming process. This position includes scripting the sprites and events on the map as well, so some Lua development will be required. We'd like to get at least one artist back on our team, but we'll take as many as we can find. There's only a small amount of development related tasks required to be completed for this release, hence why we're only seeking a single developer.
That's it for this update. I'm confident that if we keep our current pace, you'll see a new release from us in the first quarter or first half of 2015.
I was filled with confidence when I wrote the first lines of code for Allacrost. Although I had no experience in game development, I had been writing code in over a dozen different languages for four years through my college coursework, as did our other primary developer. Additionally, I thought that the game we were building was rather modest in terms of its complexity. We were making a 2D single-player RPG, not a MMORPG with 3D graphics. It would be a few months before I began to realize how enormous the amount of work was to make the dream of Allacrost into a reality.
I had already familiarized myself with the technology and libraries used by Battle for Wesnoth  before work on Allacrost begin. Initially, the plan was to start from the Wesnoth codebase and make the necessary modifications to transform the turn-based strategy game into a RPG. As I began studying the Wesnoth code however, I found myself both frustrated and disappointed. The code was unorganized, difficult to understand, and there was virtually no documentation. After spending a couple days trying to make sense of it, I decided to abandon that path and began writing the code from scratch. Let me clarify that I did not regard the Wesnoth code as bad, just difficult for an outsider to comprehend at that time. I’m sure it has improved over the years, and Wesnoth has undeniably been a more successful project than Allacrost over the years.
This experience had a profound impact on both myself personally and the Allacrost project as a whole. I vowed with conviction that I never wanted anyone to look at the Allacrost code and feel as disappointed and confused as I had been with the Wesnoth code. And we’ve been very successful in that regard. I’ve lost count of the number of messages and e-mails I’ve received over the years from people who were impressed with the quality, design, and documentation of the code. The work that we’ve put in to keep the Allacrost code well understood and organized is something that I’m very proud of this team for doing.
After writing a few hundred lines of code , I began to realize just how ignorant I was about software development. I had no understanding of build systems, how to handle a large number of source files, logging and debugging, and many more critical pieces of knowledge. All of this I had to learn as I went along, as did many other programmers on the team as most of us were young students with little to no professional experience. Still, we seemed to be doing okay for ourselves. We were able to draw maps and sprites, play audio files, and navigate simple menus with a few days work. Things appeared to be coming together. I was deceived by how easy it all seemed to do, and others likely were as well.
Before work on the code had even begun, I had set out some goals  for the team to achieve over the course of the summer. I admitted that they were aggressive, but in reality they were simply impossible. The primary goal was to release the first playable module of the game on August 25th, 2004. And here we are in 2014, and that module still has not been released. Frankly speaking, highlighting that fact is rather embarrassing. Setting these types of goals at this time was a huge mistake, as there was no way to set any sort of realistic expectations with the massive collective ignorance of the team. Our goals should have been much more simplistic and aligned with gaining the necessary experience to produce a screenshot or simple demo. That summer passed with us not achieving much of anything noteworthy, although by the end of August we were definitely closer to moving ourselves and the project in the correct direction.
Coming up next:
One of the most important decisions we had to make dealt with our artistic style. We needed to figure out both the technical details, such as the size of our tiles and sprites, and what the general appearance of the artwork in the game would be. We needed to establish our musical style and influences as well, which was a bit more nebulous to define than our art style. During this phase, we employed concept artists who read the story and interpret these words into stunning visuals, some of which are still in use today.
Naturally, we turned to the artwork found in our two primary sources of inspiration to get an insight into how large our tiles and sprites should be. There were a few different options that we put on the table and discussed . We ultimately settled on 32x32 pixel tiles, 32x64 pixel sprites, and a default game resolution of 1024x768. It proved to difficult to decide on this without being able to see it, so I quickly wrote some test code that allowed us to see what the game would look like with various size tiles and resolution. While there are algorithms out there to scale pixel art , we strongly preferred the game to run at a resolution that would preserve the dimensions and quality of the art.
We need a style to match the serious and somewhat dark nature of the Allacrost narrative. It was easy for us to agree to seek a style that was realistic and slightly gritty. This meant avoiding cartoonish looking characters and soft, bright colors. In addition to the pixel art you’d find in a game like Allacrost, I suggested that we include more traditional artwork (we toss around the phrase “digital paintings” to describe this). Originally my idea was to have one or two “scene paintings” for every chapter of the game, but this feature was shot down by the rest of the early team for being too much of an interruption from the flow of the game. Still, there are plenty examples of this type of artwork found in the game today, from character portraits to location graphics and even battle backgrounds.
To determine our sprite style, we searched around for games similar to ours and started a discussion. The goal was to agree on which of these styles would best fit Allacrost, and then use that source as our inspiration. The earliest sprite made was, naturally, for the game’s main protagonist. It was well done, but as you can see below it didn’t really fit the sort of style we were looking for. In a few months we would revisit this design and go a different direction entirely.
I thought that getting high quality, original music into Allacrost was going to be the most difficult type of content for us to create. I was somewhat anxious about finding composers, as I thought there weren’t going to be very many out there interested in a project like Allacrost. Especially considering that they wouldn’t be financially compensated for their work. However, reality was entirely contrary to my expectations. Throughout the lifetime of this project, we have had to turn down several composers who wanted to join simply because we had too many. And the music that every composer on this team has produced for Allacrost has been phenomenal, and blew away my expectations for the quality of our soundtrack.
The technical standard for our music was easier to define than our artwork. We knew we wanted to use Ogg files as MP3 files require you to pay a hefty licensing fee , and we didn’t want to invite any sort of trouble. Because Allacrost targeted PCs where storage space was plentiful, we chose a compression level that left songs of a somewhat high quality and file size. Some of our composers wanted to use an even higher quality (twice what had been agreed upon), but eventually agreed upon the standard as there was little to be gained from these higher qualities and they greatly increased the file size. Our music already consumed more disk space than the rest of the game’s content combined.
Our early composed pretty much defined the musical style of Allacrost themselves. Rain and Loodwig were the core of our composition and remained so for many years, and the two together are the fathers of Allacrost’s music and musical style. They read through forum posts and after understanding what type of game we were creating and what our primary sources of inspiration were (both musically and otherwise), set to work. The first piece of music composed for the game was titled “Hopeless Desert” by StarPilot and it sounded phenomenal...but yet somehow very familiar. Eventually, I figured out that it sounded extremely similar to the piece “Sandy Badlands” from Final Fantasy VII. The composer didn’t even realize it himself, but had that tune in his head as he was creating the work (and to be fair, the music really fits in well with what he was tasked to create). After some discussion, we regretfully decided to pull it from the game due to this striking similarity .
 Artwork Technical Discussion
 Pixel Art Scaling Algorithms (Wikipedia)
 MP3 Licensing
Coming up next:
With our initial team formed, it was clear that our first objective was to define our vision. What did we want this game to become? What would make it special and stand out from others like it? The team had formed around a loose set of design ideas that I had already proposed, but we needed a more focused vision for what this game was to be.
Before we could begin that discussion, however, we needed to decide through what means we were going to communicate with one another. We initially tried a mailing list, but found it inefficient for our purposes. Ultimately, our forums became our primary communication medium. We also setup an IRC channel  for the occasional real-time meeting when necessary.
One of the first mistakes the team made was to hide several sections of our forums so that only members of the team could see and post to them. There were a few reasons for this secrecy:
It made sense to us at the time, but much later we would realize that developing a project like Allacrost behind closed doors was a big mistake. I’ll elaborate about this error in a future entry. The contents of those old private areas were made public several years ago after we realized our mistake. You can expect that I will source several of these old threads throughout this series.
With our communications decided, we were ready to begin the early design process and to expand upon the initial set of ideas that I had proposed. Many of those first ideas I had already dreamt up years ago, in 1995. I was 13 years old and had recently played through two of my favorite games of all time: Final Fantasy VI  and Chrono Trigger . As a result of experiencing these masterpieces, I became interested in pursuing a career in game development (which I later decided that I did not wish to do professionally). I dreamed of building my own RPG, with those two games as the primary source of my inspiration. I transcribed my design ideas for an RPG down in a journal, which is still in my possession to this day. The central theme to Allacrost’s story and some of its core features come directly from that journal.
Without debate, the team accepted my proposal that these two games should serve as our primary inspiration for design. I actively encouraged everyone to begin putting forth their own ideas for what Allacrost should be. I wanted the team to feel like they were owners of this project and not just contributors. I never wanted Allacrost to just be my game that others helped me to realize, but to be a truly collaborative group effort.
Naturally, we couldn’t accept every idea that was proposed as some came into conflict with one another, while others just didn’t seem that worthy of inclusion. After a period where everyone had dumped their ideas on the forums, we agreed to meet at a specific time at our IRC channel  to discuss everything that had been proposed. We chose to have this discussion in real time because the forums proved to be somewhat difficult with the large time lag between responses and interconnected nature. What happened was a rather epic three hour debate. It was at times frustrating when there were strong disagreements, but investing the time into having this talk really moved us forward in terms of defining what Allacrost was to become. It also remains one of my most enjoyable memories of this project, as it feels liberating when there is so little defined and you can move the game in any direction that you desire. We weren’t able to resolve all our differences and implementation details during the chat, so several threads were created on our forums to discuss the finer points of those ideas which were accepted , , .
Most of these ideas are now implemented. Others were later abandoned or forgotten about for various reasons. For example, we had initially approved a combination attack style similar to Chrono Trigger, where two or more characters work together to execute a maneuver. I only recalled this planned feature during the course of my studying of our history for writing this post. Some of the ideas that were cut were of my own and I was very excited and enthusiastic about them. However, I was the only one who felt this way, and it wouldn’t be fair to force my desired features into the game if everyone else disapproved of them. My features including having a third-person observer interjecting narration of the events in the story as they occurred, and having full-screen artistic stills during the game as well. I wanted the game to feel like an interactive storybook to the player, but the concept was ill received.
In hindsight, we may have spent too much time and energy on this brainstorming.
A better approach for us may have been to focus on the core gameplay and features, then save the discussion of the implementation details for when we were near ready to begin implementing them. We decided too much too soon, and many of the people who formed those early design decisions didn’t stick around the project for more than a few months.
 Allacrost IRC channel (#allacrost at irc.freenode.net)
 Final Fantasy VI (Wikipedia)
 Chrono Trigger (Wikipedia)
 Approved Game Features (Thread #1)
 Approved Game Features (Thread #2)
 Approved Game Features (Thread #3)
Coming up next:
As I mentioned in the last news update, we reached our 10th birthday here recently. I thought that it would be a good time to share the story of Allacrost, since very few people have known about our efforts for its entire existence and so much has changed from the beginning to today. It’s pretty amazing to have this kind of history with a project such as ours. Hopefully you’ll find this information both educational and entertaining.
There’s so much to this story and no way to share it all in a single news post. I’m going to break the tale up into digestible segments and publish a new post roughly every week until we are caught up to the present. So I hope that you’ll continue to check back with us and relive the past. If you’d like to ask questions or make other comments regarding this post or any other in the series, I’ve made a thread on our forums for you to share your thoughts. It is linked at the bottom of this post.
Birthing Process (June 2004)
Allacrost was born in June 2004, but this story begins a few months before that date. I was in my final semester of college and had begun using Linux exclusively for all of my computing needs. As I began looking around for games to play on Linux, I quickly discovered Battle for Wesnoth , a turn-based strategy game that was free to play and open source. I was inspired. Studying this game and the people behind it made me realize that I already had at my disposal all the tools and abilities that I needed to create a game of my own. The only thing that I was missing was time. I began pondering game development, which had long been an aspiration of mine during my childhood. But I soon pushed these thoughts aside as my studies were far more important to focus on.
In May, I graduated with my degree in computer engineering. I was committed to continue on to grad school, but classes didn’t start until August and I had nothing to do for that entire summer. I was bored out of my mind. From this boredom, I began writing a short story one day; Something that was completely out of the ordinary for me to do. I had no plan for what or who it was going to be about, and let my imagination make it all up as I went along.
When I had finished, I read it through and thought that it wasn’t half bad. So, I decided to share my story online and get feedback on it. I posted it to the AnimeSuki forums, a community that I was an active member of at the time, and I received overwhelming positive feedback on it. I decided to write a little bit more, and the story quickly grew on me. You can still find the original thread that gave birth to Allacrost on the AnimeSuki forums , though that first draft of the story is no longer available.
The success of this story caused me to recall my curiosity about game development from earlier in the year. I started brainstorming and sharing some game design ideas on the same forums in another thread . One forum member sent me a private message stating that he was interested in working together with me on the game that I had been describing. A friend and classmate of mine from college also expressed his interest after I shared my story and aspirations with him. We somehow managed to find an artist and a composer willing to lend a hand as well, and the team was born.
Roots - Team Lead, Developer, Writer
gorzuate - Developer
Balthazar - Manager, Developer, Editor
Biohazard - Artist
StarPilot - Composer
I chose a domain name URL and hosting provider, set up a (very primitive) website, and installed the phpBB forums. The forums came online on the 16th of June, 2004 and this is the day that we recognize as the birthdate for the Allacrost project. I’ve always told people that this project was the result of a series of fortunate accidents. I was never very serious about making a video game, as it was all just a group of ideas that were floating around in my head. Everything I needed to turn a dream into a reality just seemed to fall together in my lap all at once. Before I knew it, I had a story, a website, and an excited team to turn ideas into something tangible.
Coming up next:
Earlier this month, our sister project Valyria Tear hit a huge milestone with their Episode 1 release. If you're a fan of classic RPGs in the same style as Allacrost, play the game and show them your support. VT and Allacrost share a lot of the same artwork, code, and design elements so we benefit from each others progress. Some Allacrost team members (myself included) have made direct contributions to the VT project as well.
So, where does that leave Allacrost? Sadly, the project has been in yet another standstill for the past 18 months or so. Our goal remains the same: to release the first chapter of the game similar to what VT has recently accomplished. About 85% of the work that remains is in artwork, map design, and scripting. We otherwise pretty much have everything available to us that we need to make a fantastic release. It's just a matter of finding the right sources of help to complete what we can't do on our own (namely, the artwork) and finding the time to put it all together. I've recently come back to work on Allacrost after a long hiatus, and I hope to build up some momentum and encourage others to join me.
It's difficult to believe, but it's now been a little over ten years since Allacrost first got started. Of course, a significant portion of that decade have consisted of long periods where no work was being done, so we're not really as old as we look. There are very few independent game projects, open source or otherwise, that can boast of having such a long history. Thanks for continuing to support and encourage us over the years that have passed and we hope we can count on your support in the years to follow.
We have something special to share to get the new year started right. Below you'll find a link to our very first development video. This video demonstrates the current state of the game and includes commentary that discusses our designs. This is a great way to check out the project without requiring you to build the game yourself. We hope that you enjoy it, and will leave us any feedback you have by either commenting on the video itself or leaving your remarks on our forums. We will release more videos like this in the future as a way to keep the community updated on our progress.
Our next immediate order of business is to publish a new development release, so that you can experience the game for yourself as it is presented in this video. We hope to get that release out by the end of this month, if not sooner. We also now have an updated roadmap so you can get a picture of what it is that we need to finish and what we are currently working on.
With our online services cleaned up and restored, project files reorganized, and numerous features that have been backported from Valyria Tear, I'm happy to report that the revival of this project is now complete. Thus, we are now ready to begin working with a full development team again, and we'll spend the next couple of weeks hunting down artists, programmers, and others to help us work on our next release. If you are interested in helping out, please read the following page on our wiki to find out how you can get started. We especially need artists and game designers (who make maps and manage game content) to join our team. Our release is, for the most part, feature-complete and is only missing the appropriate content to bring it all together.