I believe Chiri is from USA
Bo3b is in California
DarkStarSword is from Australia
I'm from Sweden
I've mostly been involved with the assembler which involved little co-operation with the rest of the team
Bo3b and DarkStarSword communicate a lot and their teamwork is why 3Dmigoto has so many features and don't crash.
I believe Chiri is from USA
Bo3b is in California
DarkStarSword is from Australia
I'm from Sweden
I've mostly been involved with the assembler which involved little co-operation with the rest of the team
Bo3b and DarkStarSword communicate a lot and their teamwork is why 3Dmigoto has so many features and don't crash.
Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?
I hope that bo3b doesn't mind that I'm posting this here. But as he states, there are many contributors to 3Dmigoto that through team effort, help to solve issues and progress the wrapper.
Plus there are many contributions made outside of the wrapper, like bo3b's school, the templates and scripts made by DarkStarSword, and numerous others.
There are also those that do not contribute code directly but provide testing, feedback and methods, that help advance the devopment of 3Dmigoto.
Quoted from [url]https://forums.geforce.com/default/topic/1038098/3d-vision/donations-in-the-real-world/post/5296613/#5296613[/url]
[quote="bo3b"]We have been talking a lot about donations and attribution recently, and I think it's important to clarify some of the contributions. And emphasize that this has ALL been a team effort.
For background, I've worked as a professional software developer for 35 years, made my living at it. I've shipped 100,000 of lines of code, shipped software in MacOS, shipped email and camera programs for smartphones, long stints in technical support writing sample code, written a debugger, and on and on.
I'm not stating that to brag, I'm pointing out my wealth of experience required to successfully ship software, and a key skill- estimating how hard things are, and how long they take. The reason this is important, is because I want you to trust my judgment.
[quote="Dugom"][quote="Flugan"][quote="DarkStarSword"]This helps for 3DMigoto:
[url]https://darkstarsword.net/3Dmigoto-stats/authors.html[/url][/quote]That is probably one of the most inaccurate graph possible.
It does not by any means represent my contribution to the project.[/quote]I get that, one code line, may be worth thousands.[/quote][/quote]
[quote="bo3b"]
This is a misleading set of statements. It's extremely rare that a single line of code is worth thousands. I've seen this maybe once in my career. However, it is fairly common that a key debugging insight can be worth this much, but not lines of code.
What really matters is consistency, and long term support. Even the best ideas crumble if they are not maintained and kept up to date. There are thousands and thousands of good ideas that languish because the original developer stopped caring.
The graph that DarkStarSword posted for contributions is fairly good. These sorts of graphs are always more rough sketches, more like order of magnitude comparisons. Same goes for counting number of lines of code. It's at best a rough estimation of complexity or value. If you stick with orders of magnitude (1, 10, 100, 1000,...) it's worth using.
It's a rough sketch, not a blueprint. DarkStarSword and I have both put in serious amounts of dedicated time, and this is reflected in the graph.
The added benefit is that he and I work together fairly well as a team. Working as a team is how you get really impressive results. No one person, no matter how smart, can be as effective as a team over time. That means for example that I haven't really worked on fixes directly, because other people do that job. Not many other people can refactor the entire code base, and improve the architecture, so that's where I put my time. DarkStarSword has demonstrated time and again his keen insight into shader code. It's his best use of time. Everyone contributing their best skills. Teamwork, not competition.
In my opinion as a professional software engineer, this graph is pretty good at reflecting the relative contributions of the different people who have worked on it, and their dedication, and the time spent.
If you look at Chiri's contribution for example, as the original author he is clearly a key contributor. He built an amazing base of code in a short period of time. And then he left. It wasn't actually done or usable, but that was its state. Big chunks of code are promising, but they don't make a product.
When I took over the project, the code base had a good start, but was not even close to being usable. Also, the architecture was a total wreck, with code in random places that made no sense. It took a long time to get it limping to being usable. This is where key work happened with mike_ar69, where he did all the DX11 shaderhacking, and I worked on getting the tool usable for him. Unlock his skill set. Teamwork.
For Flugan's contribution, the Assembler is a nice piece of work. In its current state it is a valuable piece of 3Dmigoto, but I caution that it is no more valuable than the Decompiler, or Frame Analysis, or RegEx which unlocks its usefulness.
Flugan added the Assembler early in the project, but did not do anything with it. It languished as a dead branch until mid 2015, when I connected it to the surrounding framework and made it live. We used Decompiler up to that point, and my motivation for connecting the Assembler was to get out of the business of updating the Decompiler.
If you want to see the actually changes to the code, look at the history of just the Assembler:
[url]https://github.com/bo3b/3Dmigoto/commits/master/D3D_Shaders[/url]
This is Teamwork, not a single individual contributor. I connected the Assembler to make it actually replace shaders in a game. Without that step it's useless, an academic exercise. Flugan put in some great work to flesh out instructions for ComputeShaders that we were most interested in. Using games to find these instructions is an unusual approach, because it's all documented on MSDN, but it worked fairly well and got the Assembler to be usable for actual fixes. Still not there though- DarkStarSword stepped in to finish the job by fixing key bugs in the Assembler and making it a real product. Without being able to successfully modify a given shader it was still useless. There is no value in academic code, only code that produces some valuable result, like a game fix. It is critical to focus upon results, not effort or time spent.
The Assembler is a nice piece of work, and even though it has a bizarre architecture like the Decompiler, it is now quite useful and valuable. It has no error handling, which is terrible, but like the Decompiler, that does not stop it from being useful, which is more important.
In terms of time spent by all of us, this is on the smaller side of the work done in 3Dmigoto. And in my opinion, the graph correctly demonstrates that. I've personally written an assembler from scratch in college, and have a lot of experience with assembly. DarkStarSword has also done a lot of ASM, and just recently debugged a critical bug in our Deviare hooking framework at the ASM level. Either DarkStarSword or I could write a new assembler using tools like Yacc/Bison in about a month.
I do not want to discount the value of the Assembler, it's a great tool, and well worth the time spent. But to compare this contribution of several months to the several [i]years [/i]that both DarkStarSword and I have spent is deeply insulting.
For the other contributors, the graph also correctly reflects their modest contributions. Some interesting and useful features, but no extensive changes.
In terms of extremely valuable changes, I think there is no real question that DarkStarSword has done the most impressive work. He's added numerous features and techniques that have cracked open new games that we were previously unable to approach. That's the very essence of adding key value. Results.
I'm not going to discount my work out some false modesty or insecurity however. Changing the code base from a wreck into something usable is work that is extremely difficult and time consuming. Destroy the entire thing, then rebuild it and make it work like before. I've done that twice now. The reason this is important is because it gave DarkStarSword a decent framework to hang his work upon, which is otherwise a spaghetti festival. I've added a couple of nice features like the Overlay, and made some nice contributions to making a clean and simple workflow for shaderhackers. The Decompiler has taken a ton of time, and still to this day I'm surprised by how useful it is, for such a bizarre approach.
It is worth noting some outside of the graph contributions though. This is partly why the graph is only a rough estimate, a sketch, an order of magnitude.
It doesn't show any of the sharing and cracking of hard game problems made by people like mike_ar69, DHR, Helifax, Helix, DarkStarSword, and some other super old timers. It doesn't show anything about original Helix contributions, who contributed the original idea, and hundreds of game fixes with his original Lua based regex type fixing. It doesn't include Flugan's use of 100s of games to find all the opcodes. It doesn't include my School for ShaderHackers, which has given a start to some 20 different ShaderHackers. DHR's universal RegEx for game engines. DarkStarSwords offline python scripts for Unity. It doesn't include Helifax's OpenGL wrapper or game fixes.
Teamwork, right? We all build on the successes of the past, and sharing and learning from each other is 100x more valuable than who did what. In my humble opinion, of course.[/quote]
I hope that bo3b doesn't mind that I'm posting this here. But as he states, there are many contributors to 3Dmigoto that through team effort, help to solve issues and progress the wrapper.
Plus there are many contributions made outside of the wrapper, like bo3b's school, the templates and scripts made by DarkStarSword, and numerous others.
There are also those that do not contribute code directly but provide testing, feedback and methods, that help advance the devopment of 3Dmigoto.
bo3b said:We have been talking a lot about donations and attribution recently, and I think it's important to clarify some of the contributions. And emphasize that this has ALL been a team effort.
For background, I've worked as a professional software developer for 35 years, made my living at it. I've shipped 100,000 of lines of code, shipped software in MacOS, shipped email and camera programs for smartphones, long stints in technical support writing sample code, written a debugger, and on and on.
I'm not stating that to brag, I'm pointing out my wealth of experience required to successfully ship software, and a key skill- estimating how hard things are, and how long they take. The reason this is important, is because I want you to trust my judgment.
That is probably one of the most inaccurate graph possible.
It does not by any means represent my contribution to the project.
I get that, one code line, may be worth thousands.
bo3b said:
This is a misleading set of statements. It's extremely rare that a single line of code is worth thousands. I've seen this maybe once in my career. However, it is fairly common that a key debugging insight can be worth this much, but not lines of code.
What really matters is consistency, and long term support. Even the best ideas crumble if they are not maintained and kept up to date. There are thousands and thousands of good ideas that languish because the original developer stopped caring.
The graph that DarkStarSword posted for contributions is fairly good. These sorts of graphs are always more rough sketches, more like order of magnitude comparisons. Same goes for counting number of lines of code. It's at best a rough estimation of complexity or value. If you stick with orders of magnitude (1, 10, 100, 1000,...) it's worth using.
It's a rough sketch, not a blueprint. DarkStarSword and I have both put in serious amounts of dedicated time, and this is reflected in the graph.
The added benefit is that he and I work together fairly well as a team. Working as a team is how you get really impressive results. No one person, no matter how smart, can be as effective as a team over time. That means for example that I haven't really worked on fixes directly, because other people do that job. Not many other people can refactor the entire code base, and improve the architecture, so that's where I put my time. DarkStarSword has demonstrated time and again his keen insight into shader code. It's his best use of time. Everyone contributing their best skills. Teamwork, not competition.
In my opinion as a professional software engineer, this graph is pretty good at reflecting the relative contributions of the different people who have worked on it, and their dedication, and the time spent.
If you look at Chiri's contribution for example, as the original author he is clearly a key contributor. He built an amazing base of code in a short period of time. And then he left. It wasn't actually done or usable, but that was its state. Big chunks of code are promising, but they don't make a product.
When I took over the project, the code base had a good start, but was not even close to being usable. Also, the architecture was a total wreck, with code in random places that made no sense. It took a long time to get it limping to being usable. This is where key work happened with mike_ar69, where he did all the DX11 shaderhacking, and I worked on getting the tool usable for him. Unlock his skill set. Teamwork.
For Flugan's contribution, the Assembler is a nice piece of work. In its current state it is a valuable piece of 3Dmigoto, but I caution that it is no more valuable than the Decompiler, or Frame Analysis, or RegEx which unlocks its usefulness.
Flugan added the Assembler early in the project, but did not do anything with it. It languished as a dead branch until mid 2015, when I connected it to the surrounding framework and made it live. We used Decompiler up to that point, and my motivation for connecting the Assembler was to get out of the business of updating the Decompiler.
This is Teamwork, not a single individual contributor. I connected the Assembler to make it actually replace shaders in a game. Without that step it's useless, an academic exercise. Flugan put in some great work to flesh out instructions for ComputeShaders that we were most interested in. Using games to find these instructions is an unusual approach, because it's all documented on MSDN, but it worked fairly well and got the Assembler to be usable for actual fixes. Still not there though- DarkStarSword stepped in to finish the job by fixing key bugs in the Assembler and making it a real product. Without being able to successfully modify a given shader it was still useless. There is no value in academic code, only code that produces some valuable result, like a game fix. It is critical to focus upon results, not effort or time spent.
The Assembler is a nice piece of work, and even though it has a bizarre architecture like the Decompiler, it is now quite useful and valuable. It has no error handling, which is terrible, but like the Decompiler, that does not stop it from being useful, which is more important.
In terms of time spent by all of us, this is on the smaller side of the work done in 3Dmigoto. And in my opinion, the graph correctly demonstrates that. I've personally written an assembler from scratch in college, and have a lot of experience with assembly. DarkStarSword has also done a lot of ASM, and just recently debugged a critical bug in our Deviare hooking framework at the ASM level. Either DarkStarSword or I could write a new assembler using tools like Yacc/Bison in about a month.
I do not want to discount the value of the Assembler, it's a great tool, and well worth the time spent. But to compare this contribution of several months to the several years that both DarkStarSword and I have spent is deeply insulting.
For the other contributors, the graph also correctly reflects their modest contributions. Some interesting and useful features, but no extensive changes.
In terms of extremely valuable changes, I think there is no real question that DarkStarSword has done the most impressive work. He's added numerous features and techniques that have cracked open new games that we were previously unable to approach. That's the very essence of adding key value. Results.
I'm not going to discount my work out some false modesty or insecurity however. Changing the code base from a wreck into something usable is work that is extremely difficult and time consuming. Destroy the entire thing, then rebuild it and make it work like before. I've done that twice now. The reason this is important is because it gave DarkStarSword a decent framework to hang his work upon, which is otherwise a spaghetti festival. I've added a couple of nice features like the Overlay, and made some nice contributions to making a clean and simple workflow for shaderhackers. The Decompiler has taken a ton of time, and still to this day I'm surprised by how useful it is, for such a bizarre approach.
It is worth noting some outside of the graph contributions though. This is partly why the graph is only a rough estimate, a sketch, an order of magnitude.
It doesn't show any of the sharing and cracking of hard game problems made by people like mike_ar69, DHR, Helifax, Helix, DarkStarSword, and some other super old timers. It doesn't show anything about original Helix contributions, who contributed the original idea, and hundreds of game fixes with his original Lua based regex type fixing. It doesn't include Flugan's use of 100s of games to find all the opcodes. It doesn't include my School for ShaderHackers, which has given a start to some 20 different ShaderHackers. DHR's universal RegEx for game engines. DarkStarSwords offline python scripts for Unity. It doesn't include Helifax's OpenGL wrapper or game fixes.
Teamwork, right? We all build on the successes of the past, and sharing and learning from each other is 100x more valuable than who did what. In my humble opinion, of course.
I also hope that DSS doesn't mind
[quote="DarkStarSword"]One thing I've been wanting to do for a while is to get some statistics on how much work goes into 3DMigoto - this has largely been for my own benefit (it's nice to know roughly how many tens of thousands of lines of code I've contributed and all), but I thought it might be interesting to share the results with the community as well, especially now that 1.3 is out so the work that went into that is visible. This isn't a competition or anything, but it does highlight how much work Bo3b and I and others have put in to get 3DMigoto to where it is today.
This is actually really hard to get accurate statistics on this for a variety of reasons (game fixes in the repository, misattributed commits, third party code, git subtree, multiple authors working on the same part of the code, refactoring work, tool assisted bulk changes, etc. etc. etc. - the list goes on and on), and there are a variety of ways it could be counted - none of which are perfect. I've ended up writing a script to clean up the repository (e.g. removing game fixes and third party code, and fixing up some authorship information) and used gitstats to count everything - this should only be considered a "best effort" and if you can inspect the [url=https://github.com/DarkStarSword/3d-fixes/blob/master/3DMigoto-stats.sh]cleanup script[/url] for yourself if you wish.
The actual stats are here: [url]https://darkstarsword.net/3Dmigoto-stats/[/url], and hopefully that will update automatically every day to reflect the latest work in the master branch (if I got that crontab entry right).
A couple of highlights:
[center]
[size="L"][color="orange"]Cumulated Added Lines of Code per Author:[/color][/size]
[url=https://darkstarsword.net/3Dmigoto-stats/authors.html#cumulated_added_lines_of_code_per_author]
[img]https://darkstarsword.net/3Dmigoto-stats/lines_of_code_by_author.png[/img][/url]
[size="L"][color="orange"]Commits per Author:[/color][/size]
[url=https://darkstarsword.net/3Dmigoto-stats/authors.html#commits_per_author]
[img]https://darkstarsword.net/3Dmigoto-stats/commits_by_author.png[/img][/url]
[/center]
[/quote]
DarkStarSword said:One thing I've been wanting to do for a while is to get some statistics on how much work goes into 3DMigoto - this has largely been for my own benefit (it's nice to know roughly how many tens of thousands of lines of code I've contributed and all), but I thought it might be interesting to share the results with the community as well, especially now that 1.3 is out so the work that went into that is visible. This isn't a competition or anything, but it does highlight how much work Bo3b and I and others have put in to get 3DMigoto to where it is today.
This is actually really hard to get accurate statistics on this for a variety of reasons (game fixes in the repository, misattributed commits, third party code, git subtree, multiple authors working on the same part of the code, refactoring work, tool assisted bulk changes, etc. etc. etc. - the list goes on and on), and there are a variety of ways it could be counted - none of which are perfect. I've ended up writing a script to clean up the repository (e.g. removing game fixes and third party code, and fixing up some authorship information) and used gitstats to count everything - this should only be considered a "best effort" and if you can inspect the cleanup script for yourself if you wish.
The actual stats are here: https://darkstarsword.net/3Dmigoto-stats/, and hopefully that will update automatically every day to reflect the latest work in the master branch (if I got that crontab entry right).
None of my coding has been optimal.
I reverse engineered the ASM checksum using x86 assembler.
It could be solved in many ways but I didn't know what kind of checksum it was and took the path of converting ASM to C++ one instruction at a time.
Without the checksum you can't write an assembler. I know there is documentation for shader ASM but at the time I had not found any documentation at all. when adding games new instructions would arise all the time hence my massive dump of shaders and solving them all. Hoping to get more than 90% coverage for future games.
I consider both bo3b to be a lot better than me at what they do. The checksum funcion can easily be replaced as well as the assembler removing any trace of me in the code. I will not be moving back to 3Dmigoto from what I can tell right now. I will rather work on getting my hooks dll.
Having two DX11.dll files makes it quite different.
I reverse engineered the ASM checksum using x86 assembler.
It could be solved in many ways but I didn't know what kind of checksum it was and took the path of converting ASM to C++ one instruction at a time.
Without the checksum you can't write an assembler. I know there is documentation for shader ASM but at the time I had not found any documentation at all. when adding games new instructions would arise all the time hence my massive dump of shaders and solving them all. Hoping to get more than 90% coverage for future games.
I consider both bo3b to be a lot better than me at what they do. The checksum funcion can easily be replaced as well as the assembler removing any trace of me in the code. I will not be moving back to 3Dmigoto from what I can tell right now. I will rather work on getting my hooks dll.
Having two DX11.dll files makes it quite different.
Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?
Bo3b - Team Leader/Maintainer
DarkStarSword - Main feature coder
Flugan - Freelancer
Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?
donations: ulfjalmbrant@hotmail.com
Bo3b is in California
DarkStarSword is from Australia
I'm from Sweden
I've mostly been involved with the assembler which involved little co-operation with the rest of the team
Bo3b and DarkStarSword communicate a lot and their teamwork is why 3Dmigoto has so many features and don't crash.
Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?
donations: ulfjalmbrant@hotmail.com
Plus there are many contributions made outside of the wrapper, like bo3b's school, the templates and scripts made by DarkStarSword, and numerous others.
There are also those that do not contribute code directly but provide testing, feedback and methods, that help advance the devopment of 3Dmigoto.
Quoted from https://forums.geforce.com/default/topic/1038098/3d-vision/donations-in-the-real-world/post/5296613/#5296613
I reverse engineered the ASM checksum using x86 assembler.
It could be solved in many ways but I didn't know what kind of checksum it was and took the path of converting ASM to C++ one instruction at a time.
Without the checksum you can't write an assembler. I know there is documentation for shader ASM but at the time I had not found any documentation at all. when adding games new instructions would arise all the time hence my massive dump of shaders and solving them all. Hoping to get more than 90% coverage for future games.
I consider both bo3b to be a lot better than me at what they do. The checksum funcion can easily be replaced as well as the assembler removing any trace of me in the code. I will not be moving back to 3Dmigoto from what I can tell right now. I will rather work on getting my hooks dll.
Having two DX11.dll files makes it quite different.
Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?
donations: ulfjalmbrant@hotmail.com