Hello everyone !<br><br>Just to give you a background of where I am. I have been programming for quite some time but I have never used engines. Godot is my first one. It's been two days of reading through tutorials and messing around and for the most part I have been enjoying it.<br><br>As an exercise to myself, I decided to try and recreate a Pong-clone with Godot to learn all the basic. It took me most of my afternoon, I struggle with a lot of concepts but I ended up with something I am quite pleased with.<br><br>Now that I am a little bit familiar with the most basic concepts of Godot, here the questions I have that I could not answer after working on my Pong-clone.<br><br>1. Basically, here's how my Pong project is architectured. There is three scenes : a TitleScreen, a PongScreen (where the game happens) and an EndScreen (to display who's the winner). Here a screenshot of the PongScreen tree. I think it is fairly straightforward. https://s18.postimg.org/nrhdmtpvd/godot_architecture.png <br>You might notice from this screenshot that, from my main node, I have two nodes : LeftPlayer and RightPlayer. I created LeftPlayer from scratch and, for the creation of RightPlayer, I re-did what I did for LeftPlayer. I just had to tweak a few variables here and there for the script of the RightPlayer (like the initial position of the paddle and the Input controlling the paddle). But apart from that, there were the same.<br>Now, I think what I should have done is create another scene explaining what a Player is (a paddle, a goal area and a score) and instancing it twice. But then the script will be the same and I will not be able to tweak those small variables. So what is the solution here ? Is this possible to create a "generic player" and the modifying in the script a few variable for each instance ?<br><br>2. This genericity thing appeared to me another time. When I created my SamplePlayer, I wanted to create a function allowing me to pass a string to a Sample, and the function would set the Sample to LOOP_NONE mode. Basically, I would have like for all SamplePlayer to have this function available. I thought of deriving the SamplePlayer class, creating my MySamplePlayer object, implementing the NoLoop function, and then, all the other SamplePlayer I would have wanted to created would have derived from MySamplePlayer class. Is this possible in anyway other than creating the function in a global script (callable from anywhere) ?<br><br>3. And, is it even good practice to use a global script (since it is not good practice in programming to have global variables...) ?<br><br>4. For the paddles collisions with the screen, I had at first this idea : I will have an Arena which will be an Area2D or something, and the paddle (which are KinematicBody2D) will not be able to get out of this Area2D. I was excited at first to see that there was an on_body_exit signal on an Area2D but this does not do exactly what I want : I want a signal to be emitted as soon as a shape is no more included in another, whereas the given signal is emitted as soon as there is no intersection between the two shapes.<br>I have overcome this by create wall around the screen, but I feel like this is hacky and lame. Any idea how to handle this collision more properly ?<br><br>5. One last problem was the following : when one player reach a given score (say MAX_SCORE), the game will end and there will be a title screen with the number of the winner (1 or 2). It is easy to load the scene but I have had hard times to pass to the to_be_loaded_scene a variable (here, the number of the winner). My hack was to store this in a global variable that the EndScene will load at _ready time, but I feel like I could have done a better jobs of passing an info to a scene that hasn't been loaded yet. Any idea ?<br><br><br>Sorry if this is a long post. I have been pretty excited with Godot and I want to perform even better.<br>If you have any other remarks on the way I could have done this better, I'd be very happy to hear about it :)<br><br>Anyway, thanks a lot ! and Happy Programming.<br><br>Rivten