[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 3123»
Модератор форума: MiniTiv2008 
Форум » Создание игр » Программирование » Программирование в среде Blitz3D (краткий курс по Blitz3D)
Программирование в среде Blitz3D
NDV89Дата: Суббота, 15.08.2009, 16:33 | Сообщение # 1
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Этот раздел форума рассчитан на тех, кто интересуется средой Blitz3D (далее - Блиц). Здесь я буду печатать свои уроки, а все желающие могут задавать вопросы и уточнять детали. Мы начнем "с нуля", с самых азов программирования , а закончим... ну не знаю, на что сил у меня хватит. Количество (да и качество) уроков будет зависеть от количества и активности читателей. Эти уроки я придумал сам, поэтому просьба не очень ругаться - опыта в написании статей у меня не очень много) Но я буду стараться объяснять всё простым доступным языком, отвечать на вопросы читателей. Вот примерное оглавление моих уроков (дай Бог мне сил всё это написать!) :

Часть первая. Введение в программирование
Глава 1. Что такое Blitz3D
Глава 2. Обзор других языков программирования
Глава 3. Общие сведения о GDI, DirectX, OpenGL

Часть вторая. Программирование в текстовом режиме
Глава 1. Структура программы
Глава 2. Учимся работать со шрифтам
Глава 3. Переменные и константы и с чем их едят
Глава 4. Ветвления
Глава 5. Циклы
Глава 6. Массивы
Глава 7. Функции

Добавлено (15.08.2009, 14:52)
---------------------------------------------
Часть третья. Программирование 2D графики.
Глава 1. Немного теории... Видеорежимы, буферы и спрайты
Глава 2. Начинаем творить
Глава 3. Отслеживание клавиатуры и мыши
Глава 4. Работаем с анимацией.
Глава 5. Добавим проверку столкновений
Глава 6. А теперь займемся звуком.
Глава 7. Подводим итоги.

Часть четвертая. Обо всём и сразу.
Глава 1. Файлы и потоки.
Глава 2. Банки памяти.
Глава 3. Видеоролики в Blitz3D
Глава 4. Работаем с системой Windows из Blitz3D
Глава 5. Структуры и коллекции.
Глава 6. Немного математики. Что такое SHL и SHR, и почему в килобайте 1024 байта.

Часть пятая. Немного 3D графики.
Глава 1. Немного теории.
Глава 2. А теперь практика.
Глава 3. Свет есть, а теней нет.
Глава 4. Ландшафты и карты высот.
Глава 5. Как создаются уровни
Глава 6. А где мы возьмем физику?
Глава 7. Что дальше?

Добавлено (15.08.2009, 15:21)
---------------------------------------------
Часть первая. Введение в программирование
Глава 1. Что такое Blitz3D

Итак, начнем. Для начала определимся, что такое Блиц. Блиц - это ИНСТРУМЕНТ. Который состоит из компилятора языка BASIC, отладчика, редактора исходных текстов и (это важно!) библиотеки стандартных функций
Разберём все по-порядку.
Компилятор - программа, которая превращает исходные тексты в исполняемые модули (ехе)
Отладчик - программа, позволяющая бороться с ошибками в программе. О нём мы еще поговорим.
Редактор - обычный текстовый редактор, который умеет "разукрашивать" исходный текст, удобная вещь, но можно пользоватся любым другим текстовым редактором, хоть блокнотом)
Библиотека стандартных функций - то, что позволяет нам писать действительно полезные программы. Сам по себе компилятор, как паровоз без вагонов - сам ездит, а груз перевести невозможно. Так и здесь. Без стандартных функций не обойтись ни одной программе.

