игра должна быть cross-over, ну или хотяб Win-Lin
(теоретиический вброс, ибо на практике лично не проверял), кросплатформенность обеспечивают графические фреймворки или игровые движки.
Вот собственно прошу расписать, с чего начать.
я начинал с инициализации окна, вывод примитивов (сначала прямоугольник в 2Д(4 вершины, и натянутая на них текстура), потом сфера в 3Д(тут уже работа со множеством вершин)), потом научится обрабатывать user input с мыши, клавы. ну и осталось дело за игровой логикой, как более менее структура кода была ясна, начал делать load/save через boost property tree(однако я не уверен что мой путь оптимальный). наверно сильно бывалые скажут, что начать прежде всего нужно с архитектуры: иерархии наследования, паттернови т.д. я когда начинал так не делал ибо не мог на тот момент(да и сейчас врядтли шибко могу). как вариант, многие графические движки имеют уже готовые тематические примеры (рендер рельефа, рендер воды, рендер GUI и т.д.), как всегда имеет смысл поковырять их(кстати, на этом этапе вы как раз проверите кросплатформенность на практике, компилируя под разные целевые платформы).
Писать ли своё движок,
очень не рекомендую, по крайней мере писать свой движок имеет смысл после опробирования нескольких существующих движков по причине если они не удовлетворяют некоторым требованиям. лучше обратиться к известным ogre и т.д.