Как мне правильно построить структуру данных для игры?
У вас проблема не с SQLite а целиком со знаниями баз данных и SQL в частности.

 Можно все поместить в одну таблицу(сообщения, достижения, перки, бонусы и многое другое), тогда столбцов у меня выходит порядка 25-27
Нельзя так, это все разные сущности, которые вы захотите расширять новыми полями и что более важно - связывать их с новыми сущностями, например дать игрокам возможность групповых чатов, или например вложения в сообщения лепить или ещё бог весть что, и не сможете этого сделать после выхода вашего ПО в свет. Придется писать очень замудреные скрипты по миграции данных в т.ч. тех которые и не менялись даже. 

Пользователи это таблица Users где есть поле ID котрое получает значение при вставке записи и это значение не меняется.
Есть сообщения это таблица Messages.
где есть Autokey получающее значение при вставке записи, есть поле-индекс DateCreate с датой и временем создания сообщения, есть поле Message - текст сообщения, так же поля От кого (ссылка на Users.ID) и кому (Users.ID)

Есть ачивки, таблица Achivements:
Поле UserID (Users.ID) связь с тем кто ачивку получил
Поле даты и времени получения, 
поле идентификатора ачивки
поле описания ачивки
поле с картинкой ачивки

Бонусы, таблица Bunuses:
Поле UserID (Users.ID) связь с тем кто бонус получил
Поле даты и времени получения, 
поле идентификатора бонуса
поле описания бонуса
поле с картинкой бонуса
поле обозначающее позитивный или негативный бонус
поле даты и времени завершения действия бонуса, если NULL то бонус вечный

Таблица с перками - Perks:
Поле UserID (Users.ID) связь с тем кто бонус получил
Поле даты и времени получения, 
поле идентификатора перка (PerkID)

это все легко расширяется новыми полями и если надо обрастает новыми связями с новыми изменениями.
А если вы все в кучу кидаете, на кой вам вообще база данных? 
загоняйте все в json/xml.
Можешь почитать например это: https://habr.com/ru/post/193756/ 

В любом случае, если ты хочешь стать программистом, тебе ПРИДЕТСЯ понять, что такое "нормализованная база данных", либо забить на программирование.

Ну, просто потому, что это такие же основы, как, циклы, массивы, условные операторы, и т.п.

Не хочешь учить SQL? Не вопрос: возьми какой-нибудь Laravel и используй ORM Eloquent - может это тебе попроще будет.

Но в любом случае основы хранения данных в базе лучше-таки понять. 

А то будешь как мой нынешний тимлид говорить потом подчиненным: - Вы зачем столько лишних таблиц создаете? Они тормозят базу! 

//а там по факту таблицы были для отношений многие-ко-многим )))