What tips on handling large code can you give to someone who is developing his first large game in small (3 programmers) team?
Working in a group can be daunting, but Varkas has got the right idea. I have worked in a few small groups of 3 people, and there is a few hints I can give to help out.
1) Document your code.
Make sure you use full advantage of J-Unit tests and JavaDoc. They will make your code readable and help eliminate confusion on what you are planning to do.
2) Have a plan.
This is very important if your group needs to know the way forward. A plan is a great way to keep the group focused on completing tasks, and will make your project look a lot more organized too.
3) Split the work
It helps if you split the work into different major groups to avoid conflicts. Having people edit each others code is where battles can happen. Splitting work between coders will reduce conflicts, and allow you to get work done if each member believes they play a definite role in the game.
4) Respect coding practices
Every group needs a leader to make sure the code stays a certain quality. Make sure your rules for coding is set early and are executed. Also, you want to make sure no one is getting harassed for their coding practices. Every programmer has their own understanding of how code is to be written. Be respectful of their views and use examples to persuade them into a new way of thinking. Always listen to ideas given by each member, and respond to the best of your ability.
In response to your questions...
Beyond the general question I have a few small questions:
1. Where should I initiate and how should I call classes like particle makers and any other classes that have more than one task? (for example, both logic and graphics)
2. How should be code organized - everything in one package or maybe another packages for every element of game loop?
3. How should game loop elements contact with each other?
4. If I want to make 2D game with player character ALWAYS in center of screen, what is better - move everything but not player or move player and camera?
1) You should try your best to keep particle makers confined into one specific class. These are tools and they should be put somewhere where it can be accessed easily.
2) You want to make sure that you have different packages for each section (graphic, logic, networking, etc...) of your code. Organizing your java code into folders combined with documentation will help users find your information a lot faster.
3) This is ultimately up to how you want to do it, but documentation of how you want the connections to be handled is crucial early on. There are a lot of factors, like networked or console... etc. That changes the decision making. Discuss it with your group, and make your decision from there.
However, if you want a straight answer.
I like to connect modules through the update(). I update 1 module at a time until I go through all the modules. I have one class that orders the modules for me in the order I think they are best updated. Therefore, even though all the parts are needed, none of them necessarily have to interact directly with each other.
4) Again, difficult to say. It totally depends on the style of your game. Again, you should consult the members of your group and get their opinion on it before you do anything. Input from your group members keeps them interested in the final product.
The straight answer...
I prefer moving the screen and the player. It allows you to choose between the 2 styles interchangeably. You will be able to allow parallax scrolling and also allow the camera to move in a way that does not give the user motion sickness. Camera movement when done right can really improve the feel of your game, so having more options is always great.
I don't want to overshadow you Varkas, you gave some really good advice. However, I want to give a little bit of a different angle and see how it goes. Good Luck with the group project and I hope you are successful with your huge project.