www.tombraiderforums.com  

Go Back   www.tombraiderforums.com > Tomb Raider Modding > Tomb Raider Level Editor > Software Development

Reply
 
Thread Tools
Old 20-06-16, 11:27   #1921
Nickotte
Historian
 
Nickotte's Avatar
 
Join Date: May 2010
Location: Italy
Posts: 256
Default

Quote:
Originally Posted by Gh0stBlade View Post
Hello everyone!

It's nice to see some of the latest gameplay improvements. I look forward to seeing new features from both "TeslaRus Engine" and "Edison Engine". At this point, AI desperately needs to be implemented since there's already a targeting system in-place (@TRE).

Can someone please explain what is happening to the development of OpenTomb? This situation is quite messy, there's 3 versions of the engine. I stopped working on the project after I realised Cochrane was right.

I personally feel that bad decisions have been made. We're a team, were supposed to work on this together to achieve the same goal. I get the impression that some programmers on the team did not like changes made to the master repo which caused a very silent split of the team.

It is impossible to be a mind reader. If you have an issue, you should come forward and explicitly state your concerns so as a team, it can be discussed. Communication has always been an issue... I remember the good old days when development started to pick up because we had so many people working on the project at once. At this point in time, I've no idea where the project is heading. OpenTomb should not have been abandoned. Development should have been kept in one place. I'm always happy to discuss the future of OpenTomb and help resolve some of the current issues.

Cheers.
I completely agree. I would love to get back on it sometimes and lend a hand, but without a single flow I wouldn't know what to do. Also, I don't quite understand the branches, isn't TeslaRus's engine the starting one, why is it not the master? Is it a fork of itself?
Nickotte is offline   Reply With Quote
Old 20-06-16, 11:40   #1922
Gh0stBlade
Archaeologist
 
Gh0stBlade's Avatar
 
Join Date: Dec 2010
Posts: 2,283
Default

Quote:
Originally Posted by Nickotte View Post
I completely agree. I would love to get back on it sometimes and lend a hand, but without a single flow I wouldn't know what to do. Also, I don't quite understand the branches, isn't TeslaRus's engine the starting one, why is it not the master? Is it a fork of itself?
Someone correct me if I'm wrong but. To my knowledge:

(opentomb/OpenTomb) Is a partially refactored version of the old engine.

(TeslaRus/OpenTomb) is based off an old (opentomb/OpenTomb) commit before the code refactoring began. With new features and bug fixes.

(stohrendorf/EdisonEngine) began as a continuation of (opentomb/OpenTomb) refactoring process (to allow development without disrupting the project).

===

(TeslaRus/OpenTomb) changes aren't in the master repo because the team split. Last I heard, TeslaRus wanted to review the old engine and see what really needed to be refactored. However, there was never an update as to which repository is being used for the team.

Last edited by Gh0stBlade; 20-06-16 at 11:41.
Gh0stBlade is offline   Reply With Quote
Old 20-06-16, 11:57   #1923
stohrendorf
Hobbyist
 
stohrendorf's Avatar
 
Join Date: Jul 2015
Location: Aachen, Germany
Posts: 77
Default

Personally, I'd really like to see people helping TeslaRus, because the current state of the refactored "OpenTomb" repository feels like a failed experiment to me. Rename the master branch of the "official" repository to have a backup, grab TeslaRus' code, force-push it to the master, and get TeslaRus back on track. Let the Phoenix raise from the ashes, so to speak. I have my own little pet fork to play with
stohrendorf is offline   Reply With Quote
Old 20-06-16, 16:10   #1924
vvsgh
Student
 
Join Date: Jun 2015
Posts: 134
Default

Quote:
Originally Posted by Gh0stBlade View Post
I personally feel that bad decisions have been made. We're a team, were supposed to work on this together to achieve the same goal. I get the impression that some programmers on the team did not like changes made to the master repo which caused a very silent split of the team.
When a people feel that something is not right, there always is a temptation to step aside without a fight. And only a mature person can cope with that despite the cost. Unfortunately for the open source projects they are just a hobby, so there is little reason to make one's life more difficult than it used to be. It isn't fun.

Quote:
Originally Posted by Gh0stBlade View Post
I remember the good old days when development started to pick up because we had so many people working on the project at once.
Yes, the cooperation can do wonders to what a society may achieve. But that doesn't come without some sacrifice.

Quote:
Originally Posted by Gh0stBlade View Post
(TeslaRus/OpenTomb) is based off an old (opentomb/OpenTomb) commit before the code refactoring began. With new features and bug fixes.
Not exactly. That repository was based on a different code base from the beginning. It was a personal experimental branch, while the opentomb repository has the stable code with bug fixes. TeslaRus did commits to both at the time.

