LG.BALUKATION's Weblog

Ничего, это тоже кое-что… А при желании из него можно сделать что угодно

T3DGameR1

Posted by LG.BALUKATION на 2010/04/05

Как известно (а может и не известно некоторым — чтож, значит палюсь), lgb — существо ленивое. Например, я очень редко изучаю примеры… Ну т. е. мне как-то более важным видится понять суть/механизм, а не запомнить конкретную реализацию. Отсюда идёт нелюбовь к той части технической литературы, где даётся слишком уж подробный разбор каких-то надуманных примеров (кейворды «разбор» и «надуманных» — потому как скажем читать книжку, где в качестве примера были настоящие исходники UNIX System V, GNU Make и некоторый другой реально используемый код, мне было весьма интересно). К счастью, большая часть действительно полезной технической литературы этим делом не шибко увлекается.

Однажды, ещё в студенчестве, мне в руки не на долго попала книжка Андре Ламота о программировании игр (нууу, вообще это классика GameDev’а если кто не знал). Я тогда просто одолжил её почитать, но это была вторая книга из серии, а я человек последовательный и люблю делать всё по-порядку — так что просто удостоверился, что книга хорошая и решил однажды прочесть. Потом я даже купил первую часть, прочёл, а вот с месяц назад вспомнил о продолжении и решил взять пока тираж не кончился (и так уже не везде есть).

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

Итак, скажу сразу — книжка старая. Даже в России она продаётся уже наверное лет пять, а вообще-то она раза в два/три старше. Все примеры (особенно те главы, что описывают переплетение игровых движов и конкретной платформы) используют Win32 API и DirectX7 (Draw/Input/Sound/Music). Именно по-этому я при чтении бегло листал странички примеров — Windows я уже не пользовал, да и смысла познавать устаревший DX7 особо не было.

Сейчас вот решил мож поценить и портануть чего… Начал с первого же примера — упрощённой вариации Арканоида. С Windows и DirectX у меня до сих пор туго, зато одно время баловался всякими кроссплатформенностями в лице OpenGL и Simple DirectMedia Layer (SDL). OpenGL в упрощённом Арканоиде нафиг не нужен, так что сделал всё средствами SDL.

Попутно выяснилось, что примеры написаны на старом варианте C++ (всякие iostream.h и т. п.), при этом спроектированы в стиле «обычного» Си и благ С++ не используют (лично я заметил только значение по-умолчанию для параметра функции и то оно ХЗ зачем было, ибо на тот случай стояла глобальная переменная). Моя вариация близка к оригиналу (т. к. это всёж порт, а не перепись) и использует обычный Си.

Отсутствие «плюсовых» штук в примерах меня заметно огорчило — посмотрев остальные (а я портанул на пробу только первый), я вот уже и не знаю, стоит-ли портировать остальные? Ясное дело, что главы про Win32 API и DirectX7 вообще не интересны — это всё и так можно прекрасно (ну или не так уж прекрасно… не пробовал, а DX вообще не знаю) собрать под Windows, а к играм оно имеет не много отношения, последующие же главы большей частью тоже показывают мало актуальную инфу — кто сейчас возьмётся проектировать на чистом Си, да со странными ограничениями вроде той же палитры и фиксированного разрешения экрана/соотношения сторон. Большей частью эти вещи уже в прошлом, ныне правят абстракция и полиморфизм (ёмаё, даже на весьма стрёмные телефоны уже пишут по-другому!).

Зато в очередной раз порадовал SDL ;-) Он прост, понятен и компактнее, чем DirectX — тут меньше плодения сомнительных сущностей, а значит понятнее код и ошибку в нём допустить сложнее. Кстати не так давно видел доки по SFML (Simple and Fast Multimedia Library) — весьма любопытная штука должна быть, сразу включает в себя те сторонние фичи, которые и так обычно юзают вместе с SDL… Но эт на будущее всё, пока же я пребываю в чём-то вроде смеси «растерянности» от целесообразности продолжать, «довольства» от сделанного и «огорчения» от того, что собирался сделать.

ЗЫ: сорсы наверное не буду выкладывать? Всё равно их интереснее смотреть с книгой и они не мои.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s