How to show that homotopy of chain maps respects composition?

Given the homotopic pairs of chain maps $f_1 \simeq f_2 : A_* \to B_*$ and $g_1 \simeq g_2 : B_* \to C_*$, show that $g_1 \circ f_1 \simeq g_2 \circ f_2: A_* \to C_*$.

$f_1 \simeq f_2$ means that there exists a family of maps $h_f: A_n \to B_{n+1}$ so that $f_1 - f_2 = d_B h_f + h_f d_A$ where $d_A$ and the like represent the boundary maps $d_A: A_n \to A_{n-1}$ of the corresponding chain complex, and similarly $g_1 \simeq g_2$ means there exists a family of maps $h_g: B_n \to C_{n+1}$ so that $g_1 - g_2 = d_C h_g + h_g d_B$. In general we've defined the differential ("d") maps to always reduce the degree by 1.

Based on just some rough guessing from drawing a diagram of the situation, I tried taking $h_{gf} := h_g d_B h_f:A_n \to C_{n+1}$ as a candidate for a homotopy between $g_1 \circ f_1$ and $g_2 \circ f_2$ and looking for a way to check whether or not the equality $g_1 \circ f_1 - g_2 \circ f_2 =? d_C h_{gf} + h_{gf}d_A$ actually holds. My best guess for checking this is to take one side or the other (or both) and use the known equalities and definitions of things to substitute, add and subtract compositions, occasionally turn instances of $d^2$ to $0$, so on, so forth. But this method hasn't really yielded any results any way I've tried it.

So I have two questions: Is the candidate I've chosen a good idea here, or is there another choice that's more convenient to use (or more importantly, actually correct if this one isn't)? And, for checking whether or not this sort of equality holds, are there some tricks I should know besides just substituting and taking $d^2 = 0$?

To simplify the notation I'll use $s:A_n\to B_{n+1}$ for the chain homotopy for $f_1-f_2$ and similarly $t:B_n\to C_{n+1}$ for the chain homotopy for $g_1-g_2$. Then we can use a similar trick as in analysis for showing various inequalities: \begin{align*} g_1\circ f_1 - g_2\circ f_2 &= g_1\circ f_1 - g_1\circ f_2 + g_1\circ f_2 - g_2\circ f_2\\ &= g_1\circ(f_1 - f_2) + (g_1-g_2)\circ f_2\\ &= g_1\circ(ds + sd) + (dt + td)\circ f_2\\ &= g_1ds + g_1sd + dtf_2 + tdf_2\\ &= dg_1s + g_1sd + dtf_2 + tf_2d\\ &= d(g_1s + tf_2) + (g_1s + tf_2)d \end{align*} The second last line uses the fact that $f_2$ and $g_2$ are chain maps and hence commute with the differentials.
Hence a chain homotopy is $g_1s + tf_2$. Of course, you could have might a slightly different choice at the beginning, and I'll leave you to see for yourself what homotopy you get.
• In the transition between the second and third lines, why did $g_1$ become $g_2$?
• @Exterior: Thanks, I just mistyped the subscript 2 and it propagated. I fixed it. It is supposed to be $g_1$ the whole way through.