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