- Joined
- Jan 28, 2011
- Messages
- 97,509
http://www.darkdale.net/2015/06/back-on-track/
Back on track!
on Jun 26, 2015 | 3 comments
Hello everybody! It’s been a long time, as I haven’t posted in about 8 months, but don’t worry, DarkDale is not dead, quite the opposite. The winter months have been really busy for me and I couldn’t unfortunately dedicate much serious time to game development between January and April. With May came the end of the school year and I could finally get back working on the project, which has been steadily advancing in the last two months.
This break led me however to think some more about the projected timeline and how I was planning to get the game done.
First of all, I’m realizing that despite all good will, I won’t be able to do it all alone, or at least not in a decent amount of time. As I don’t want to release the game 3-4 years from now, I will most certainly need some help in the asset creation department, essentially for models (environments or items), creature animations and character portraits. This means some expenses, which naturally leads to the idea of crowdfunding, something I was planning for anyway : but instead of simply trying to cover some of my own expenses, the campaign will try to raise enough to purchase assets and hire some freelancers. Before committing to a Kickstarter campaign and the ensuing challenges and deadlines, I want however to advance further in the development of the game, as to be able to assess precisely my needs, what I can do myself and what needs to be contracted.
So, what’s the new plan then?
Will we get there? I’m ready for it, and provided I have your support, most certainly. Now let’s see how things are going!
- First, I’ll finish the game engine in its basic state over the next 3-4 months, which essentially means to have a completely playable experience, even if it’s only 1 level. Most of the major elements are already in place, and meeting this target shouldn’t be a problem. Of course, as development goes on, I’ll keep adding more components and functionalities, but these will be easy to implement on top of the existing framework.
- Then, over the course of the school year, I’ll work on writing, quest and level design prototypes, so as to have a good general skeleton of the game by the spring.
- Run a Kickstarter campaign somewhere in April/May 2016.
- Following which (if successful), hiring some help to get remaining things done over the summer, to enter alpha/beta testing in the autumn.
- So this leads towards a release in the earliest at Christmas 2016, and more probably during the first quarter of 2017.
Welcome to Unity 5
Multi-level structure in the sewers.
Oh yeah, we finally got the new version of the game engine after months and months of waiting and it is great! What does it mean for DarkDale?
Going underwater
- The full engine capacities are now included in the free version! I was developing using Unity 4.x free, and planned to purchase a Pro license eventually coming closer to release: that’s not necessary anymore, something which frees 1 500$ that can be invested in assets instead. Plus of course, a better development environment.
- The new Unity UI system has gotten out of beta stages and is quite impressive. Refactoring all my code to work with the new UI has been a tedious and rather boring process, which I’d say is around 85% done, but it’s been worth it. UI is now sharp, fast, more intuitive and most importantly, flexible so that I can make quick adjustments easily as I play with it and feel what works and what needs tweaking. But just redoing things which were already done didn’t make for much interesting material to show, and it’s one reason the I haven’t updated the blog more regularly, even if I worked a lot.
- Physically-based rendering. Yes, Unity 5 provides a full PBR pipeline which means a greater visual quality in textures, lighting and shadows. I’m in the process of recalibrating the existing textures for the new shaders and so far, the difference is subtle but it looks really good.
- Very welcome updates to their Animation API, which will allow me to control animations from script much more easily, something that’s necessary due to DarkDale being 1) built up at runtime using Lua scripts and 2) grid-based, which means that creature/character animations have to fit exactly in 3 meters / 90 degrees intervals. I had to resort to all kinds of hacks to make the Unity 4.x animation system behave like I wanted it to, something that’s now happily behind me.
Looking up at a torch above the surface from underwater.
In the first iterations of the game engine, I had thought water to be simply a decorative surface. It raised much problems about how to deal with items that could fall into the water however, and prevented using it as means to enhance level design. As a result, I’ve changed the entire water system so that now water tiles are tiles like the others: you can see beneath the surface, and take a plunge! While implementing this, I had to also implement the code that takes care of detecting different elevations and animating the party falling down. Note that falling is physically accurate, as falling longer will mean an acceleration, and falling into water slows you down. I’ve made some tests where the party makes a huge leap from 4 levels above the water and plunges down 3 levels below the water surface… The effect is spectacular and you should expect to see it in game at some point!
Going down meant also going up, so I’ve added ladders and all the code required to support them. By the way, making levels tri-dimensional by using the height element has always been one of my priorities in DarkDale as it opens up so many new possibilities in terms of level design. This is one place where Legend of Grimrock 2 made a step in the right direction, but not enough: its concept of “elevation” on the same level is rather limiting at times and really not intuitive to work with in the level editor if you wish to make complex layouts. In my engine, each difference in elevation is a separate level on which you have full control and work on separately, and you can decide which levels will be rendered together using a levelGroup variable. This also allows to mix-up different water elevations in the same environment and construct waterfalls or water slides.
Get connected
It was more than time to get some game logic into the engine, and after trying a few implementations, I’ve set up for the final events/connectors model which will allow game entities to communicate together, for example when you pull a lever and it tells the door next to it to open. Along the way, I’ve also modeled, textured and animated a door and a lever, created their sounds plus coded the door and switch components which make them work.
Marco Mastropaolo has continued developing his MoonSharp Lua/.NET bridge, and it is now blazing fast and has so much useful features that I don’t even know where to start for implementing them. In any case, it allows very easy integration of Lua scripting in a Unity environment. The script components are ready as well, and they communicate with the external world quite easily, sending or receiving events. For example, this is a script entity in the beginning of the level (which you can see in action in the video below), which adds some party dialogue between two random members.
function onPartyEnter()
console:addDescription{
en = "The stench of the stagnant and murky water makes your noses twitch as you step into the dark sewers.",
fr = "La puanteur des eaux stagnantes et troubles vous fait retrousser le nez alors que vous avancez dans les sombres égouts."
}
local champion1 = party.champions:getRandomChampion()
console:addDialogue(champion1, {
en = "I hope we can find the bandits' hideout quickly and get out of here!",
fr = "J'espère que nous trouverons le repaire des bandits rapidement pour nous tirer d'ici!"
})
local champion2 = party.champions:getRandomChampion(| c | c ~= champion1)
console:addDialogue(champion2, {
en = "Yes, let's move on.",
fr = "Oui, allons-y."
})
end
As DarkDale has the ambition to be more a role-playing game than a puzzle-based crawler, it will rely heavily on such elements to convey mood and story, essentially inspired by the example set by the Baldur’s Gate series. If programmers out there are wondering about the syntax of the second getRandomChampion() call, it accepts a condition function (like a C# delegate) which tells it to select a random champion between the champions which are not “champion1″; the syntax is borrowed from MetaLua which MoonSharp supports, greatly streamlining the code. So:
party.champions:getRandomChampion(| c | c ~= champion1)
is equivalent to:
party.champions:getRandomChampion(function(c) return c ~= champion1 end)
Looking around
Legend of Grimrock 2 introduced a wonderful look feature which moves the camera forward when looking over a ledge, to give a better view of what’s below. It is so natural, that I played the entire game without even noticing it, until one of the friends from the community pointed it out to me. Needless to say, I am borrowing that wonderful idea, shamelessly, but at least publicly recognizing where it’s from. I’ve also taken the concept further and implemented a peak around corners feature, which you can see in action in the video. It really helps convey a feeling of tension of looking around a corner to see if there is a monster, and it has obvious puzzle implications.
The Editor redux
The DarkDale editor, as of June 2015.
The DarkDale Editor has been entirely rebuilt from the ground up with the new Unity UI, a task which took quite a while, but which now allows me to prototype levels and new additions to the engine much faster. I had stopped development on the editor more than a year ago, because I knew I would need to rewrite it properly at some point, and I was meanwhile working directly from scripts for my level design, something I don’t have to do anymore! I’ve also added a full file browser for loading/saving scenes. While the editor is obviously not fully ready yet, it’s already quite advanced and I’ll keep adding features along as I need them.
So, here’s a video that takes you on a tour that showcases some of the new features in the sewers of Mountain Shadow, which is the starting level of the game. Meanwhile, I’m back on working on the game, and I promise some news earlier than in 8 months time! Also, a quick reminder: if you’re on facebook and are interested in the project, why not “like” DarkDale’s page? -> https://www.facebook.com/darkdalerpg.