LINUX.ORG.RU

При помощи чего программируется графика в простеньких играх?

 , ,


0

3

Привет=) Вопрос очень нубский. Решил попытаться сделать небольшую игру, аля пин-понг или даже проще (GUI, не веб само собой). Возник вопрос, который вроде и разрешился гугливанием, но все же я и тут спрошу=Р

Программирование простеньких 2D-игр (тот же пин-понг, или даже крестики-нолики какие-нибудь) осуществляется средствами чего? Т.е. какой библиотеки и тп?

В данный момент я понимаю это так: если что-то уж очень простое - юзаем канвас, его должно хватить для пин-понга и еже с ним. Если что-то более сложное или тем более трехмерное - изучаем openGL. Все верно?

Опыта в программирование игр с графикой почти нет. Весь он (опыт) сводится к змейки и крестикам-ноликам на канвасе.

СДЛ умеет рисование. Можно ещё в кьютях.

gavlig ★★★
()

юзаем канвас

EaselJS
Phaser
pixi.js
Three.js
Turbulenz
lycheeJS
melonJS
Quintus
Cocos2d-X
Crafty
LimeJS
enchant.js
GC DevKit
Panda.js
voxel.js
Kiwi.js

В порядке попурярности, выбирай какой нравится или пили свой или проприетарщину какую покупай если очень надо.

Goury ★★★★★
()

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

O tempora o mores! А ведь когда-то для этого было достаточно понимания математики и знания ассемблера.

https://youtu.be/-ga41edXw3A
https://youtu.be/Lij1WjjjNw8?list=PL7470F7A84233C22F

Начни с SDL → https://youtu.be/E4RqHtEAAds?list=PL3A4F71D0B9994FC1

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)

У тебя каша в голове, если в одном посте у тебя «не веб» и канвас. Или что ты имел в виду под канвасом?

Чтобы посмотреть на чём делаются игры, посмотри их код или хотя бы зависимости.

Для простых игр можно использовать либо UI фреймворки (Qt, gtk, wx), где есть разнообразные средства рисования, либо более низкоуровневые графические библиотеки (SDL, SFML), которые как правило оперируют выводом спрайтов. И те и другие скорее всего под капотом используют OpenGL, потому что софтовый рендеринг сейчас не имеет смысла.

Для 3D обычно используются высокоуровневые движки (Ogre3d, irrlicht, openscenegraph), хотя при желании можно писать и на голом OpenGL.

slovazap ★★★★★
()
Ответ на: комментарий от beastie

O tempora o mores! Обучалка по программированию на ютубе вместо текста! :) Кстати, ТС так и не сказал, на каком языке писать собрался.

gavlig ★★★
()

да хоть на чем, не один ли хрен? можно рисовать через иксы (xlib или xcb), можно SDL(+opengl, если хочется), можно gtk/qt/cairo/...

выбирай что больше по вкусу. можно даже в xterm псевдографикой, и не только псевдо.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от Goury

SDL с каких пор научился в канвас?

man SDL_Surface

У ТС было ясное требование:

не веб

А ты что припёр?
Или для тебя канвас только в пределах HTML5 существует?

EXL ★★★★★
()
Ответ на: комментарий от slovazap

У тебя каша в голове, если в одном посте у тебя «не веб» и канвас. Или что ты имел в виду под канвасом?

Не уверен, что у ТСа. «canvas» был/есть как минимум в Visual Basic 6/Delphi и, вероятно, во многих других средах/тулкитах (где-то аналогичное средство называется иначе).

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)

юзаем канвас

Это в смысле HTML5 canvas? Ты для веба собрался программировать?

Есть много всяких решений. Есть популярная SDL на Си, LÖVE на Lua 5.1, pygame на Python 2 и 3.

proud_anon ★★★★★
()

Для симуляции физических законов используй движок Box2D.

Deathstalker ★★★★★
()

ЯП то какой ? OpenGL самое универсальное, но я для Python pygame или kivy использовал. (Для второго есть пример понга у них в доках)

да, kivy умеет в canvas

Dred ★★★★★
()
Последнее исправление: Dred (всего исправлений: 1)
Ответ на: комментарий от beastie

Пользуясь случаем спрошу про SDL+opengl, так и не нашел ответ на вопрос касаемый экрана, запущенные приложения мешают уйти монитору в режим энергосбережения спустя энное время. Заметил, когда из кода убираешь эвенты мыши то всё нормально, монитор уходит в спячку. Один цикл, ничего необычного, пробовал чужие наработки, тоже самое. Sdl 1.2.15 старенькая наверное?

Frost ★★★
()
Ответ на: комментарий от EXL

man html canvas yourself

не веб

Я крайне сомневаюсь в том, что ТС знает что такое веб и что такое не веб и тем более что он знает что ему нужно.

А я припёр что посмотреть про канвас.
Не понравится — есть не заставляю.

Goury ★★★★★
()
Ответ на: комментарий от MKuznetsov

личное.
Скайп всё, используй почту.
goury@slayers.ru

Goury ★★★★★
()
Ответ на: комментарий от x4DA

ЯП не указан, а на нем хоть в Си можно писать, но да, конечно оверкилл, никто не спорит

Dred ★★★★★
()
Ответ на: комментарий от xaizek

Не уверен, что у ТСа

Не уверен - не говори.

«canvas» был/есть как минимум в Visual Basic 6/Delphi и, вероятно, во многих других средах/тулкитах (где-то аналогичное средство называется иначе)

