Что мне нужно, чтобы написать небольшую игру в Linux?

Я хочу сделать простую игру: 2d, однопользовательскую, без тонны анимаций и спецэффектов. Мне не интересны готовые к использованию игровые движки, я хочу научиться писать какой-то код на совершенно универсальном языке. Я использую Linux (AMD64) и ищу что-то легкое с красивой библиотекой для игр. Я не хочу смешивать несколько языков, большинство из них на самом деле достаточно быстро для моих нужд. Кросс-платформа была бы преимуществом, однако мне нужна хорошая поддержка Linux.

Я рассматриваю несколько решений.

рубин
+ Язык выглядит очень красиво.
+ Я собираюсь узнать Руби.
- Боюсь, у меня могут быть проблемы с дополнительными библиотеками.
- Этот поток об игровых библиотеках для Ruby может быть длиннее.

SDL + C
+ Используется для игр.
+ Очень легко настроить.
+ Есть много дополнительных библиотек.
+ Это кросс-платформенный.
- Решение довольно низкое.
- Язык иногда довольно трудно читать.

QT + С++
+ Очень легко настроить.
+ Стандартные библиотеки QT поддерживают все, что мне может понадобиться.
+ Это кросс-платформенный.
+ Документация хорошая.
- Компиляция медленная.
- Язык выглядит ужасно.
- Размер стандартных библиотек QT слишком велик, чтобы понять.

Среда веб-браузера
+ Я собираюсь узнать больше об этой среде.
+ Он несколько используется для игр.
+ Это совершенно кросс-платформенный.
- Было бы слишком экспериментально.

Java
+ Используется для игр.
+ Стандартные библиотеки Java поддерживают все, что мне может понадобиться.
+ Это кросс-платформенный.
- Трудно настроить.
- Размер стандартных библиотек Java слишком велик, чтобы понять.
- Исходный код на Java может выглядеть лучше.
- Я думаю, что не хочу изучать Java.

Google Go
+ Я собираюсь изучить Google Go.
- Существует большая проблема с библиотеками.
- Решение будет довольно низким.

Python
+ Похоже, некоторые люди делают игры в Python, согласно этой теме.
+ Похоже, что, вероятно, больше библиотек, чем для Ruby.
- Язык Ruby выглядит лучше.
- Я думаю, что я не хочу изучать Python.

С++ + что-то еще
+ Используется для игр.
+ Это, вероятно, кросс-платформенный.
+ Существует много библиотек.
- Мне не нужны расширения С++ над C.
- Компиляция может быть медленной, есть быстрые компиляторы для C, а не для С++.

Haskell
+ Я собираюсь узнать Хаскелл.
- Многие вещи о программировании компьютерных игр выглядят слишком насущными.
- Похоже, у меня могут быть проблемы с библиотеками.
- Компиляция (GHC) выглядит медленнее.

Возможно, что-то еще нужно рассмотреть. Есть ли у кого-нибудь опыт в создании небольших игр для Linux в решениях, не относящихся к основным? У кого-нибудь есть совет для меня?

Ответы

Ответ 1

Это может быть не совсем то, что вы искали, но я бы сказал, что это то, что вам нужно больше всего: "прекратите планирование, начните строить".

Вы пытаетесь сравнить A и B с C на D, когда вы, по-видимому, не знаете ни одного из них, а также хотите.

Начните с выбора одного из них, который вы хотите знать (скажем, Ruby, так как он находится в начале вашего списка) и начинайте пытаться делать то, что вы хотите. Вы частично преуспеете и частично потерпите неудачу, и оба этих результата будут способствовать как желанию программирования, так и вы либо закончите свою игру, либо приобретете достаточно знаний, чтобы вы могли сделать образованный выбор о переходе на другую платформу.

Ответ 2

Некоторые рекомендации Python (я серьезно думаю, что вы не пожалеете об этом как о выборе языка, учитывая ваши потребности):

Pygame было бы потрясающе для написания небольшой игры (особенно для 2D). Хорошая (основанная на сообществе) поддержка, документация, примеры, кросс-платформенность бесплатно...

Если вы хотите перейти на 3D Ogre3D, возможно, стоит посмотреть.

Ответ 3

Python + PyGame.

Ответ 4

Ok. C в целом (Visual С#, С++, C, Object C и т.д.) Имеет много преимуществ. Это быстро, и я имею в виду быстро. Однако для разработки чего-то простого требуется некоторое время. Java - это крест между C (трудно учиться и занимать некоторое время, чтобы что-то развивать) и python (легкий и мощный). На мой взгляд, Python - это то, чему вы должны научиться. Легко учиться. Это мощно. Это легкий вес. Это кросс-платформенная совместимость. Он гибкий. У него так много библиотек, вам не должно быть проблем с поиском нужного инструмента для работы. Это мое мнение.

Ответ 5

существуют быстрые компиляторы для C, а не для С++

Это не совсем правильно. Скорее, есть особенности С++, которые делают для медленной компиляции. Напишите c-like С++, и вы получите такую ​​же быструю компиляцию, как если бы вы написали простой c в первую очередь. Это одно из преимуществ С++.

Не то, чтобы действительно рекомендовать это, и серьезные люди С++ будут вздрагивать, если вы это сделаете.

Ответ 6

Работа в браузере с Javascript и HTML5 на самом деле не является экспериментальной! Поскольку элемент canvas был введен, вы можете использовать его, чтобы просто врисовать в браузере. Игровой цикл может быть реализован таймерами Javascript.

С Javascript и HTML5 вы можете создавать кросс-платформенные игры без каких-либо фреймворков (хотя вы можете использовать jQuery и т.п. для удобства).

О элементе canvas:

http://diveintohtml5.ep.io/canvas.html#divingin

Ответ 7

Я думаю, что Java лучше всего подходит для создания простых программ, потому что она проста в освоении и имеет большую поддержку. Eclipse - хорошая программа для компиляции и написания Java-кода. Мне не нравятся C++ или C, Java очень хорош, потому что он может работать в любой операционной системе и может создавать очень сложные игры, такие как Minecraft или простые, как Pac-Man.

Ответ 8

Я бы использовал Python и pygame. Python является мощным и относительно легко учится. Там много потрясающих ресурсов, и он очень универсален. Я бы предложил модуль pygame для графики. pygame.org имеет очень тщательную документацию.

Ответ 9

Есть так много игр, которые выглядят и чувствуют так много разных способов, и так много способов написать их там. Я думаю, что невозможно понять, что вы имеете в виду, без подробного объяснения игры.

Я думаю, что лучшим подходом было бы предположить, что вы хотите (вообще говоря) сделать игру, как некоторые из ваших любимых игр. Если это так, узнайте, что было использовано для создания этих игр и использовали те же инструменты.