Congratulations on finishing the second chapter of this book! As mentioned previously, it is imperative that you understand everything covered in this chapter, since everything that follows will rely heavily on what we covered here.
Smooth and consistent results on different platforms and under different conditions are just as important as a good structure of an application, which is yet another layer of lasagna, if you will. Upon successful completion of this chapter, you are left yet again with sufficient knowledge to produce applications that can utilize both fixed and variable time-steps in order to create simulations that run identically and independently of the underlying architecture.
Finally, we will leave you with a piece of good advice. The first few chapters are something most readers follow relatively closely and literally. While that's an acceptable way of doing things, we'd prefer you to use this more like a guide instead of a recipe. The most amazing thing about human knowledge is that it isn't simply absorbed through endless memorization. Experimentation and gaining actual experience is the other half of the key to successfully mastering this, so go ahead and write code. Write it good or bad, compile it, or get a bunch of errors, run it or crash it, it's good either way. Try out new things and fail miserably in order to one day succeed spectacularly. You are well on your way to getting your hands dirty, as we will actually begin implementing our first game project for this book in the next chapter. See you there!