Hard Light Productions Forums

Off-Topic Discussion => Programming => Topic started by: Fury on January 20, 2015, 06:00:25 am

Title: Choosing a programming project
Post by: Fury on January 20, 2015, 06:00:25 am
What kind of process do you go through when you choose your next programming project and how do existing similar projects factor in to that process? If you have figured out anything that has made the process easier for you, it'd be nice if you could share your thoughts. :)
Title: Re: Choosing a programming project
Post by: Flipside on January 20, 2015, 06:51:51 am
Heh, if I knew the answer to this one, I might actually get a project started ;)

Seriously though, the first thing I tend to do is just write down what I want it to do, I've had some ideas that are great in theory, but when it comes to writing down how things would work in practice, I suddenly find brick walls that I never knew were there.

With regards to similar projects, it's that thin line between inspiration and emulation, as it were, some methodologies in games make so much sense in certain circumstances that it is almost impossible not to use something similar, the hard part is implementing it in a way that enhances or expands on the original implementation.

Also, personal competence comes into it in my case. I'd love to write a computer game, but if I did, it would be 2D Top-Down (or possibly isometric) graphics, because (a) I lack the mathematical and technical knowledge to go 3D and (b) I personally would rather concentrate my energies on coding a game engine than a graphics one, so the less effort I need to put into one thing, the more I have spare to put into another.

The hard part is always trying to find a compromise between my vision and my ability ;)
Title: Re: Choosing a programming project
Post by: emkay on January 20, 2015, 03:14:43 pm
Although being C/C++ software developer in work, I never did a programming project in my freetime so far (apart from some few code line tryouts).

That is mainly because for every little task for which I thought "hey, I could try that on my own", someone had already done that in some more or less fancy open source (or other type of freeware) project.

Sometimes, however, I think it would be great to get involved in some open source project, but then again the big question is: IN WHICH ONE?

For now, I decided to gently start setting small footsteps into the Freespace SCP. But then again, it comes down to having time and leisure and getting to know the code - and the SCP has quite some code lines... :nervous:


To give this post some reason (or not): If anyone has some recommendations on what I could try out (whether in the SCP or not), go ahead. My only personal constraint is: It should not be too time-consuming or urgent, as I really don't have as much time as I'd like to...
Title: Re: Choosing a programming project
Post by: Goober5000 on January 20, 2015, 09:19:48 pm
To give this post some reason (or not): If anyone has some recommendations on what I could try out (whether in the SCP or not), go ahead. My only personal constraint is: It should not be too time-consuming or urgent, as I really don't have as much time as I'd like to...

Glad you asked. :)  You should check out this thread (http://www.hard-light.net/forums/index.php?topic=82688.0), in particular this post (http://www.hard-light.net/forums/index.php?topic=82688.msg1479353#msg1479353).  And don't worry that FSO has such a large codebase.  It is divided up into sections, and most of the sections can be understood on their own without needing to know about other sections.
Title: Re: Choosing a programming project
Post by: emkay on January 21, 2015, 04:27:41 pm
Thanks for the hint, Goober5000, already been there before.

Though that is really a thoroughly detailed description on where and how to start with Mantis and SVN, I still have the feeling that most bugs reported are either very exotic and hard to reproduce (isn't it always...?) or you need extensive knowledge of the code to fix them properly. (But to be honest, I didn't actually check that many bugs recently.)

So, my problem is really, that some SCP expert would need to give me some guidance like "you may try fixing this bug here...".
But of course, I'm well aware that if others would ask the same, no one would actually get any work done.

So in the end, I just need to convince myself of doing what many others have obviously done before: Getting to know the code on my own.

I should note that my work experience is mostly in the area of embedded programming. Hence, I never dealt with shaders, game engines or anything the like. But if you like to get FS running on a 125 MHz microcontroller without graphics or command bash, then I'm your guy.  :pimp:
Title: Re: Choosing a programming project
Post by: niffiwan on January 21, 2015, 05:22:38 pm
I'm certainly not an SCP expert; but these are a couple of bugs that seem like they should be fairly straight forward to fix.  I think they both just need conditional checks added to the relevant sections of the code.  (Of course, I'm not familiar with those sections of the code myself so I could be completely wrong about how simple the solutions would be..).  As for reproducing the issues; I'd hope that the bug submitters

http://scp.indiegames.us/mantis/view.php?id=2928
http://scp.indiegames.us/mantis/view.php?id=3010

As for the question in the OP; I find it difficult to answer in a useful way.  I think I need a driving need or a deep personal interest in the project. I need something that will motivate me to spend the required time learning about what I need to know to be able to write the program, and to be able to push on when I inevitably realise that I've taken the wrong approach and need to refactor large portions of what I've already done  :lol:
Title: Re: Choosing a programming project
Post by: Polpolion on January 21, 2015, 08:18:01 pm
I don't do much outside of work these days but usually what I do try is usually because I want to try some library/technology, or something random online piques my interest. My current half-hearted project is a simple game engine. It's a smaller project than you'd think because you really can't do too much in spare time without focusing on a particular kind of engine, but it would be a nice starting point for the handful of game ideas I have as well as keeping my paltry knowledge of SDL and OpenGL from getting too out of date. Before that I wanted to write a program that would pull NYSE data from Google finance and see what I could glean from it with some machine learning algorithms, but I gave that up pretty quick. Before that I wrote a simple logic programming language based on s-expressions mostly because I had written a parser a few years earlier and I thought the idea was kind of neat (though useless; context-free but not turing complete).

I can't really maintain interest in any one thing for more than a couple weeks at a time. Work is a bit of a mixed blessing for motivation because I see a lot of interesting problems and ideas but it's difficult to spend 9 hours a day programming then come home and spend a few more hours programming. Most of the reason I'm still working on the game engine is because I know that if I finish it I'll be able to repeatedly come back to it as a starting point, and if I code it right it will be useful for more than just games.
Title: Re: Choosing a programming project
Post by: emkay on January 22, 2015, 04:43:58 pm
Thanks, niffiwan, I might have a closer look as soon as I find time again.

Maybe there's another rather psychological thing to it: If the bug really should be easy to fix, why didn't anyone fix it yet...? ;-)

Just kidding, of course I know that there are different priorities to them. And maybe those "small" low-prio bugs are even left for a reason: To give others the possibility to get familiar with the code and give them the feeling of being helpful (which they actually really are) very soon.


Reproduction is indeed an issue for some (or many?) bugs. But for me it's admittedly rather laziness: I just don't want to install a particular mod just to be able to start a mission where the error was found in the first place and is guaranteed to be reproducible. But of course, I know that that is actually not the proper attitude for really getting into bugfixing.

We'll see... maybe I just have to convince myself a little bit more. :-)