Добавлено (15.08.2009, 15:44)
---------------------------------------------
Конечно, у Блица есть конкуренты. Это и DarckBasic, и другие продукты подобного класса (компилятор + движок). Кстати, что такое движок? Игровой движок - это графический движок + звуковой движок + сетевой движок + менеджер ресурсов + физический движок + ..... Список можно продолжать до бесконечности, всё зависит от разработчиков. Ну а что из себя представляют эти движки? Да это просто наборы (библиотеки!) функций, которые позволяет вам, не вникая в особенности устройства компьютера, выполнять какие-либо действия. Ну, например... Любой графический движок имеет команду перевода видеокарты в графический режим. Всего одну команду! Задайте параметры (разрешение, глубина цвета) и получите результат! И не нужно даже представлять себе, сколько всего интересного происходит на самом деле (а происходит действительно очень много интересных операций, но об этом не здесь и не сейчас) в момент переключения между графическими режимами или выводе картинки (спрайта) на экран. Итак, как вы поняли, библиотека стандартных функций Blitz3D это и есть игровой движок вашей игры. Той игры, что вы напишете. Вам осталось написать только логику работы игры, а о графике, звуке и прочих вещах позаботиться Блиц, точнее, его стандартные функции.

Примечание для продвинутых кодеров. В Blitz3D версии 1.хх эта библиотека статическая, т.е. все функции движка "закатывались" в екзешник, не смотря на то, используете вы их или нет. Таким образом, самая простая программа весила 1.26 Мбайт (большая часть - функции библиотеки, лежащие "мёртвым грузом"). Начиная с версии 2.00 это безобразие исправлено, теперь в экзешник попадают только используемые вами функции

Теперь уточним ещё один момент - Блиц НЕ конструктор. Поэтому, если вы привыкли работать с конструкторами, вас ждёт разочарование - в Блице всё нужно делать ручками, желательно прямыми. Голова тоже не помешает))

Добавлено (15.08.2009, 16:27)
---------------------------------------------
Глава 2. Обзор других языков программирования

