Hard Light Productions Forums

Modding, Mission Design, and Coding => FS2 Open Coding - The Source Code Project (SCP) => Topic started by: Nomad on February 17, 2011, 12:15:35 am

Title: A Contribution
Post by: Nomad on February 17, 2011, 12:15:35 am
Hello there.
Let's say, I am willing to contribute as a C/C++ programmer: graphics or general, whatever is needed the most atm.
What's the plan? Do I check out, do what i see fit and then commit? Or there is some TODO list?
I also have some specific questions and suggestions, so.. well, where to start?
Title: Re: A Contribution
Post by: Zacam on February 17, 2011, 12:36:08 am

Well, welcome and well met.

The SVN allows for public checkout by anybody. Common tool can be either TortoiseSVN (There are instructions stickied (http://www.hard-light.net/forums/index.php/topic,73146.0.html) on that) or GIT.

Using your IDE of choice, you then make and test changes, then use either Tortoise or Git to generate a .patch or .diff and post it here (in a post that describes what it does/changes) and a Badged SCP coder will review it and any discussion about it will take place. Once deemed capable, it will be commited for you (initially). Once further results pass review, you may be granted Internal Forum access and then eventually commit access to the SVN if it all works out to everybodies satisfaction.

Areas where we can use assistance is primarily (as I understand it, and I'm not a Sr. here, chief1983, Goober, Karajorma or The E can substantiate better than I) are in OpenGL Graphics, Collision Detection handling, making the code more thread safe (in an as Cross Platform a way as possible) and most importantly, resolving Mantis Issues (http://www.hard-light.net/forums/index.php/topic,34786.0.html).

A good place to start would be to look over the Open/Unresolved or Unassigned issues in Mantis first and see if anything tickles your fancy. If you have an IRC client, we can generally be found at many hours of the day on Esper.Net in the #scp channel.

Again, welcome, it is hoped you enjoy your stay, please feel free to tell us a little more about you (IDE, OS, Programming background and what you predominately feel you might be interested in wanting to work on)
Title: Re: A Contribution
Post by: Nomad on February 17, 2011, 01:00:56 am
Zacam
Thanks for heartly welcome, I've been browsing this project from times to times and finally decided to put some effort in.

IDE's MSVS 2010, Win7.
Although my primary specialization is Direct3D (9/11), I can write some moderate things in OpenGL. The general principles hold across the APIs. And for shaders, they're almost identical everywhere, though I haven't figured out yet whether you use shaders. Project's really huge.

I can also do general programming, have been leading some other remake project for a year (here (http://www.celestialheavens.com/forums/viewtopic.php?t=10974), reverse engineering/decompilation, refactoring, writing engine + render, intended to be crossplatform too), but did not receive much support from programmers and had to halt it.  It would've taken way too much time for me alone to complete it. So, I want to participate in something that has more real chances.

Err.. what is Mantis? :) Searched the forum, looking into it already.
Title: Re: A Contribution
Post by: Sushi on February 17, 2011, 01:14:19 am
Welcome! Feel free to jump right in. Zacam pretty much covered it:
You may also want to get on IRC:
#scp on irc.esper.net
is the main channel where FSO coders hang out.
Title: Re: A Contribution
Post by: Zacam on February 17, 2011, 02:00:32 am
IDE's MSVS 2010, Win7.

Good, we already have a project set up for that. Be aware that 2010 is capable of using C++0x which we don't have across all of our platforms yet, so be careful for the current moment and limit to C++98/03 Standards.

Although my primary specialization is Direct3D (9/11), I can write some moderate things in OpenGL. The general principles hold across the APIs. And for shaders, they're almost identical everywhere, though I haven't figured out yet whether you use shaders.

We do use GLSL Shaders. Current minimum support for version 1.20 (else it's Fixed Render Pipeline) as well as Limited Post-Processing. We do have some batching and handler/management tracing issues (namely a lack of a comprehensive sorter), and not all platforms have the ability to actually use the Launchers AA settings option to actually set the AA. And we would need to be able to implement it in a way that still allows Post-Processing to be done. Plans are also in the works to see about leveraging some Geometry shaders at some point as well. Of course, we are also still operating on a single pass rendering system in displaying everything, so there's another area we can also use some help, or even just somebody who's more familiar with a graphics API and the kind of workflow/pipeline it needs to accomplish it's goals. I'm barely begining to scratch the surface on OpenGL myself.

Project's really huge.

Heh. That it is. You'll find that there is a lot that could stand to be documented or standardized or what have you. Still a lot of regular C mixed into the works as well, as well as portability issues to address and 64bit execution. As well, currently SSE/SSE2 takes place on a compiler level (Under MSVC 2008 or higher only) as opposed to actual RunTime detection and instancing, so there is another area we could stand to improve. But in the end, while it's large and in some places frightening, if you stick with it, it DOES begin to make some sense. I had zero C/C++ experience when I came in, but that didn't stop me from coming in anyway. :D

I can also do general programming, have been leading some other remake project for a year (here (http://www.celestialheavens.com/forums/viewtopic.php?t=10974), reverse engineering/decompilation, refactoring, writing engine + render, intended to be crossplatform too), but did not receive much support from programmers and had to halt it.  It would've taken way too much time for me alone to complete it. So, I want to participate in something that has more real chances.

Very nice. So, debugging, profiling and Analysis are probably things you are familiar with (Is your version of MSVC high enough to give you Analyze functions?) and that's always a plus. Of course, to really be able to profile well, you'll need to have a copy of Freespace 2 (or one of it's TC's if you are more into other Universes) so I hope you do (if not, it's REALLY cheap on Good Old Games (gog.com)) and we can help you set up the minimum needed.

The biggest factor for any change to the code is that, no matter what, at the end of the day the code MUST still be able to load the original Freespace 2 Retail Data and present it just like Retail did (naturally, it'll probably be faster/smoother than, but you hopefully get the idea). This isn't to say that new things can't be done with the engine, we do support a number of TC's as well (The Babylon Project, Diaspora (Battlestar Galactica) and Fate of the Galaxy (Star Wars) just to name a few) and they have plenty of features that regular "Retail" never offered. Whenever possible, we like to make sure that features for one can also be features for all, so long as it doesn't break the Cardinal Rule.

Hopefully, you haven't fled the room in terror yet, so I look forward to how this may develop.
Title: Re: A Contribution
Post by: Nomad on February 17, 2011, 02:42:40 am
Zacam
Quote
Good, we already have a project set up for that. Be aware that 2010 is capable of using C++0x which we don't have across all of our platforms yet, so be careful for the current moment and limit to C++98/03 Standards.
Yup, have to abandon new, fancy, highlighted nullptr :)

Quote
We do use GLSL Shaders. Current minimum support for version 1.20 (else it's Fixed Render Pipeline) as well as Limited Post-Processing. We do have some batching and handler/management tracing issues (namely a lack of a comprehensive sorter), and not all platforms have the ability to actually use the Launchers AA settings option to actually set the AA. And we would need to be able to implement it in a way that still allows Post-Processing to be done. Plans are also in the works to see about leveraging some Geometry shaders at some point as well. Of course, we are also still operating on a single pass rendering system in displaying everything, so there's another area we can also use some help, or even just somebody who's more familiar with a graphics API and the kind of workflow/pipeline it needs to accomplish it's goals. I'm barely begining to scratch the surface on OpenGL myself.
Actually, render code scares me a lot. I would strongly advice to intoduce some at least more or less object-oriented architecture at first, withoud that c-style-with-hacks-here-and-there approach, and abandon 16bit colors completely. It would be waaay more easier and comfortable.

Quote
Very nice. So, debugging, profiling and Analysis are probably things you are familiar with (Is your version of MSVC high enough to give you Analyze functions?)
Generally, I spend about 80% of time debugging, so yes. And have some profiling tools too. But not sure about what you mean with "Analysis".
I have access to MSVS 2010 Ultimate.

Quote
Of course, to really be able to profile well, you'll need to have a copy of Freespace 2
Original FS2 is installed, now downloading something using FreeSpace Open Installer, but I doubt I could spend much time to get into custom campaigns. Should see later regarding how good the work will go.

Quote
The biggest factor for any change to the code is that, no matter what, at the end of the day the code MUST still be able to load the original Freespace 2 Retail Data and present it just like Retail did (naturally, it'll probably be faster/smoother than, but you hopefully get the idea).
That's clear :)

Quote
Hopefully, you haven't fled the room in terror yet, so I look forward to how this may develop.
Still here lol :) Checked out, complied. Somehow, gr_init() keeps to freeze or crush explorer.exe, now figuring out the reason. Will be my first bug fix :)
There are also a lot of memleaks, I would propose a little bit different allocation technique I used in my previous project.



Sushi
Hello there and thanks for warm welcome :)

Quote
You may also want to get on IRC:
#scp on irc.esper.net
is the main channel where FSO coders hang out.
Not used to IRC, personally I prefer Skype conferences, but will try to find some time to get into this.
Title: Re: A Contribution
Post by: Fury on February 17, 2011, 03:21:22 am
Not used to IRC, personally I prefer Skype conferences, but will try to find some time to get into this.
You can use this link (https://wbe04.mibbit.com/?settings=b73fe961ed217d9a3cbd9637dc7ba9bf&server=irc.esper.net&channel=%23scp&noServerTab=false) to get yourself right into #scp IRC channel. It uses your web browser, so no need to figure out how to use IRC clients, just pick a nickname and in you go.
Title: Re: A Contribution
Post by: chief1983 on February 17, 2011, 09:53:24 am
Yeah, if I'd managed to reply sooner, I could have just pointed you to any of the channel links in my signature ;)

Hope to get a chance to chat with you on IRC soon.
Title: Re: A Contribution
Post by: QuantumDelta on February 22, 2011, 05:28:30 am
Skype wouldn't be as effective for this community as IRC because of the large number of people involved and the fact that they're rarely all in one place at one time.
Being a truly global project it's hard enough to try to make that happen when all are willing, let alone on the off chance.


If you feel reallllllllllllly brave you could always do netcode! *puppy eyes*
Title: Re: A Contribution
Post by: Fury on February 22, 2011, 05:31:09 am
If you feel reallllllllllllly brave you could always do netcode! *puppy eyes*
And here I thought you've repeatedly claimed there's nothing wrong with the netcode. :p
Title: Re: A Contribution
Post by: karajorma on February 22, 2011, 06:50:06 am
I doubt he's a big enough idiot to claim that. In fact I don't think I've ever met someone who was a big enough idiot to claim that. :p
Title: Re: A Contribution
Post by: QuantumDelta on February 22, 2011, 12:33:20 pm
I never said it was perfect, but I do think it's a /lot/ better than most people give it credit for...
Title: Re: A Contribution
Post by: Spicious on February 24, 2011, 03:02:37 am
Have you considered creating a replacement for the OBJ2 format?