Тогда вполне логично предположить, что кернел клиента и сервера переписывать не надо? Достаточно изменить интерфейс клиента? Логично предположить, также, что используется ООП и пушка представляет собой отдельный объект? А клиент сформирует необходимый пакет, основываясь на данных объекта? И сервер посчитает данные из этого пакета, т.к. ему глубоко фиолетово какая из башен выстрелила, а все остальные данные про точку выстрела, тип снаряда, его калибр и т.д. серверу известны из пакета? Зачем трогать ядра, если этот функционал, логически, не является частью ядра. Вопрос только в тонкостях имплементации изменений интерфейса и анализе геймплея