Я не буду расхваливать Блиц - мне за его рекламу не платят) Я не буду о говорить о нём плохо - так как инструмент неплохой, в своём классе, разумеется. Сразу хочу сказать - ничего фантастического вы на нём не сделаете - всётаки DirectX 7 - не последнее достижение игровой индустрии, а именно на 7-й версии и основана библиотека Блица версий 1.хх. Что, разочарованы? Хм... Ну ладно, платите $10 000 за движок ААА-класса, после чего нанимайте команду профессиональных программистов ( каждому - по 1500 баксов в месяц), ибо сами вы с этим движком не разберётесь))
Идея ясна? Если вы начинающий игродел, а в вашей команде от 1 до 10 человек - Блиц именно то, что вам нужно. Скажу сразу - если у вас серьёзные планы на будущее, то не останавливайтесь на Блице, учите С++ (или С# - тоже вариант). Если вы не хотите связываться с этим серьёзно, а просто балуетесь - не учите Блиц, вам достаточно будет какого-нибудь конструктора. (проще, быстрее, и даже красивее получится, только вот знаний никаких вы не получите, и путь в серьёзный бизнес для вас будет закрыт))

Добавлено (15.08.2009, 16:33)
---------------------------------------------
Т.е. используем Блиц как средство "быстрого старта" - разобрались с азами, написали пару - тройку игрушек - и переходим на С++ (рекомендую движок OGRE).

Теперь, что касается моего личного мнения - то я любитель Ассемблера. Но, как говорится, "На Ассемблере можно написать что угодно, но жизнь коротка". Так что приходится использовать Блиц.

Сообщение отредактировал NDV89 - Суббота, 15.08.2009, 15:58
 
di_snayderДата: Суббота, 15.08.2009, 16:39 | Сообщение # 2
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Я твой постоянный читатель. Буду следить за всеми частями так скажем.

Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
NDV89Дата: Суббота, 15.08.2009, 20:15 | Сообщение # 3
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Глава 3. Общие сведения о GDI, DirectX, OpenGL

Так, теперь разберёмся как выводится графика в ОС Windows. Начнём с того, что ни одна программа не может на прямую обращаться к видеокарте (как в MS DOS), все программы используют для этих целей средства ОС. Есть в системе специальный модуль, GDI, что значит "интерфейс графических устройств", именно он отвечает за все операции с графикой, им пользуется сама винда и все программы. Но GDI универсален, а значит, медлителен. Сейчас это не так критично, но в начале 90-х, когда компы были слабее в тысячу раз (почти) написать игру под GDI было почти невозможно - тормоза жуткие. И фирмы продолжали писать игры под ДОС - там был прямой доступ к видеопамяти, а значит, и огромная скорость работы игровых программ.

Добавлено (15.08.2009, 16:59)
---------------------------------------------
Конечно, дядю Билла это не устраивало - он продвигал Окошки как мог, а для них ничего серьёзней сапёров и пасьянсов небыло. все приличные игры - под ДОСом. Но ребята быстро исправились, включив в состав 95-х окон новый модуль, называемый DirectDraw. Это библиотека функций предоставляла прямой доступ к видеопамяти из-под Винды, а значит, теперь можно было быстро отрисовывать графику и под Виндой очень быстро! ДОС был убит окончательно.

Добавлено (15.08.2009, 17:19)
---------------------------------------------
Кстати, речь идёт о 2D графике. Да, 3D игры были уже тогда ("Doom", "Doom II"), но 3D технологии не поддерживались аппаратно, вся реализация 3D-эффектов лежала на плечах программистов. Но вот в 1998 году появляются аппаратные ускорители (акселераторы) 3D-графики от фирмы 3dfx. Они поставлялись в комплекте со специальной библиотекой функций Glide, которая позволяла программистам относительно просто создавать 3D графику. Так 3D игры из редкостных шедевров превратились в индустриальный стандарт. Microsoft не сидела сложа руки, и написала свою библиотеку 3D-функций, и назвала её Direct3D. Её стали использовать, как стандарт, новые игроки рынка - фирмы nVidia и ATI. Сначала они были на втором плане, на первом месте была 3dfx со своими видяхами и библиотекой Glide. Но в 2000 году компания разорилась, как следствие, Glide "умер", передовые позиции занял Direct3D, работающий на карточках nVidia и ATI. Microsoft объеденила Direct3D с DirectDraw, добавила туда ещё несколько библиотек (о них поговорим позже) - и получился знакомый нам DirectX

Добавлено (15.08.2009, 17:31)
---------------------------------------------
DirectX является "основой" любого движка игры под Винду. Т.е. офисные приложения используют GDI, а игровые - DirectX. Что же он из себя представляет? Набор библиотек, а именно:

DirectDraw - обеспечивает прямой доступ к видеопамяти (быстрая прорисовка 2D графики)
Direct3D - рендер 3D графики на карточках nVidia и ATI
DirectPlay - набор функций для быстрого написания сетевых игр
DirectShow - набор функций для воспроизведения видеороликов
DirectSound - библиотека звуковых функций (для создания звуковых 3D - эффектов)
DirectInput - функции асинхронного ввода с клавиатуры, джойстика и других геймерских устройств (типа руля)

Как видим, весьма неплохой набор, всё что нужно для создания игр. Microsoft не зря старалась, ведь чем проще делать игры под Винду, тем их будет больше сделано, а чем их будет больше - тем популярнее будет Винда!

Блиц, напомню, использует 7-ю версию этого самого Икса.

А теперь пару слов об OpenGL. Это открытая графическая библиотека, спецификация которой разработана фирмой Silicon Graphics. В отличие от DirectX , мультиплатформена (а Икс идёт только под Виндой), имеется реализация для Окошек. Является чисто графической библиотекой, ничего другого в ней нет. Так что если задумали делать игру на её основе, ищите также звуковую библиотеку (рекомендую OpenAL), сетевой движок и т.п. Большинство игровых движков для Винды делаются всё-таки под ДиректИкс, но некоторые могут использовать и OpenGL, и DirectX (в зависимости от настроек). В Блице OpenGL не используется.

Добавлено (15.08.2009, 18:12)
---------------------------------------------
Ну вот, первые три главы написаны, первая часть окончена. Теперь я хотел бы увидеть реакцию читателей. Пока он у меня только один) Но если наберётся человек 10, которые будут читать и обсуждать сию писанину, то я продолжу. А пока что разрешите откланяться)) Всегда ваш, NDV89