Quote:
Originally Posted by stohrendorf View Post
Personally, I'd really like to see people helping TeslaRus, because the current state of the refactored "OpenTomb" repository feels like a failed experiment to me. Rename the master branch of the "official" repository to have a backup, grab TeslaRus' code, force-push it to the master, and get TeslaRus back on track. Let the Phoenix raise from the ashes, so to speak. I have my own little pet fork to play with
I wish it would be that simple. But do TeslaRus wants to work on such branch? And would others resume contributing to it in that case? That's the question.

Last edited by vvsgh; 20-06-16 at 16:12.
vvsgh is offline   Reply With Quote
Old 20-06-16, 17:43   #1925
Kikiloco
Historian
 
Join Date: Jul 2006
Posts: 380
Default

Quote:
Can someone please explain what is happening to the development of OpenTomb? This situation is quite messy, there's 3 versions of the engine. I stopped working on the project after I realised Cochrane was right.
I think Lwmte know better what happen to the project, so far i understand, this is what happen:

Master Opentomb branch was mainly developed by TeslaRus, he was doing most of the work, the source code using was plain "C" language; then new guys came into the project and starts contributing with some code, however these new guys said that the project would be so improved and benefical if code is switched from plain "C" to object oriented C++. TeslaRus was not comfortable with the idea but he have to accept the switch cos majority say c++ would be great.

So master branch was refactored to C++ languaje, the source was broken for some time until finally it can compile and run again. However since then, seem these new guys have not done much in the main branch with the improved C++ code.

TeslaRus opted to continue his main work in another branch with the original plain "C" source wich is the languaje he is comfortable to code; and cos he is the main developer the master branch looks abandoned now.

I have the sense that the new guys expected TeslaRus continue doing the main work in C++ so they will add some code here and there...using the language they like most; however this dosent work like that; never accept drastic changes coming from new people which are enthusiastic when they joined the project, but after few months the enthusiastic is gone.
Kikiloco is offline   Reply With Quote
Old 20-06-16, 18:17   #1926
vvsgh
Student
 
Join Date: Jun 2015
Posts: 134
Default

Quote:
Originally Posted by Kikiloco View Post
the source code using was plain "C" language
Not exactly correct. It never was plain C. It was C++ mixed with C99.

Quote:
Originally Posted by Kikiloco View Post
if code is switched from plain "C" to object oriented C++.
I'd say from old C++ to C++11, eliminating C99.

Quote:
Originally Posted by Kikiloco View Post
TeslaRus was not comfortable with the idea but he have to accept the switch cos majority say c++ would be great.
That's not exactly true either. TeslaRus never publicly admitted that he is against the idea. Also, there was no consensus, but it was him who actually pushed the button.

Quote:
Originally Posted by Kikiloco View Post
However since then, seem these new guys have not done much in the main branch with the improved C++ code.
I don't think there were too many "new" guys present. Also, it's unfair to say that only TeslaRus contributed new code. The audio code and Lua scripts were contributed by Lwmte. The new shader graphics were contributed by Cochrane. And the camera was contributed by Gh0stBlade.

But it's true that no new development happened in the main since then.

Quote:
Originally Posted by Kikiloco View Post
TeslaRus opted to continue his main work in another branch with the original plain "C" source wich is the languaje he is comfortable to code
As I already said, it wasn't C. And it is even more abstract C++ in TeslaRus branch. But it's true that he is not comfortable with some object oriented C++ features.

Quote:
Originally Posted by Kikiloco View Post
and cos he is the main developer the master branch looks abandoned now.
He is doing a lot of geometry and physics code development. And there is no substitute to that.

Also, I should add that most conflict was about breaking the build system and making it very difficult to build the project on non-Linux platforms.

Last edited by vvsgh; 20-06-16 at 18:35.
vvsgh is offline   Reply With Quote
Old 20-06-16, 18:52   #1927
Cochrane
Gold Membership
 
Cochrane's Avatar
 
Join Date: Apr 2006
Location: Germany
Posts: 16,164
Default

C99 would have been great. It's actually closer to C89, what with declaring every variable at the start of the function. But every file is declared as a C++ file, generally for no apparent reason, which makes it technically whatever version of C++ the compiler defaults to (C++03 or higher). My guess is that this was to use the vt loader code, which was from a different open source project and had always been C++. So it's a bit confusing. And then there's things like the three-thousand-line switch statement from hell in anim_state_control.cpp, which still gives me nightmares. It's quite a fascinating sight to behold.

I don't mean to mock any of this; what TeslaRus did has been consistently amazing. But in terms of style, this is really not an easy codebase to get the hang of if you're not TeslaRus yourself. I'm not sure anyone's actually managed to understand all or most yet; my guess is Lwmte and stohrendorf might.