«canvas» вообще где угодно мог быть потому что есть такое слово. Но сейчас под этим термином подразумевается исключительно HTML5 canvas.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Но сейчас под этим термином подразумевается исключительно HTML5 canvas.

Нет, я и ряд других почему-то сразу поняли о чём ТС ведёт речь. Я этот HTML5 canvas в глаза не видел, только заголовки о нём читал и думать в эту сторону буду в последнюю очередь. Тем более явно написано «не веб», поэтому утверждение о каше в адрес ТС считаю необоснованным.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)

Проще всего с помощью Qt (класс QPainter или язык QML) либо какой-нибудь SFML.

В данный момент я понимаю это так: если что-то уж очень простое - юзаем канвас, его должно хватить для пин-понга и еже с ним. Если что-то более сложное или тем более трехмерное - изучаем openGL. Все верно?

Да, но вместо канваса может быть QPainter, Flash, QML, SVG в случае HTML5.

quiet_readonly ★★★★
()
Ответ на: комментарий от Goury

А я припёр что посмотреть про канвас.

Ты припёр какое-то веб-говно, которое ТС не просил. То, что в веб-говне что-то там назвали канвасом, не означает что канвас существует только в пределах HTML5.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от slovazap

ТС ясно дал понять, что у него

не веб

Проблемы тех, кто не вылазит из веб-мирка, и не знает, что канвас бывает не только в HTML5, никого не волнуют.

Но сейчас под этим термином подразумевается исключительно HTML5 canvas.

Только убогими веб-макаками в их убогом веб-мирке такое «исключение» может быть. И то если веб-макака настолько ограничена, что дальше веба ничего не видит.

EXL ★★★★★
()
Ответ на: комментарий от slovazap

У тебя каша в голове, если в одном посте у тебя «не веб» и канвас.

В Qt есть свой Canvas. В GTK+ есть Canvas. Ты будешь ржать, но даже в win32 есть Canvas.

anonymous
()
Ответ на: комментарий от x4DA

opengl для спрайтовой графики это оверкил

Считать на cpu то, с чем gpu справится это оверкил.

anonymous
()
Ответ на: комментарий от slovazap

Но сейчас под этим термином подразумевается исключительно HTML5 canvas.

Ололошки. Ты совсем тупенький, да? Qt вдруг куда-то исчез, GTK+ больше нет, под венду уже никто не пишет?

anonymous
()

Спасибо за большое количество отзывов.

Но что-то я еще больше запутался на самом деле, особенно с первым сообщений с крупным перечнем всякого..%)

Про ЯП, прошу прощения, что не указал. Но не столь было важно. Интересовало вообще, что используется для таких целей. Поэкспериментировать хотел сперва на fpc (lazarus).

«Не веб» - значит, никаких хтмл, php и прочих яваскриптов. Многие вроде поняли. Про канвас тоже многие поняли верно: никакого ХТМЛ5, тот самый канвас из дельф, лазарусов и прочего, простой холст с примитивными фигурками и еже с ними, без особых рюшечек.

Может кто-нибудь сумеет разъяснить или же дать ссылку на русско-понятное разъяснение разницы между всеми этими библиотеками? В чем на практике(!) различие этого SDL от OpenGL,например? Особо смущают сообщения, где упоминалось «SDL+openGL», в чем суть связки такой? Где-то в другом топике упоминалось, что одно управляет непосредственно рисованием (openGL, если не ошибаюсь), второе реакцией на события или что-то в этом роде..

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

Leonius
() автор топика

Твой выбор SFML. Не надо заморачиваться сильно с низким уровнем (с которым тебе придется заморачиваться с чистым OpenGL, xcb, Xlib).
+Кроссплатформа из коробки.

opengl для спрайтовой графики это оверкил

Вот таких людей не слушай. Говорю как GameDeveloper со стажем.

Если хочется поглубже копаться с OpenGL - тогда SDL2.

RevenantX ★★★★
()

например python + tkinter либо pygame. чтобы набросать поостенькую игру – вполне подходит

saibogo ★★★★
()
Ответ на: комментарий от Leonius

Про ЯП, прошу прощения, что не указал. Но не столь было важно. Интересовало вообще, что используется для таких целей.

С или С++, особенно с учётом SDL(2) + OpenGL.

O02eg ★★★★★
()

Программирование простеньких 2D-игр (тот же пин-понг, или даже крестики-нолики какие-нибудь) осуществляется средствами чего?

Я за SDL2. Тут знания OpenGL по желанию...

Если что-то более сложное или тем более трехмерное - изучаем OpenGL. Все верно?

Я за нормальный движок типо unreal, но знания OpenGL будут нужны

FIL ★★★★
()
Ответ на: комментарий от Deleted

Видимо, в процессе дорабатывания. У них есть 2d примитивы, как минимум.

O02eg ★★★★★
()

В Blender Game Engine можно несложную 3D игрушку замутить!

Buho79
()
Ответ на: комментарий от Deleted

Почему они называют себя игровым движком, хотя по сути являются аналогом SDL?

Ржавый аналог sdl это glutin. Пистон это таки кучка более высокоуровневых библиотек. Оно, вроде, поверх и glutin, и sdl, и glfw может работать.

ozkriff
()
Ответ на: комментарий от O02eg

Не знаю, автор решил за кадром оставить :) А так, где-то непосредственно под SDL, думаю. На первой картинке присутствовала Xlib.

al_exquemelin ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.