Place tents in the empty squares in such a way that:
On a touch screen, a tap does what a click does, and a long press what a right-click does (more ways to right-click).
Click a square to place a tent there, or empty it if it is already filled. Right-click it to mark it as grass (not a tent), or empty it if it is already filled.
With the keyboard, the arrow keys move a cursor around the board. Enter does what a click does to the square under it, and Space what a right-click does. Press T to put a tent on it; clicking it round gets there too. Press N to mark it as grass; right-clicking it round gets there too. Press B to empty it; clicking it round gets there too.
Right-click and drag along a row or column to mark many squares at once as grass. Hold Shift while moving the cursor to mark the empty squares it passes over as grass, or Ctrl to turn tents it passes over into grass as well.
A tent rules out the empty squares round it, which must be grass, and the rest of its row or column when it is the last tent the number asks for. With Mark grass on the squares a tent rules out turned on in the preferences, those marks are made for you as you place: one Undo takes back the placement and the marks together, and taking the placement away later leaves the marks for you to clear.
Warning ‘!’ marks appear to indicate adjacent tents. Numbers round the edge of the grid light up red to indicate they do not match the number of tents in the row. Groups of tents light up red to indicate that they have too few trees between them, and vice versa.
The matching is the part of Tents you have to keep in your head, so you can write it down. Drag from a tree to the square beside it, or from the square to the tree, to join them with a short line: if the square is empty, this places the tent there too. Drag between them again to part them. From the keyboard, press L on a tree, tent or empty square and then the arrow toward its neighbor.
Links are notes for you: the puzzle is solved by the tents alone. A link that no correct matching could contain is shown as a mistake.
Hint explains the next step rather than simply making it. It reasons only from your tents, your grass, the numbers and the links, so it carries on from wherever you are, as long as none of those is wrong; if one is, it asks you to fix the highlighted mistakes first. An open square, in its words, is one still empty: neither a tent nor grass.
A tree has its tent once they are joined, and also when you can see it at a glance: the tent touches no other tree still free, or it is the only square beside the tree that is empty or holds a tent. When a step needs a pairing that takes more than a glance, the hint asks you to draw that link first.
A few ideas are worth learning by name:
These parameters are available from the ‘Custom type…’ option on the ‘Type’ menu.