Добавлено (15.08.2009, 19:36)
---------------------------------------------
Часть вторая. Программирование в текстовом режиме

Глава 1. Структура программы

Итак, начнём-с. Любая программа представляет собой набор инструкций, которые выполняются компьютером (что приводит нас к желаемому результату). Компьютер выполняет инструкции слева направо и сверху вниз, т.е. "читает" нашу программу также, как и мы) Правда, с помощью специальных операторов этот порядок можно изменить, т.е. заставить компьютер пропускать или повторять некоторые участки кода. Но обо всём по-порядку. Сначала разберёмся с терминами:

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

Инструкции в свою очередь делятся на:
декларации
операции
операторы
вызовы функций

Не будем сейчас выяснять, что это значит, я объясню это по ходу дела) А сейчас у нас другая задача - написать хоть что-то рабочее. Итак, открываем Блиц и пишем:

Print "Hello, world!"
WaitKey
End

Это наше первое приложение, оно простое, но все великие дела начинались с малого) Сохраните его (Блиц предлагает расширение .bb, соглашайтесь), затем проверьте на наличие ошибок, нажав F7. Ошибок быть не должно! Затем запускаем клавишей F5 и любуемся результатом. Потом жмём любую клавишу - прога закрывается.

Добавлено (15.08.2009, 19:54)
---------------------------------------------
Так, ну хорошо, мы запускаем эту прогу по F5 , а как быть пользователю? Ставить себе Блиц и загружать в него наш *.bb - файл. Нет, так дело не пойдет. Пользователя интересует файл ехе, и нам надо его сделать. Все просто! Меню Program => CreateExecutable. Вот и вся любовь) Выбираем папку для сохранения нашего творения и жмем Сохранить. Всё, ехе-шник готов. Его то мы и отдадим пользователям.

Пока пользователи мучаются с нашей прогой, пытаемся в ней разобратся. Итак, три строчки.

Print "Hello, world!"

здесь происходит вызов функции Print из стандартной библиотеки функций Блица. Она печатает переданные ей данные. В нашем случае передаётся текст, который и будет напечатан на экране. Текст обязательно должен быть взят в кавычки. При этом кавычки не являются частью текста и на экран выведены не будут!

Добавлено (15.08.2009, 20:04)
---------------------------------------------
WaitKey

вызов функции WaitKey из стандартной библиотеки функций. Она просто останавливает работу программы и ждет нажатия произвольной клавиши, после чего программа продолжит свою работу.

End

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

Добавлено (15.08.2009, 20:15)
---------------------------------------------
Как видим, в программах на Блице нет никакой чёткой структуры. Вы пишете то что вам нужно, там где вам нужно, и всё прекрасно работает) А теперь наберите такой вот интересный код:

Print 1 + 2
Print "1" + "2"
WaitKey
End

ну как, вы в состоянии объяснить результаты? Я жду ваших ответов здесь, когда их будет как минимум три, я продолжу уроки)

Сообщение отредактировал NDV89 - Суббота, 15.08.2009, 20:16
 
Призрачный_ГонщикДата: Суббота, 15.08.2009, 23:04 | Сообщение # 4
Рядовой
Группа: Администратор
Сообщений: 109
Награды: 1
Репутация: 7
Статус:
Скорее всего будет выведино все на экране так "1 2" или "12" после чего при нажатии любой клавиши программа завершится... Если чето не так, считайте меня идиотом в создании игр(я не обижусь) wink
 
di_snayderДата: Понедельник, 17.08.2009, 10:00 | Сообщение # 5
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Так ты на программе должен это провести... а не на угад.. smile
Впринцепи я знаю что ты не идиот.


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
Призрачный_ГонщикДата: Вторник, 18.08.2009, 21:27 | Сообщение # 6
Рядовой
Группа: Администратор
Сообщений: 109
Награды: 1
Репутация: 7
Статус:
ну сделал в программе и у меня получилось:)
3
12
 
