Monday, 19 November 2018

Update: September/October/November 2018


You may believe me or not but I'a writing this post for almost two months already. Previous version I wrote 27 October when I was sitting at the airport waiting for plane to return back from the Unite LA where I was presenting Memory Profiler for Unity. The post looked like that:

... another month behind us and it felt like it was taking forever.  - This is how I started writing this post more than week ago. In meantime I hadn't found enough time to finish it up. But now in meantime of sitting at the airport and waiting for returning flight I can finally do that.  
There is only one problem. When I was writing previous version I was certain that I published previous post just month ago. Sadly this are already two months and I have hard time figuring it out when this time passed :| 
Prediction from previous post became reality and I was busy most of the time. When this wasn't the case I was often trying to rest and recharge my batteries. But hey you know me and even with all of that I couldn't stop myself from working on the project. So there is some progress. 
This time theme was and still is "rendering improvement" a.k.a. "fixing my mistakes in the rendering systems”. Whole my work right now is just accumulation of all the changes inside engine architecture over the past few years. Till now I could live without this changes because I worked on relatively simple maps. This days this changing and it sadly don’t perform how I would like it to. At that point of the time I didn’t know that rendering code will be my personal Pandora Box. The best thing was that I casually planned to open it like nothing happening :] 

Introduction

In the last months I wanted to gain more data to profile how technology behind the game behave. That is why I invested some time to improve reporting and collecting data. One of the big change was increasing amount of markers I collect and adding support for scheduling jobs and tasks. Sadly in the profile results I always seen that sending data from CPU to GPU takes a lot of time (slowing down whole rendering). 

Act I

Bravely I jump into fixing my issue and I dealt with it gracefully and quickly … this were my empty wishes. In reality this was a nightmare that took hours full of debugging and frustration. At that point I still  hadn’t expected that this will evolve into big refactoring of GPU buffer management. One change leaded to another and moment later I were already fighting with  synchronization issues inside my multi threaded rendering.  
Issues that contain "multi threading" in name are almost never easy to find. It took me week of poking around and trying understand what the hell happening. But I finally had breakthrough: I found it. I could finally see result of all my hard work.  

Act II

Happiness didn’t last long: Issue that I initially tried to fix was still present. I started to digging more into the whole system and found: despair. All the changes in the rendering system I done over last years overlooked crucial aspect of it: tracing of GPU resources usage. Because this days my tech have separate threads to render and upload data: system was ending in the situation when uploading data overlapped with rendering that used this data. I suspect that this was the reason behind whole long GPU uploads.  
Yes I wrote “suspect” because I still hadn’t finished this change :/ I right now try to build in my mind way to implement it in intuitive way that fit whole system. 
TBC…
So this were for me past 2 months. I cannot really say I’m happy with progress over it but taking into account how much free time I had it isn’t bad. 
And there was continuation of this post that you never seen before.

Act III

This whole work resulted in noticeable performance boost and stability. Sadly I never really finished this changes. It is not the first time that this happen when I need to jump between tasks so whole thing was moving forward...

When I thinking about it right now, December will mark start of my 9th year of remake production. .. So much time ... So much memories ... Who could expect back then that this one small decision will  affect my life so much.. But hey you don't read this post to see me getting melancholic.

You are probably more interested into what waiting for you this year? And this is interesting dilemma for me because I have some stuff done. Yes I really have but they are not where I want them to be. I feel that if I will show them to you  right now I would spoil the whole thing :/ But on another hand you probably don't believe me when I writing this ..... ehhh. Well I may taking wrong decision  but this year I won't be showing anything and just focus on what I do right now to show you some stuff in the first half of next year.

I should also apologies because I will probably be late with the posts again. Finding time to write longer text between work, project and life proving to be relatively hard to me :/ I may try to write shorter messages but knowing life they will turn into the longer posts.

So that is all for now and till the next message whenever it will happen.

Greg

Saturday, 25 August 2018

Update: August 2018

Once again we have month break in posting. I think this will became standard from now on :D I finally need to be reasonable and accept that I won't be able to produce more while working, coding, creating art and the most important having private life. 

At this point of time whole project grown out of scale of something that is easy to handle. I'm dealing constantly with a lot of really complicated systems that depends on each other and I need to say that I handle this relatively well. But it is not like there is no hick ups. The thing that is most irritating for me personally is that it is not possible for me to do all the stuff I want :/ 

I'm greedy and would really like to progress all areas in the same time (concept art, modeling, level design and code). There is so much really cool things to do in all of them but reality is cruel and I can only work on one of it. When you add to that limited time you can probably imaging how I'm irritated by this whole situation :D ... thing is that I choosing to just let it go.