Getting this thing cleaned up was and remains a very important effort. It's not that important whether it's C++ or C99 or whatever (but not Java. And I'm saying this as a professional Java developer), as long as it clearly separates concerns, splits things into their own files with clear interfaces, and gets rid of all the duplication in so many parts of the code.

In retrospect, that's probably where we should have started, not with porting everything to "C++ style" and then trying to clean it up. But going with "really good C++" everywhere seemed like the "obvious" place to start. It certainly did to me; I started my own branch like that, but never finished or published it because I was too lazy. So I supported the effort to turn everything C++, and then became one of the developers who was for C++ but never did anything with the C++ code, because it hadn't solved any of the original problems, just introduced new ones (including merge conflicts and the whole build system thing). Sorry about that.

Anyway: The language that TeslaRus works in is essentially C89, but run through a C++ compiler (so technically C++03) to get access to some C++ headers, and of course some of the standard extensions (the two slashes comment syntax).
__________________
GŁter auf die Bahn!

Last edited by Cochrane; 20-06-16 at 18:54.
Cochrane is offline   Reply With Quote
Old 20-06-16, 19:25   #1928
vvsgh
Student
 
Join Date: Jun 2015
Posts: 134
Default

Quote:
Originally Posted by Cochrane View Post
But in terms of style, this is really not an easy codebase to get the hang of if you're not TeslaRus yourself. I'm not sure anyone's actually managed to understand all or most yet; my guess is Lwmte and stohrendorf might.
And that's one of the reasons why the development stalled. Also, I'd guess that it contributed to the code breakage that Steffen did during refactoring.

Another reason is that nobody understands the mathematics which is required to work with that code base.

Quote:
Originally Posted by Cochrane View Post
Getting this thing cleaned up was and remains a very important effort.
I agree. But to overdo that would be a big mistake. Nobody wants just pretty picture which doesn't do anything useful.

Quote:
Originally Posted by Cochrane View Post
became one of the developers who was for C++ but never did anything with the C++ code, because it hadn't solved any of the original problems, just introduced new ones (including merge conflicts and the whole build system thing).
That's what I don't like in the permanent refactoring which should always bring some near term benefits instead.

Quote:
Originally Posted by Cochrane View Post
Anyway: The language that TeslaRus works in is essentially C89, but run through a C++ compiler (so technically C++03) to get access to some C++ headers, and of course some of the standard extensions (the two slashes comment syntax).
That how it was. But he is already using more advanced C++ in his repository. So, he is not illiterate in C++, he just don't like it's object oriented features. So, it wasn't the primary reason to abandon the main branch. As he said "he was overwhelmed" by the rate of changes to the code base.

Actually every developer had his own reasons but everyone was embittered and lost incentives to work on the project. And Lwmte did a very good job to raise an interest by rapidly adding new features to scripts.
vvsgh is offline   Reply With Quote
Old 20-06-16, 20:23   #1929
TeslaRus
Student
 
TeslaRus's Avatar
 
Join Date: Jan 2013
Posts: 195
Default

Quote:
Originally Posted by Cochrane View Post
And then there's things like the three-thousand-line switch statement from hell in anim_state_control.cpp, which still gives me nightmares. It's quite a fascinating sight to behold.
Nightmare... in one project all engine was in main.cpp (90000 lines); Yes it is terrible, but it is not a blocker;
Quote:
Originally Posted by vvsgh View Post
I agree. But to overdo that would be a big mistake. Nobody wants just pretty picture which doesn't do anything useful.
Absolutely agree;

From my side: expectation / reality: I expect more architecture / refactoring / renaming changes, but C++ features adding vas not a big architectural change, it vas C++ features adding; (Yes, architecture changes was expected from me. When I trying to do architecture changes it always prevent to merging conflicts (+I was too lazy to study how to correctly resolve that)). Yes, in some places I had create architecture and code, that I see now with bloody tears; In my repo I was trying to use SOLID principle (without fanaticism), encapsulation (I hide many thing inside modules, or private parts of classes), reduce dependencies + made some functions with a single responsibility principle and fix modules names and its content. In most of cases I did not use C++ features because I have no seen reason to use it (P.S. at work I use std::map, std::vector a.t.c...).
TeslaRus is offline   Reply With Quote
Old 20-06-16, 20:42   #1930
vvsgh
Student
 
Join Date: Jun 2015
Posts: 134
Default

TeslaRus
So, to rephrase stohrendorf: what about moving your code to opentomb repository? You could continue hacking there instead of your own. That wouldn't constrain you in any way but it would allow others to contribute as well. We can rename current master, or it can be different branch.

My personal opinion is that it would be a pity to lost current changes in master. But it's better than losing everything.
vvsgh is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 05:37.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.