Сводка:
Могу ли я запрограммировать "толстый клиент" в C без переосмысления колеса, или я должен просто укусить bullet и использовать некоторую библиотеку или SDK? Я умеренный программист С, и я не боятся работать с указателями, данные структуры, места памяти и т.д., если это даст мне контроль, который мне нужен сделать отличную игру "толстый клиент". Тем не менее, я думаю об отмене языки высокого уровня и рамки для ради власти и контроля, а не простота использования.
Мне интересно играть в 2D-боевую/платформерную игру как побочный проект. Я в первую очередь программист на стороне сервера Linux с опытом работы на Python, Ruby и PHP. Я знаю, что на некоторых из этих языков есть отличные рамки, такие как PyGame. Я также знаю об успехах, которые люди имели с такими вещами, как Air и .NET... но у меня есть некоторые проблемы:
- Производительность. Языки сценариев, как известно, медленны. Если я делаю игру в режиме реального времени, я хочу, чтобы она была максимально быстрой.
- Огромные двоичные файлы. Использование фреймворков, таких как .NET или языки сценариев, такие как Ruby, часто приводят к большим CLR или библиотекам, которые вам в противном случае не нужны. Игра, которую я хочу сделать, будет небольшой и простой - я не хочу, чтобы ее CLR была больше, чем сама игра!
- Дополнительные материалы. Честно говоря, мне просто не нравится идея унаследовать некоторый багаж большой библиотечной библиотеки, если я могу лучше обвести голову вокруг своего собственного кода.
Я задаю этот вопрос, потому что знаю, что я очень восприимчив к синдрому Inv Invented Here Syndrome. Я всегда хочу запрограммировать его сам, и я уверен, что он тратит много времени. Однако это работает для меня очень часто - например, вместо использования Rails (очень большая структура веб-проекта с ORM и инструментарий GUI, испеченный в), я использовал массив меньших инструментов Ruby, таких как rack и sequel, которые прекрасно сочетаются.
Итак, я обращаюсь к вам, ТАК эксперты. Я наивна? Вот как я это вижу:
- Использовать C
- против
- Вероятно, мне придется программировать ненависть.
- Высокий риск переосмысления колес.
- Высокий риск того, что он будет так долго, что я потеряю интерес
- Pros
- Tried and true - большинство игр A-списка выполняются в C (это все еще верно сегодня?)
- Высокий уровень контроля над управлением памятью, скоростью, управлением активами и т.д., которым я доверяю себе, чтобы научиться обрабатывать
- Без трещин
- против
- Использовать фреймворк или SDK
- против
- Риск негабаритных поставок
- В зависимости от авторов оригинальной библиотеки для всех аспектов разработки игры - что, если нет функции, которую я хочу? Мне придется запрограммировать его самостоятельно, что неплохо, но частично поражает цель использования высокоуровневой структуры в первую очередь.
- Высокий риск проблем с производительностью.
- Pros
- МНОГО ускорение разработки
- Может быть проще поддерживать
- Не тратится время на повторное использование общих парадигм
- против
Что еще я могу добавить в этот список? Это чистое решение, или кто-то может заключить сделку для меня? Предложения по бронированию приветствуются.