View Full Version : Time to talk about how to handle source code
ErosOlmi
28-02-2007, 18:18
To all of us here.
Petr has create a great game: TopDown3D.
Many as contributed with 3D models, textures, sounds and in general to all media files needed by the game.
Now Ken started to modify source code of TopDown3D with great additions developing nice ideas. I'm happy about that. I'm so happy that sometimes I find myself to smile with no-one in front of my computer and people passing and looking at me say: are you crazy? I suppose I'm not crazy but just part of a little dream. I suppose you can understand me.
But the dream can slowly moving to a nightmare if you think on how to manage source code maintenace coordination. If everyone of us create own versions of TopDown3D we will get crazy quite soon. Please read my words in positive way because I'm telling this only to share my thoughs and see if there is a better way we can go on developing this so nice experience all together.
I'm thinking how to go on with TopDown souce code maintenance considering we all have great ideas to be developed and integrated in one single souce code object.
I'm thinking about some kind of coordination: a project leader. Can it be?
Do you have any other idea?
I'm open to any possible solution (human or software).
Ciao
Eros
Michael Hartlef
28-02-2007, 21:46
You're right Eros, the team has to be organized into positions. There has to be someone who manages everything, someone who maintains the official code, etc etc. For a persistant and similar style it is also important that there is organization inside this project. Before we go on big time like Kent has outlined, everyone should know what they have to do and where they better stay outside. Ofcourse, suggestions are allways welcome and this is how a project grows.
Personally I like to stay focused on one or two things and try to avoid jumping from subject ot subject. Imho that is the death of progress so even if it is very tempting to look at the coding you guys do, I stay outside. Because I don't wanna get sidetracked and I don't see myself as a coder inside the gameproject. You guys do that allready very very good.
We should really try to do only one, or maybe two parts. In bigger teams, you don't see someone doing grafix, writing the storyline, changing code and composing music at the same time. That is why I concentrate on the module. After this is basically done, I will work full force on the game parts that I was assigned to.
We should outline the positions and then everyone should apply to a position they like.
What do you think?
Petr Schreiber
28-02-2007, 22:03
Hi,
Eros, I understand fully your idea.
I have one other idea too - we could change the first post about the game to project status / latest download / feature list as I did for RobotDuel, so any visitors could be sure the latest version is there.
Bye,
Petr
I totally agree with you guys. My vote for project leader is Petr, it really is his baby projects combined that was the launching pad for all of this, tbgl, his great game demos. Second in command Eros, he is the father of thinBasic and together with Petr they can work to make the background commands better.
Mike, I know you are ahead of me in programming and have many other skills that match my other skills. So I say you in third and I am happy being in the group doing what I can do.
How about this. Eros makes a special forum under tbgl forum. Within that forum we have threads started for each thing that would be the outline project. Then all discussion to each section will be self contained yet be organized. The first post in each section will say what the task at hand is and the moderator will change it to list who is working or collaborating on that section.
Some possible layout ideas, I am not sure how the engine will handle the game as it gets complex. I am thinking always keep it simple.
So maybe have 2 engines and then a master control program that handles setup, options, and common tasks in both games.
Master Control Program
Instant Action Game / \ Story Based Game
\ Common Components /
Models \ Each Level will have
Music own subfolders for
Artwork unique items to that level
Sounds
Having the latest version at the top for each section is a good idea too. This way we can always go and get the lastest version. I still think it is nice to have the history of development and keep copies down in the thread in order they are made. It always makes it easy then to go back and find someplace in case we need to branch back and nice to have a live archive like that.
I had lots of time this week so I wanted to do as much as I could while I could. My Dad is in Ohio visiting so that allows me more hours to work on this fun project.
I have been thinking of the issues here for sometime this week. I got an idea to make it manageable in chunks. So without actually changing the code, I will setup a skeleton and submit that skeleton to you guys for tweaking and discussion. Then Petr can use that skeleton to keep his task from being mind numbing and make it easy for us all to add our parts.
There are two ways to do it. One is one file with everything being function calls. Very easy to move about to the part you want and to keep things organized.
The other is separate source files for all functions, include files and then have project files.
I will ty to create a skeleton of both kinds for a start.
Be back soon.
Later I did the single file but all sub skeleton below about 2 posts. The second all broken up file, I am not going to do, basically it is just taking each sub and making it a separate source or include file tied into one project file. I think you guys can picture what it would be like looking at the skeleton of one file with all subs. All the subs would be separate source or include files instead.
ErosOlmi
28-02-2007, 23:18
Well, I see all we agree that some coordination is needed.
Ken, I do not think is a matter of first or second but a matter of competence or responsability. I hope to see more projects in common for future so while in a project one person can be the main coder, in the other project can be the 3D modeler or the leader/coordinator. So it can be a decision to get project by project. Of course this will not cut off everyone to produce some material not related in his specific project responsability.
I would like also to say that there will be no obligations for anyone. Everyone must dedicate the time he think he/she can have. No obligations to keep the same role if someone is not comfortable.
I like the idea to use forum structure to better organize all the material not to have a 200 posts monster thread like the one we had in TopDown3D game. This post is really a "WOW" :D On this matter, we can agree in a common forum tree organization to apply to TopDown3D project. Than we will work a bit with this structure and if necessary I will make all suggested changes.
So, for starting, I would suggest the following for topDown3D project:
project leader: Petr
source code coordination: Petr
code checking: Ken
3D models, media files (textures, sounds, ...): Mike, Ken
new thinBasic DirectInput module development: Mike.
This new module will be useful in many other scripts.
bug hunter, game tester: all
All will be free to suggest any idea or submit any material but only listed people will be in charge of relevant area.
I will elect all poeple in this group to be Moderator of forum and subforums related to this project.
Please fix or improve any of my above mad idea ;D
Ciao
Eros
Sounds good we are on the way!!
Here is the skeleton where all the code will be in one file, but hopefully manageable as all the things will be organized and it will be easy to put new code blocks into the main program as developed.
I am sure I am forgetting many things and ignore that all lowercase naming. I jsut wanted to get the idea out to show how it would work and be organized.
But basically for example all Constans will be in the constants subroutine, but organized with in that sub by commented sections.
The same holds true for all other subs like that: types, displaylists, globals etc.
Petr Schreiber
01-03-2007, 00:11
Hi,
I am comfortable with being project leader ;D.
Kent, thanks for your code framework !
Bye,
Petr
Petr, maybe it would be a good idea to flesh out the skeleton where all the pieces are in place only as message boxes.
For example, just one branch, but we can do the whole tree this way and then in the comment for each node each
one responsible will have their name So this way in the source we see who is doing what and who else joins in:
Master Control Subroutine
Help
Instant Action Play
Story Based Play
Common Commands
Credits
Programming
Music
Modeling
Art
Sounds
Testing
Acknowledgements
Reference
Ships
Locations
Characters
Items
Pick Ups
Options
Video Mode
Resolution
Full or Windowed
Sound
Music Volume
Voice Volume
Engine Volume
Special Effects Volume
Input
Keyboard
Joystick/Gamepad
Skill Level
Rookie
Combat Experienced
Ready to take Command
They call me Ace
Master of the Universe
Launch Instant Action Game
Launch Story Based Game
Present Score
Process Exit or Game Continue
As you can see we can layout the whole game like this and just set up a message box to see that the logic is working to access all parts. And then moving into the 2 game types. You are best to decide how to handle the 2 game types. Since everyting is modularized, I guess both game types can use the same core modules for the engine, but then use their own specific needs in their own. I will leave that to you Petr.
If the game is fleshed out in simple method like this for the whole game then we can just plug in modules as developed by each member.
I will leave that as start, Eros, Mike and you Petr can add yours and then we can build it up till we think it is complete. Then once signed off by all we can flesh it out in detail.
anyways my thoughts while i took a nap :)
ErosOlmi
01-03-2007, 14:26
What about this forum structure for TopDown3D (and future games):
Game general
Game executable
Game sources
Media material
Bugs handling
Michael Hartlef
01-03-2007, 15:03
Forum structure sounds good to me.
About code structure... no comment from my side as I believe in the saying that to many cooks will ruin the meal. You 3 do a good job in organizing the code. Once the forum structure will be up, me and Kent should try to make a list about the media content we need.
Good start Eros, I would add maybe the following. Probably needs a little more, but need to run will think about it more when out doing errands.
* Game general
* Game story and Character Development ( Also reference info for the reference section and Help)
* Game executable (This will be only maintained by Petr, it will have the latest of everything in one post, latest of all media
and code in one download)
* Game sources
* Media material (Each Post will be to for one item that will always have the latest version there
Models for example in models. These would now be posts and not forum folders)
playerShuttle - this post will always have the latest version
enemyScout - this post will always have the latest version
enemySmallFighter - this post will always have the latest version
etc. - this post will always have the latest version
Textures - The same will hold true for all these folders too
Sound- The same will hold true for all these folders too
Music- The same will hold true for all these folders too
Artwork- The same will hold true for all these folders too
* Bugs handling
* Development Tools
Petr Schreiber
01-03-2007, 22:18
Hi,
this scheme looks good,
I would be not for splitting it even more or we will have to click too many times :)
Bye,
Petr
ErosOlmi
03-03-2007, 20:39
Forum structure created.
If someone is not comfortable and suggest new organization please let me know. I can always change.
Moderators: Psch, MikeHart, kryton9
Ciao
Eros
Michael Hartlef
03-03-2007, 20:46
Thanks Eros, now we can get wild ;D
Forum structure sounds good to me.
About code structure... no comment from my side as I believe in the saying that to many cooks will ruin the meal. You 3 do a good job in organizing the code. Once the forum structure will be up, me and Kent should try to make a list about the media content we need.
Mike, you are a coder like the rest of us. You are already adding wonderful useful code for us. While creating the media and working on all the other creative ventures, I am sure you will come up with an idea saying wow-- that would be cool if this ship or model could do this, well then you can write the function to do that of course. So I would leave the room open for such things.
Believe me, while working on background art, this latest project came to my mind. You guys are going to love it. I am sure you will come up with the same sort of things, as will Petr, Eros and Roberto.
Coding and creativity is in all our bloods I can tell that. So we should be free to create and unleash what comes to mind.
Eros, thanks I have never been a moderator. If I screw up anything, you guys can leash me outside in the front of the player ship and let me have it!!! Thanks.
Michael Hartlef
03-03-2007, 22:56
Ok, I will name that ship Kent's Punishment ;D
Mike you are great at coming up with Names. I really liked that. We have to put an easter egg into the game now with that!