That is why you see so little stuff from me. I try to take it slowly this resulted in multiple things:

I gave up on milestones

This type of thing work when making game is your full time job. In my case there were always some interruptions: trips, hanging around with friends, playing other games or just laying and doing nothing to rest after tiring day. This leaving me often behind schedule which put pressure on me which I plan to avoid.

I work on project alone

Over the period of last 8 years I tried to join effort with multiple people and in the end non of this cooperation worked out. Some of this failures were my fault and some not. Thing that is important is that I put a lot of effort into whole process which resulted in loosing a lot of time. Now I take it easy and share what I have with people I know but not trying drag anybody into the project anymore.

Stability

I spending a lot of time doing all boring part of coding where I adding tests, fixing the one I broke and generally improving existing code base. Thing is that I deal with almost two thousands of files so there is a lot of stuff to do there and I need to do that so whole things roll. 

Being creative

Recently I got occasion to look over some stuff that I produced over the last 18 years. And I came to realization that I was always doing things in my own way. This applied to my drawings, graphics,  coding and generally my life. This is not always perfect solution because you make mistakes, sometimes you regret some of them but in the end you learning on them and improve next time.

This is kind of story with Remake that have its rises and downfalls. I'm really curious how many people just gave up on it at this point? Well in the end it is not mater because I can not do anything about them. The thing that I can do is to work on project and prove people that still believe in it that all this waiting was worth it.

Currently I going with my long term plan for project. Inside it there is no more space for moving backward because I'm already a little bit tired and if this attempt will fail I will dropping the whole project completely.... at this point I can say that this option rather move further and further away but sadly it still exist.   

With this dark theme I will move to final part of this post:

What you can expect this year ?

Not to much. I don't think there will be any big announcement or release. So far next few months looks rather busy (not related to project). This will affect development rather negatively but I can not do too much about this. In my head next year should be the exciting ones for Little Big Adventures fans :] . 

To not end this post with only text I will leave here this new concept of Sendel ;)


Wednesday, 18 July 2018

Stability

Last months were a lot into making new things. New file system, new terrain edition, new game design all of them are great tasks. Sadly in this rush for them I got somehow lost. 

Everything started few days ago in meantime of playing around with the tools. I was siting again in front of my monitors and trying to create new placeholder object for game. This days I using them a lot to have some visual representation of shape that final object will have. The fact that they don't look good doesn't matter at this point.

In my case this was this object: 



Task of creating and adding it to level was really simple and painless. I had tests done for that so I was sure that this works how it should. Thing start to go a little bit worse when I decided to add LOD meshes. I had at that point already around 10 instances of this tree. Because I don't plan to go and change properties for all of them individually I went and enabled sharing of properties between them. 

Here things start to go wrong: This feature didn't worked.

Guest what ? I didn't had tests for it :/ I fixed the issue quickly but sadly I was rather tired at that point and didn't had occasion to add test that would guaranty this feature to never be broken again. Good thing is that this task have highest priority on my to-do list and will probably happen today.

Of course this is not reason behind this post. This is just proving how testing is important when you work alone. Reason behind this post is that in meantime of this fix I discovered that I am still using old serialization system. This wouldn't be so bad if not the fact that I forgot that I had two serialization systems :/ The moment when you realize something like that you start to feel really lonely in this large code base.

I understand how I ended in this whole situation. I was jumping between tasks where something needed to be done and somehow between all of that I lost track of things I working on. This is not so weird but thought that it happened for something this big and important is still disturbing.

Well world is still spinning and project going on. I will fix the issues and continue with work. Which by the way going pretty well. To show some progress I prepared some graphics representing progress of redesigning outdoor locations in project (Thanks for people who put whole level maps to lba.wikia.com ).

Citadel Island:


Principal Island:



You may notice that right now I focusing more on Citadel Island. This is intentional. My goal is to define graphic style for whole remake and to do that I don't want to split my focus between multiple locations. So far it working great and I'm really excited about the results :) This is good sign and mean that soon I will able switch my focus and put some effort into Principal Island which funny fact is planned as at least 3x the size of Citadel Island. This will be big stress test for whole technology :) we will see how it will go.
  

Friday, 6 July 2018

Status

I need more often looks into social media. I just learn that even if you forgot about people, people don't forgot about you. That is why thanks for all the comments and sorry for delay in answering them.

Truth is that I'm pretty occupy this year. In my job I work hard with rest of the team on new Memory Profiler V2 that we announced on Unite Berlin this year.
Other than that I also traveling this year a lot more. This don't help me with finding time for working on project but this don't mean that I don't work on it at all. 