Призрачный_ГонщикДата: Вторник, 18.08.2009, 21:57 | Сообщение # 7
Рядовой
Группа: Администратор
Сообщений: 109
Награды: 1
Репутация: 7
Статус:
Вот я прогу сделал... ток не думай что я неуч что столько плюсиков сделал... знаю что можно и без них... но с ними интересней:)

Code
Print "___" + "II" + "III" + "II" + "___" + "___" + "___" + "___" + "___" + "___" + "___" + "___"
Print "___" + "__" + "III" + "__" + "___" + "TTT" + "TTT" + "TTT" + "___" + "SSS" + "SSS" + "SSS"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "SSS" + "___" + "SSS"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "SSS" + "___" + "___"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "SSS" + "___" + "___"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "SSS" +"SSS" + "SSS"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "___" + "___" + "SSS"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "___" + "___" + "SSS"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "SSS" + "___" + "SSS"
Print "___" + "__" + "III" + "__" + "___" + "___" + "TTT" + "___" + "___" + "SSS" +"SSS" + "SSS"
Print "___" + "II" + "III" + "II" + "___" + "___" + "___" + "___" + "___" + "___" + "___" + "___"
WaitKey
End
 
di_snayderДата: Вторник, 18.08.2009, 22:46 | Сообщение # 8
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Да у меня тоже получилось:
3
12
smile


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
di_snayderДата: Среда, 19.08.2009, 16:55 | Сообщение # 9
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Code
Repeat
Text 4,4,CurrentDate() +" "+ CurrentTime()
Flip
Cls
Until KeyHit(1)
End

Ну как удивлены результатом? жду комментов:)


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
nkn-coderДата: Воскресенье, 23.08.2009, 17:32 | Сообщение # 10
лошара
Группа: Заблокированный
Сообщений: 35
Награды: 0
Репутация: 0
Статус:
Интересно но Блитц Неочень графика ДХ7 Когда уже есть (DX 10.1)

Aim Writing in C++,Delphi,HTML,PHP,PASCAL,CSS
 
di_snayderДата: Понедельник, 24.08.2009, 09:11 | Сообщение # 11
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Ну нужно же хоть что-то учить...

Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
NDV89Дата: Вторник, 25.08.2009, 21:57 | Сообщение # 12
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Итак, господа, я вернулся, чтобы продолжить свои уроки) Призрачный_Гонщик, молодец, кульная прога! di_snayder, не торпись, всему своё время... в третьей части и не такое делать будем! А сейчас я хочу узнать, [i]ПОЧЕМУ [/i]в первом случае выводится 3, а во втором - 12. Жду ответов)))
 
Призрачный_ГонщикДата: Вторник, 25.08.2009, 23:18 | Сообщение # 13
Рядовой
Группа: Администратор
Сообщений: 109
Награды: 1
Репутация: 7
Статус:
Потомучто в первом случае скорее всего происходит сложение чисел, а во втором сложение данных которые будут выводиться, тоесть если к значению 1 добавить значение 2 то будит выводиться 12...
 
NDV89Дата: Вторник, 25.08.2009, 23:29 | Сообщение # 14
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Да, первая половина ответа правильна - в первом случае происходит сложение чисел 1 и 2, результат выводится на экран. А во второй строке происходит сложение СТРОК "1" и "2" и получаем СТРОКУ "12", которая выводится на экран. А выражение
Quote (Призрачный_Гонщик)
сложение данных

не совсем точно) ведь и числа, и строки - это данные!
 
Призрачный_ГонщикДата: Вторник, 25.08.2009, 23:32 | Сообщение # 15
Рядовой
Группа: Администратор
Сообщений: 109
Награды: 1
Репутация: 7
Статус:
Понятно!!! Спасибо за ответ...
 
Форум » Создание игр » Программирование » Программирование в среде Blitz3D (краткий курс по Blitz3D)
Страница 1 из 3123»
Поиск: