Posts

Showing posts with the label code

Mixing libraries

Image
Let us try blogging again. If you search L.B.A. Tribute news you can find them at coffemonsters.com Here we will be focusing on more technical stuff.   These days I'm tracking some delay in the processing of interaction between my UI (Qt) and Backend (custom code). Generally still far from resolving issues but slowly digging through problems. One of them hit me as an interesting one: QtTimer. I'm using them because they are the most efficient way of injecting some processing into Qt. If this claim is true I'm not sure but they for sure work better than anything I tested so far.  Generally, my whole tooling is based on multiple processes that communicate with each other. I got a little bit more into the details in the presentation that I did recently: This setup result that I have multiple Qt event queues processing at the same time. One in the base process and one in the sub-process. It is really important, that they are processed efficiently because I discovered the hard...

Hierarchy - UI improvement

Image
This time light topic of UI designing :] But before this let's discuss how the hierarchy in the engine works. So it was easier to understand these, let's look at the tooling of it:    We have there: World (ID:0) Loaded Stream (Citadel Island) Loaded SubStream (CI.Citadel) Unloaded SubStream (CI.Logic) Folders (f.ex. Park) Entities (f.ex. Ferry) If you are curious what a Stream is, you can think about it as a scene or a level. Now that we know all of this let's look a little bit closer at what we have.  Streams and SubStreams are exactly the same  I change the name based on their position in the hierarchy. The  Folders  may look different than Entities but they are exactly the same. They are  Entities  with a folder component. If we go this way streams are also just  Entities  with a Stream Component. This leaves us with a bunch of the entities under the World . Which as you can suspect is just an  Entity with ID equal to 0....

Nvidia - unsigned integer issues

Image
Yesterday I experienced another bunch of fun while using my laptop. My normal working environment is a desktop with an AMD graphics card, while choosing a laptop it was important for me to get some Nvidia GPU so I could test code on both machines. This was a smart decision as there are so many differences between them. This time I encounter another one. History Like always a little bit of the background: while doing tooling you need to think about nice interactive objects selections. The beginning was rough as I decided to use a physics ray-trace system to execute picking. This was a simple system where I was sanding a ray thru the world and tried to pick objects that collide with it.  The issue was: every object needed to have a collision body  it did not work very well with objects that had an alpha mask  did not support geometry that was deformed in shaders. I did not like any of these limitations so I decided one day to change the whole thing. I took this time a diffe...

Resource Center - High CPU usage

This is one of the recent issues that I was tracking This issue is pretty simple but because of that, its solution is not so trivial. So let's dig into it. The resource center is a standalone app that: Is a remote file system server  Integrate with Version Control System (currently P4) Is a resource server that is responsible for building resources Manage remote resource builders.  Manage the creation of game build Have UI which allows to browse the file system and trigger compilation of resources and build.   All communication uses TCP/IP sockets and most operations are async for performance reasons.  Recently I was doing changes to speed up the remote file system. I decided to switch all calls into async processing. While doing that I was put in front of the decision: Should I put all processing of connection read/write operations to a single thread? or maybe I should create a separate thread for each of them? I naively decided to go with a sing...

How the fate like to play with us (3rd generation of RTTI)

Life bring to us surprises everyday but today I was impressed how fate works. Whole story started few years ago when I decided to make my own RTTI system for White Rabbit Engine. Then I was still young and naive and thought like everybody at this age that I know how to write complicated systems. This experience teach me that I really can write complicate systems ... but not necessarily should. System was working fine but was over complicated and resulted in lot of stability issues. This realization lead to the series of improvement. I like to call it 2nd generation of RTTI system. Changes are covered by  on of my posts . This was already big step: system was simpler, easier and what most important more stable. This sentence could probably end this story if not the fact that I always felt that it is still not final form of this piece of code. This wasn't what I fully wanted. There was one particular feature that I struggled to add but failed to achieve: virtua...

My bookshelves.

I realize recently that I'm weird programmer. If you would look on my bookshelves you will find there: manga,  fantasy books, movies art books, games art books, books about drawing,  books about anatomy, books about animations, D&D manuals. What you won't find there is any programming book. My only book kind of in this topic is Showstopper about development of windows NT on my kindle. Which is in the fact not programming book but more story of people who created it and I'm still in middle of reading it :)  The other book I reading is  "The Animator's Survival Kit: A Manual of Methods, Principles and Formulas for Classical, Computer, Games, Stop Motion and Internet Animators." which is for me really interesting. So far I finding there a lot of interesting advice which some even apply to programming. And this is weird because as programmer I probably should read some books in my field of work. But I don't fell any push into ...

Animation System Changes: Part 1

Image
After weeks of work (probably I could even say months) and hundred resolved tasks and bugs new animation system finally start working ;] Check final effect: If you think that it is look no different from my old animations then you are almost right :D Currently this new system have even less functionality than old one. Because of that I needed to disable big part of gameplay. Was it worth it ?  Short version : I think that: YES.