I just wrapped up changes for file system. This is important milestone for project because it finally unblocking my work in terrain system which will allow me to continue designing world. 

In the end I'm really happy that I done this changes because code now look a lot nicer, everything works a lot better and I pushed there some extra functionalities that I needed for long time. In the same time I prying that I never do it again. This was rather tiring experience which resulted in 3 months out of project time and it still require at least one cleanup pass to improve code quality. But I will do it step by step while I will be developing rest of engine. 

From other interesting changes codebase reached over 2100 unit tests. This is not a lot comparing to what is needed but already start paying off. They already catch up few regressions in code that I would introduced by my changes and otherwise would be hard to find. That is why I will be continue with adding more tests into existing code. This is not always fun task but it is needed.

So what now ? I'm returned to initial goal of fixing terrain edition. I have already some results which allow me to do some basic edition. This is still not ready for full scale production but it is enough to resume work on new design of islands (yes I will be developing both of them in the same time).  This is great news because I'm unblocking myself to create placeholder of new looks this should push whole project further into development.

In the end I will try to be more responsive for all comments and once again thanks for all of them. They helps a lot with finding motivation to do something for project when you are tired after long day.

More news with something to look on should be coming soon :) 


Saturday, 19 May 2018

Old but new

Weak ago I talked about all doubts that follow me in meantime of production.. What is interesting about the doubts. They force you to thinking. In my case this resulted in 8 years production of remake but also in changing approach to game design.

Last week I shown this new approach to astronomer house which most of you may not recognize because in original game its looked completely different (or just not remember because it was not really important place in game). 

This week I want to show you new look of place that everybody who played game should know: Citadel. But before we do it let's first look on original location :) Thanks to lba.wikia.com this is really simple:


This was my starting point and based on it I begin to draw quick sketches. Sadly non of them make me feel that this is it. Happily in game there is one more concept showing citadel. You can find it in the main menu:


For this who are curious: mobile version is cropped and no longer contain this building. 


Rediscovering this was big step for me. It didn't made my life a lot easier but it was some additional information how original creators wanted Citadel to look like. I drawn more sketches and more and somewhere there concept of this building was born:


When I finished it I knew: This how I want Citadel to look in remake. Do you have similar opinion about this ?

Sunday, 13 May 2018

Doubts ...

Little Big Adventure ... was released almost 24 years ago (October 1994). It wasn't for me love from first play. I tried it few times and in all this attempts I couldn't even get out of prison. For my defend I was still small kid who didn't know too much. In the end things worked out and for last 8 years I try to recreate first game. There are some successes and failures in this fields but thing is that after all this time I  still didn't gave up... sometimes even I'm curious why.

This days more and more people asking my why I won't use existing technology. I work for Unity Technologies and I know that if I would switch to it I could recreate all the stuff I have so far in few months and be further in development of game. This is fact that I know but still I working in my free time on technology that will be used for Little Big Adventure Remake... sometimes thinking if I should do that. 

At some point of development I noticed that simple remake won't be good enough. Original game is really cool and I cannot compete with it because a lot of people have it dear in form that it is. What I could do is creating my own interpretation: how this game could look if it was done this days. This wasn't easy decision to make. There is a lot of downsides like I needed to throw away old content and put a lot more effort into creating new one. Was it wort it ? I think it was ... but there is always doubts if this was right decision.

And here I'm. The same way how I started project: alone, deep into engine code trying to add another feature that will allow me to create another piece of high level code that will allow me to make another piece of game. When I will finish this there will be another different piece of puzzles I working on.  Good that I like what I do... but is things I do really have any point ?

As you can see my biggest problem right now is not that I failing to deliver stuff. For me each of this failure is lesson after which I become smarter. This are also not my skills that I'm lacking. This make this project interesting because I can work on improving them. The biggest enemies are doubts... they never really leave my side.

I personally envy people who can throw themselves into development without any doubts. Their life is so much easier. For me game development is one big problem which is constructed from sub problems. I see my role as developer to try and solve them all. Problem is that there are multiple solutions for the same problem and you need to choose which is the best for you. Because I still searching for my way of doing stuff I never know if my answer is good or not... it is like my developer life is doomed to be forever in doubts. 

From my experience so far I already know that some people will say that my answers are not good. Old game always will be in hears of it players and as I mention I cannot match this but always will be compared to it. I got used to this thought and now I don't think this is bad. If somebody think that I doing sh..y job I dare them to try and do better one and not just criticise.

In the end I don't plan to give up and even if I have doubts I still working on project. To give you taste of what coming I will share one of new stuff that just few people seen so far.

In the Principal Island there live Bob Vortix - astronomer under house arrest. In original game he live in small house at the city hill in remake his mansion will be a little bit more appropriate for his occupation:


Monday, 19 February 2018

Where we are ...

Last post was more about the technology behind game, this one will be almost exclusively about the game. I will cover changes that happened, happening and will happen before you will get TD3 to play around.

You guys probably remember  this one screenshot form last post:


I don't know about you but I kind of like this interface. It give me a lot of freedom in term of the creation and nice user experience:
  • I can have up to 6 different answers in the same screen. 
  • I can specify where on wheel I want to put each of the answers.
  • I can easily reveal new answer when player gain more information.
  • Answers can be pretty long.
  • Selecting any of the answer have the same speed.
  • There is no way to select answer by mistake (by default none of them is active). 
Only thing that is problematic with it is that it don't cover all conversation cases. This is the reason why I also added this simple view:



I won't claim that this is final state of conversations but this is really good start especially that not only UI work was done. In shadow of nice graphical frontend we have running pretty interesting backend which allow me to quickly script new conversations, change existing ones and generally affect all the important stuff like: quests.

Quests ... Ah it was funny trying to figure out how quest system would work in Little Big Adventure Remake. As you remember original game never had proper quest window. You could see where you need to go at holo map but thats all. I decided to add proper view so players never really lost track where they are in story.

This may sound like small thing but I think it is really important especially that I plan to add more content to the game. Thanks to that game will deliver additional experience for players that finished original game hundred of times. 

.. Uf this was a lot of text. So lets take break for some more visual stuff:


This view is really memorable for me. Thanks to it I realise how slow and painful designing UI is in engine :/ Some may think that suffering is part of creating stuff... Well I kind of prefers different approach: "don't like it ? change it". 

That is why I added scriptable UI where you can describe how UI looks using text. This is not perfect solution and still would love to have visual designing but for now I'm satisfied with it. In around 2 hours I switch to this new system: main menu, inventory menu and quest system.


If you curious, old way of changing UI would look like this way:
  1. Change code
  2. Save & Compile changes
  3. Start game
  4. See result in game
  5. If needed more iteration start from 1.
New way for comparison looks this way:
  1. Start game.
  2. Change script.
  3. Save.
  4. See result in game.
  5. If need more iteration start from 2.
Even with my pretty quick compilations this is still nice improvement in iteration speed.

After this interruption of technology details lets returning to game. Behind this view you also can find whole Quest Management System backend. It is fully integrated with dialog system and allow already on some flexibility but we will see how it will work in practice. 

This covering what was done. Now moving to stuff that happening currently we have Load/Save system which will sadly require some additional changes in engine design. I could of course quickly hack solution for it but I would prefer to do one that will be more elegant. For now I'm not really sure how to do it this way so I moved to some code cleanup and fixing bugs.

Except Load/Save only bigger thing that we missing for TD3 are notification in game (Opened Quest, Completed Quest, New Item and so on). The rest is just bug fixes and verifying that everything works.

Uff... And with that we got to end of yet another long post :) I'm would really love to hear yours opinion about this changes :) Would also be interesting to hear which other part of game you are also interested into.
Greg

Monday, 5 February 2018

Few words of explanation ....

So here we are month delay on Tech Demo 3 and not too much news ...  but for me this was rather long January where a lot happening in project and outside of it. I need to say that I'm a little bit overwhelmed by all of this but in the same time getting more and more excited about stuff that coming. 

Project size

Whole project grown over the years and this days there is a lot to handle for single person. At this point of time code that I maintaining have:
Language filesblankcommentcode
C/C++16205956697300278973
Python 8320055879177
sum:17036157197887288150

From what I talk with other people hardly ever you deal with this size project the way I do: alone. Sadly even for me maintaining this code is almost impossible:/ I started to experience a lot of bugs and regressions in features. All of that was slowing down my progress. But then I joined Unity ...

Unity Technologies is really unique place to work in and I personally love it. First great thing it is that I'm openly doing my own project and company is OK with this. Second thing is that people are open on new ideas and challenges. This approach resulting in great tools for game development. Third one is that even if Unity is this creative place we never forgot that we are developing software. This mean that all standards of software development apply to it: We have continuous integration, code review process and requirement of creating tests.  
This approach not coming from nowhere. Discussing with people that are here for long time source of it is the same as my problem: even when there was 50 of them there were to many stability issues and regressions to handle. They spend then more time patching stuff than creating new things testing changed a lot in this matter.

... I followed my work experience and started creating more tests. At the beginning it was tough to follow this routine in home but with time it became more natural and at this point I kind of have hard time to not do tests. So at this point I have:
TypeCount
Low level811
Tool58
sum:869
After adding all this test code I can catch a lot of regression early in development and always try to expand my library of test. 

Simplicity of complex system

This may not be visible but under the hood this project is pretty complex. This is just loading of world inside editor:

And this is running game:



As you may notice I run a lot of stuff parallel on multiple threads. I really like this way of design because it is challenging to write code that do complicated stuff but in the same time it is easy to maintain.

And here starting stairs :/ As I mentioned before I work alone and if I have idea that I want to do I doing (even if this is bad idea) and there is no person that can save me from doing it. I often implement it and then figuring out that it is not exactly what I was looking for. So I rewriting whole thing once again with different approach. 

This days I got really tired of it ... so often before starting something bigger I first discuss my ideas with some friends programmer. Then I wait for it for some time then ask another friend programmer and then decide to do big change. One of such a changes were current world changes: I waited three months processing if I really want to do it and I finally decided to start it in December.

We are now 2 months later and some things are still broken because of whole transition :) There are some systems that are still not prepare for new way of handling levels and there are a lot of old code that waiting to being removed or cleaned up. But if you asked me if I regretting I will say without hesitation: NO. 


Whole change brought a lot of interesting stuff and if everything will go how I want I should be able to make stuff like seamless traveling between islands - so no loading when you play. Nice vision right ? The best thing is that I think it is not so faraway from us :)


For now as you can see in above image I can load multiple levels into world and change they orientation freely. This result in some pretty cool effects sometimes. 

Developer tools

If we talking about features we cannot skip topic of tools. They are integral part of complicated systems that I creating. I try to make them simple, intuitive to use but also verbose when something is wrong. 



Recently I also added point have automated tests. When I create new stuff all this requirements not making my life easier but for sure helping with development stuff one top of them later.  Generally thanks to this push to have better tools this days I have nice graph editor:


GUI resources editor:

Profiling tool ( Generate *.json files that you can open in chrome://tracing )


Debugging tools inside game (it partially also works in tools):



And a lot more of them here and there. Whole point is that the better tools I have the more I can do and if not them I would probably never got so far. Now thanks to test I believe they will also lasting longer and create less issues in long run.

Where is game ?

Probably curious where in that all is game you all waiting for ... and in my opinion everywhere.


As you noticed probably my ambitions were always very high. Vision changed already so many time: 

Each time because my tech could do more and I know that this may sounds like excuses but I really want to make this game awesome.
My dream is not to just recreate game. I want old and new player to experience completely new unknown world. I want whole story to be more complex, want them to feel oppressed by FunFrock regime, I want them to feel danger when they are followed by enemies.
But in the same time I want them to find world of wonders and full of life. I want them to want explore offered Islands and always find something interesting there to do. There should be always something more to see and explore.
In the end it would be great if some people after finishing game would thought: this is the way how LBA should look it it was done this days.
I think that White Rabbit Engine slowly maturing and soon will achieve level where I will be able to do all the stuff I want. Then I will start adding more content and whole thing will become awesome game which will be nice add on to whole Little Big Adventure Universe.

Tech Demo 3 

If you found yourself so far in this post you are probably curious what about promised TD3 and it is hard not to mention in. I need here to apologies because it became delay and I'm still didn't finished all the stuff that were on list.

I work on it and I'm having already prototype of:

  • Conversations, 
  • Story progress,
  • Quests.
Sadly they still don't feel quiet right where I want them to be :/ so work still in progress over them.

  • Save/Loading
Is still not touched at all.

From other stuff I experimenting with user interface for conversation and quests. There are some nice results like you could see above in one of screens shoots but there are also some issues. I don't have right now clean vision how I want to visualize quests. There are also missing notifications which are crucial so you know that there is new mission or new item was added to your inventory.

Last words

Whole delay in conversion to new world system and Christmas break resulted in delay that we have. In theory I could release some Tech Demo but I wouldn't be satisfy with it so I don't want to do it :/ 

I want to believe that you will forgive me all that and still follow progress of project.
Greg   

Tuesday, 23 January 2018

Where is TD3 ...

I know that it is already past the original date of Tech Demo 3 release but please wait for me a little bit longer. I had busy time and not everything went the way I wanted... but this is not necessarily bad thing. I can say with confidence that the content finally taking form but more about this in next post that should be longer have more details and contain TD3 link ;)  Till then have faith in me and if everything will go right it should be pretty cool release.