Текущий архив: 2003.09.15;
Скачать: CL | DM;
Вниз
Пошаговое создание платформенной стрелялки. Найти похожие ветки
← →
Skyslider (2002-08-13 18:54) [0]Господа программеры :) Я думаю было бы интересно рассмотреть создание игры с нуля. Это был бы полезный тутор как для только начинающих так и для тех кто уже начал. Предлагаю обсудить следующие вопросы, ориентируясь на то что это простая стрелялка справа налево, похожая на др.Марио. Ну может сложнее, вашими силами.
1. Подборка программ и библиотек для создания игры
2. Создание уровней, объектов (возможно Редактор)
3. Хранение данных
4. Поведение противника (АИ)
5. Графика (2D,3D) создание и управление
6. Геймплей (Интерес игры)
7. Баланс
8. Анимация
9. То что пропутил выше :)
Если у кого есть идеи или советы по вышеизложенным вопросам,
пишите. Неплохо подкреплять свои идеи демонстрационным кодом.
Чтобы можно было сразу испытать и поучиться.
← →
Ev_genus © (2002-08-13 19:53) [1]Я бы начал в другом порядке.
6 7 4 2 3 1 5 8
Единственный способ реально помочь новичку - написать статью. Особенно актуальными считаю пункты 6 7 и 4. На остальные инфы навалом. Проблема в том, что авторы, желающие помочь, поступают также как и начинающие - идут по пути найменьшего сопротивления. Начинают описывать простые вещи. Это конечно хорошо, что многие проявляют инициативу. Но! Когда, обученный подобными доками, человек начинает писать игру, то дойдя до пункта 4 (6 7), он входит в ступор. И помочь ему некому. Приходится брать непонятные статьи по нейронным сетям, ориентированные больше на экономику чем на игры. А хочется то спросить соратников, братьев по оружию.
Так я к тому что давайте начнём с AI. Кто за, прошу задать вопрос для завязки обсуждения. Какой именно аспект вас интересует (укажите хотя бы жанр игры)?
← →
Абакумыч © (2002-08-13 22:05) [2]Сначала надо попроще. 2d-action с использованием Opengl
← →
the-best-officeman © (2002-08-13 23:01) [3]А может просто 2D танчики рассмотрим =))
← →
skyslider (2002-08-14 03:41) [4]Давайте рассмотрим создание уровня, как описать различные объекты и в каком виде их хранить.
А на основе советов сделаем .chm файл и выложим на gamedev.ru
для помощи начинающим, это будет лучше чем статья :)
← →
NDR (2002-08-14 09:21) [5]Ну кто начнёт первым?!
У меня мало опыта. т.е. вообще почти нет. когдато делал презентации под OpenGL. но движки под игрушки не писал!
Окей! я уже жду эту статью =))
← →
NDR (2002-08-14 09:22) [6]Ну кто начнёт первым?!
У меня мало опыта. т.е. вообще почти нет. когдато делал презентации под OpenGL. но движки под игрушки не писал!
Окей! я уже жду эту статью =))
← →
Ketmar © (2002-08-14 12:35) [7]2NDR:
а самому начать, опосля и поделиться - неа? :-)
Satanas Nobiscum!
14-IX-XXXVII A.S.
← →
Владимир Васильев © (2002-08-15 12:31) [8]C нуля - это можно!
Предлагайте игровую идею.
← →
Карлсон © (2002-08-15 12:39) [9]вот вам идея, избитая конечно, но все же ;)
космический корабль-разведчик терпит крушение на неизвестной планете.
в живых только наш герой, предлагаю еще сделать выбор, будет это мужчина или женщина, так кажись прикольней будет.
после краткого интро начинается первый уровень.
у нас есть самое примитивное оружие - электродубинка и гипнотизатор.
планета населена роботами и иногда встречаются живые формы жизни.
чтобы пополнить хелсы, нужно загипнотизировать какое-нить живое существо и съесть его.
роботы естессно умирают от ударов электродубинки.
если вам понравилось, могу дальше написать %)
← →
Владимир Васильев © (2002-08-15 13:08) [10]Хорошо - есть несколько замечаний - они определяются желанием сделать учебный проект в обозримые сроки ( скажем за месяц ).
1. Игра должна по-возможности использовать легко доступную графику - желательно извлечённую из других игр или полученнную из 3D моделей (для 2D игры ) , либо готовые доступные 3D модели ( для 3D игры)
2. Даже такой графики не должно быть много
3. Те же замечания для звукового оформления.
4. Жанр игры?
Наиболее широкий выбор 3D моделей в инете и на СD - это парусники, машины, роботы и космические корабли.
A 2D спрайтов - рипы с игровых приставок.
Желательно скорректировать сюжет под доступную графику.
← →
Карлсон © (2002-08-15 13:31) [11]ИМХО многие спрайты можно позаимствовать из Дюк нюкем 2Д.
Такая игрушка есть на многих сборниках игр.
там и роботы и оружие :)
← →
Владимир Васильев © (2002-08-15 13:42) [12]они, мягко говоря, не очень красивые
Я предлагаю подумать над одним из 3 вариантов:
1. Война магов - спрайты из WC2, поединки в стиле realtime MTG или Перумова "Гибель Богов " и ....- заклинание - контрзаклинание - и т.д.
2. Войны роботов - что- то типа первого мехварриора в 2 - 2.5 проекции или ограниченной 3D - как в WC3 .
3. Ремейк "Пиратов" в ограниченной 3D.
← →
NDR (2002-08-15 13:57) [13]Поддерживаю вариант1 или вариант2.
может получится клёво
← →
Skyslider (2002-08-15 14:14) [14]Да, серъезный подход :) А может сделаем танчики ... только с кучей наворотов типа бонусов и разных врагов, авторское оформление могу взять на себя. Работаю с 3DsMAX и Photoshop...
← →
Skyslider (2002-08-15 14:15) [15]Насчнем поэтапно, кто может предложить план разработки ?
← →
Карлсон © (2002-08-15 14:15) [16]мне кажется, что 2.5 это будет немного сложновато для начала.
лучше все же обойтись 2Д.
нужно еще разобраться, какой будет вид.
сбоку или сверху.
в принципе можно и то и другое, все зависит от выбора спрайтов.
← →
Skyslider (2002-08-15 17:38) [17]Всем привет, давайте будем вешать больше конкретики, например примем игру "Танчики".
МИКРО ДИЗ-ДОК.
Тип:Аркадная игра
Краткое описание
Цель игрока передвигаясь по карте защитить свою базу и уничтожить базы противника которых может быть несколько. Для более успешного прохождения необходимо собирать "бонусы". После уничтожения противника происходит переход на новый уровень.
Описание объектов
Своя база: место где появляется танк игрока,
после уничтожения у игрока теряются все жизни и возможность набирать новые, хотя танк не уничтожается и игрок может играть
до первой смерти
Базы противников: места где рождаются
новые танки врага, пока они не уничтожены, танки будут появлятся постоянно с определенной переодичностью.
Свой Танк: Главная и единственная боевая единица под управлением игрока
Вражеский Танк: Боевая единица противника, пытается
уничтожить базу игрока и танк игрока
Препятствия:
Пустыня - Скорость движения минус один
Вода - Невозможно проехать, пули пролетают
Кирпичная стена - Невозможно проехать, разбивается одним выстрелом
Бетонная стена - Невозможно проехать, нерушима без бонусов
Яма - При попытке проехать игрок проваливается
Зелень - На восемдесят процентов скрывает танк, скорость движения минус один
Земля - стандартное поле для перемещения, скорость обычная
Бонусы:
Сердце - плюс одна жизнь
Звезда - Скорость выстрелов плюс один
Турбина - Скорость перемещения плюс один
Щит - защита танка от всех повреждений на определенное время
Граната - все танки взрываются
Каждый объект размещается на одной ячейке.
РАССМАТРИВАЕМЫЕ ВОПРОСЫ:
1.создание и хранение карты
Как лучше это написать,
Какой формат оптимальней для хранения,
Где хранить уровни например для демоверсии
чтобы люди своих не дописывали.
И свой исходник для обсуждения и улучшения,
если будет что улучшать
2.Редактор уровней
Визуальное редактирование карт
Сохранение в нужный формат
И свой исходник для обсуждения и улучшения,
если будет что улучшать
3. Вывод графики
Подгрузка тайлов
Delphix и еже с ним
свой исходник
4. Поведение объектов
Обработка выстрелов
Обработка столкновений
Перемещение по карте (Плавное)
Свой исходник
5. AI противника
Поведение вражеского юнита
Реакция на события
Свой алгоритм
6. Геймплей
Новые идеи по бонусам
Новые идеи по врагам
Дополнения к игре
Дополняйте :о)
← →
Карлсон © (2002-08-15 17:48) [18]да да да....
было такое....
еще на Dandy...
только вот не помню, как гама называлась.
там еще лед был кажись.
зачем танчики?
это скучно!
нужно что-нить динамичное!
почему бы например не сделать гонки на истребителях?
типа летит игрок по трассе, вид сверху, ему нужно поворачивать, уклоняться там от ракет или еще чего.
мне так кажется...
← →
_Alex_ © (2002-08-16 01:08) [19]Привет Всем!
2Skyslider
Да у тебя практически все готово!
Оставить все это только написать и запустить :)
1.Я думаю обыкновенного массива будет достаточно, затем его BlockWrite в файл, и готов тебе уровень. А зачем демоверсия? Так если кто-то хочет свой уровень сделать, наоборот вместе с игрой нужно бы и редактор карт прикреплять.
2.Если спрайты уже есть, то редактор в принципе состоит из присвоения номера(символа) ячейке, и отображением рисунка.
3.Вывод спрайта(спрайтов) на экран.
4.поведение объектов думаю должно определятся их координатами.
Так что чем детальнее будет карта тем лучше (реальнее) это будет
определяться.
5.ИМХО самая последняя стадия, когда ВСЕ готово.
5.1 Определить куда смотрит вражеский танк.
Если в зоне его видимости (по верт и гориз) есть наш танк, найти путь к нему. Ехать.
5.2 Если враг определил что по нему стреляют, он наверное будет стрелять в ту сторону откуда стреляют.
6.Если сделать врага слишком сильным. Запаришся его убивать.И бросиш играться. Если слабым. Пройдешь уровней 5. И снова бросиш играться. Не знаю.
Каждые 3-4 уровня нужно что-то менять. Не давать игроку уставать.
Пусть это будут другие спрайты, звуки(кстати будет звук?), бонусы(обязательно).Видели какое количество самых разнообразных бонусов
в Moorhuhn 3d. Каждую секунду там по 3-4 надписи на экране, вот уж где не соскучишся :).
Изложил все свои мысли.
Спасибо!
← →
a_n_t (2002-08-16 06:57) [20]Все у вас так просто: главное картинки где-нибудь получше найти :)
На самом деле картинки не так уж и важны (особенно для учебного проекта).
Главное написать сам код игры. И не надо заострять внимание на вещи типа: “в каком формате сохранять уровни” – да хотя бы в самой программе массивом забить. Все должно быть попроще – обучение все таки.
P.S. планы хороши только на бумаге
← →
_Alex_ © (2002-08-16 07:44) [21]
> Главное написать сам код игры. И не надо заострять внимание
> на вещи типа: “в каком формате сохранять уровни” – да хотя
> бы в самой программе массивом забить. Все должно быть попроще
> – обучение все таки.
Полностью с тобой согласен!
← →
Reticent © (2002-08-17 03:19) [22]Ваууу!!! вот это молодцы!!! Я уже давно хотел научиться писать игрухи. Даже одну написал, Гонки Формула 1. Только на ассэмблере :) едеш на чем то, отдаленно напоминающим машинку, и обьезжаешь препядствия. Вид сверху :)
Но только ооочень давно это было. Все позабыл :) Книжек по игрум накупил. Читать начал - больше половины не понял.
Я с удовольствием бы написал для начала Танчики. Очень хорошая идея! не слишком сложно (я думаю) для новичков вроде меня. Главное что б понятно было. Кстати что такое спрайт? (я только напиток знаю)
Как я понял стуктура уже почти полностью готова. Что теперь?
Ах да, где мона взять ентот Delphix?
← →
_Alex_ © (2002-08-17 08:24) [23]
> Кстати что такое спрайт? (я только напиток знаю)
Спрайт, текстура, прямоугольный рисунок для использование в игре.
Я за написание на Opengl+Delphi.
← →
cyborg © (2002-08-17 10:30) [24]Приветствую!
:)
Вырвался вот из больницы на выходные домой, сюда залез.
Выложу наверное ща исходник моих танчиков, только с одним условием, что вы не будете картинки там менять и под своим именем игру распространять, типа вы сделали, OK?
AI там нулевой, так что плеваться на меня не нужно, сразу предупреждаю :).
Ща запакую, закачаю и скажу откуда брать.
← →
cyborg © (2002-08-17 11:40) [25]Мда, с библиотеками там морока получилась, свалил туда модули из библиотек, короче думаю разберётесь, вот путь:
http://www.cyborg.hoha.ru/data/TanksGame.zip (760 550 байт)
Это всё без ресурсов, что бы работало всё, нужно саму игру скачать, там в Read_Me.txt посмотрите.
Код писался в Delphi 6, если не будет читаться, то загрузите код блокнотом, затем сохраните как текст.
← →
Reticent © (2002-08-18 00:55) [26]Классно! есть теперь где сравнивать.
Только там ничего не понятно :) к примеру
SRF:=SDL_CreateRGBSurface( SDL_HWSURFACE or SDL_SRCALPHA,300,300,Bpp, 50, 150, 50, 0 );
т.е. понятно, но вот сам я такое без пояснений не напишу
я уже писал, что я дуб в програмировании игр, поэтому предлагаю все же придерживаться названия форума ;)
Уж оччень охота по шагам разобраться, как что мастерить.
← →
Reticent © (2002-08-18 01:01) [27]т.к. я , к примеру понятия не имею как в Дельфях под .... что-то там писать. Я тока кружечки рисовать могу. Ну или там картинку показать. И т.п.
А как вот, к примеру, загрузить (наверное в память) 3 картинки и потом поставить их рядом, друг за дружкой? Да еще и шоб по ним сверху еще что-то ползло :)
← →
cyborg © (2002-08-18 08:31) [28]SRF:=SDL_CreateRGBSurface( SDL_HWSURFACE or SDL_SRCALPHA,300,300,Bpp, 50, 150, 50, 0 );
SDL_CreateRGBSurface - создаёт спрайт SRF указывает на этот спрайт
SDL_HWSURFACE - Использовать по возможности железо т.е. видеокарту
SDL_SWSURFACE - Использовать програмно
SDL_SRCALPHA - Прозрачность
300,300 - размеры спрайта X-300 Y-300
Bpp - это переменная указывает разрядность цвета, смотря что установлено 32, 16, 24 и т.д. бит на пиксель
50, 150, 50, 0 - Цвет RGB (0 не помню что такое)
Это создаётся прозрачный фон для вывода списка файлов или таблице рекордов.
Там в Read_Me.txt я указал откуда можно скачать полную Jedi-SDL, там есть демо примеры и справка, можно легко научиться.
С чего начать создание игры:
Сначало придумай суть игры и как у тебя там будет всё работать, вид какой, что у тебя будет делать герой (прыгать, летать и т.д.) можно даже на бумажке нарисовать то, как ты думаешь игра будет выглядеть. Затем придумай формат твоей карты, как ты объекты будешь располагать, карта фиксированная у тебя будет или нет и прочее.
Как сделать переход между различными экранами игры:
Создаёшь переменную какую нить, например:
VAR
GameScreen : Integer;
И константы, которые будут присваиваться GameScreen-у:
Const
Start = 1; //Заставка
Begin = 2; //Окно перед началом игры
InGame= 3; //В игре
Final = 4; //Игра окончена
В теле программы делаешь:
VAR
QuitGame : Boolean;
Procedure GameStart; //Заставка
Var
Quit : Boolean;
Begin
Quit:=False;
Repeat
//Тут цикл обработки событий и показа графики
Until Quit;
End;
Procedure GameBegin;//Окно перед началом игры
Var
Quit : Boolean;
Begin
Quit:=False;
Repeat
Until Quit;
End;
Procedure GameInGame; //Сама игра
Var
Quit : Boolean;
Begin
Quit:=False;
Repeat
Until Quit;
End;
Procedure GameFinal; //Например вывод GameOver и прочее...
Var
Quit : Boolean;
Begin
Quit:=False;
Repeat
Until Quit;
End;
BEGIN
QuitGame:=False;
Repeat
Case GameScreen of
Start : GameStart; //Заставка
Begin : GameBegin; //Окно перед началом игры
InGame: GameInGame; //В игре
Final : GameFinal; //Игра окончена
Until QuitGame;
END.
QuitGame устанавливаем в True, если нужно выйти из игры.
Вот примерный скелет тела игры.
← →
Reticent © (2002-08-22 02:42) [29]ооо, сенкс!
я примерно так и предполагал :)
я вот и думаю тожа сперва что-то типа танчиков сляпать ;)
А как обычно делается? Танк- это обьект. Так? ево свойства, к примеру, прочность, скорость и др. я могу а нем описать. А вобытия такие как попадание в него где луче делать. Какую-нить отдельную процедурку, пробегающую по всем танкам? Эт наверно глупо звучит.
А еще можна спросить? как рисовать двигающуюся картинку (танк) по верх другой (земля) не затирая ее??
И как делают что бы игра на полном экране шла?
← →
Reticent © (2002-08-22 12:53) [30]кстати, а чем отличается DirectX от OpenGL ?
а то одни пишут под первое, другие под второе, но все на Delphi. А какие достоинства и недостатки ? или я что-то не понял?
← →
kima © (2002-08-22 20:43) [31]Я вот тут ваши постинги увидел так я не понимаю вы тутор
будете лепить или что? так почему только сорс даете?
Мне лично лучше бы было если кто-нибудь написал как
*пошагово* писать игру и с обьяснениями что к чему
(в играх я нифига не соображаю т.е. delphix/opengl)
← →
Den_IS01 (2002-08-23 11:07) [32]2ALL
Народ! Меня заинтересовал Ваш проект...
Но я не совсем за танчики, хотя...
Главное: давайте поставим точки над "ё" - нужен лидер проекта, который всё будет склеивать, короче кто будет lead programmer?
← →
cyborg © (2002-08-23 12:50) [33]А как обычно делается? Танк- это обьект. Так? ево свойства, к примеру, прочность, скорость и др. я могу а нем описать. А вобытия такие как попадание в него где луче делать. Какую-нить отдельную процедурку, пробегающую по всем танкам? Эт наверно глупо звучит.
Можно по разному делать, объектами и не объектами, например Record-ами.
У объектов есть свои плюсы, то, что они могут сами себя обслуживать, но есть небольшой минус, чувствительный для игры, это скорость, вроде где-то всплывала инфа, что к полям класса долго обрабатываются обращения. В Record-ах минус в тотм, что сами себя они обслужить не могут, но зато быстрее по идее к ним обращение будет происходить. Вот думаю следующию игру без объектов сделать.
Попадание в танк должна обрабатывать сама пуля при проверке столкновения со спрайтом танка, если оно произошло, то убавляется жизнь у объекта столкнувшегося танка и пуля уничтожается создавая объект взрыва снаряда, а танк уж затем сам, если жизнь меньше или равна нулю ликвидируется, при этом он создаёт объект спрайта взрыва танка.
как рисовать двигающуюся картинку (танк) по верх другой (земля) не затирая ее??
И как делают что бы игра на полном экране шла?
Сначала выводится на Surface фон, затем рисуются поверх фона объекты (танки, деревья, пули, взрывы и т.д.), затем вся эта разрисованная картинка выводится разом на экран, поэтому и не мерцает ничего :).
Что-бы не затирая рисовать, нужно создавать спрайты (картинки) с прозрачным фоном, как например делают GIF файлы на пагах.
← →
Skyslider (2002-08-23 15:34) [34]Я тему завел, я по идее погу взяться это все склеивать в тутор... только пока склеивать еще нечего.
Тутор предполагается делать в chm формате в виде трех частей:
1.Тутор
2.FAQ
3.Справочник
← →
SireX © (2002-08-23 17:42) [35]Пиветствую!
Вы тут никак игру собираетесь писать. Видно по сообщениям, что люди толковые собрались.
Так вы игру собираетесь писать на DelphiX или на OpenGl"e.
Если на DelphiX"e то могу помоч. У меня небольшой опыт создания игр на DelphiX. Писал косоуголку на нем, редактор(примитивный правда, но работающий), немного переделал сам DelphiX. Кстати танчки тож пытался написать. Незакончил из-за отсутствия картинок.
← →
_Alex_ © (2002-08-26 20:09) [36]To ALL
После появления первых сообщений, идея мне понравилась, числа этак 15, решил попробовать. На сегодняшний день, готов редактор уровней. Уже грузиться карта, и танк немного бьется о стенки :)
Даже статья про редактор в черновике немного есть.
Время от времени доделываю, (раз в 2 дня), лишь бы хватило времени (до учебы) закончить все это. Даже если я и решу что-то опубликовать, это будет просто изложение моих идей, (ну типа я не считаю себя профи). Делаю на OpenGL.
P.S. Не считайте что хочу, или вызываюсь быть "лидером".
← →
KroaT (2002-08-30 10:13) [37]Молодцы что закрутили проект. Совет: обратитесь к авторам других танчиков, может они чего подскажут!
← →
Dmitriy Polskoy © (2002-08-30 11:41) [38]Я вот тут тоже решил графикой заняться. Сабж меня заинтересовал. Ну что, не дадим идее засохнуть?
← →
Reticent © (2002-09-20 21:30) [39]Итак, ;)
допустим я могу уже управолять моим танком, но против кого? как осуществляется поиск имеющихся танков и их позиций? Массив с танками и их координатами? Ну а все же как комп определяет к какому танку сейчас бежать?
Понимаю, что вопрос обширный, но все же.
← →
artgamer © (2002-09-21 11:40) [40]To All.
А что мы вообще делать собрались? 2D танчики или что? Если все-таки 2D (или даже 2.5D), то прошу подумать еще раз. По сложности такой движок близок к 3D, а пользы от него... Ну, вы сами понимаете. Я предлагаю писать 3D игру на GLScene, так как это самая простая и удобная (ИМХО) библиотека для написания игр на Delphi. И пусть это будут не танчики, а самолётики хотя-бы.
To Skyslider. Ты ветку начал -> ты тут главный -> ты и решай!
С наилучшими пожеланиями, ArtGamer.
← →
Pavel_S © (2002-09-21 14:59) [41]Как насчет того, чтобы все это сделать с использованием объектно-ориентированного программирования?
И для будущего лучше - можно в дальнейшем добавлять всяких "персонажей" без проблем и для получения знаний об ООП.
А затем можно и на интерфейсы перейти (в будущем).
← →
chynik (2002-10-04 07:26) [42]Мне идея понравилась и как чайнику в этом депе очень захотелось проследить за созданием этой игрушки.Но не слишком ли вы высоко замахнулись? Не проще ли начинать с примитива? К примеру:неважно как выглядит танк-нарисуй овал с черточкой,главное заставить его двигаться!Начать с первой операции-взять любую картинку для фона и заставить танк передвигаться по раэным направлениям или поворачивать башню,а уже затем переходить к следующему этапу:реагировать на появление противника.И так поэтапно усложнять игрушку.
← →
hulidum (2002-11-05 18:06) [43]Название игры: тренажор - для обучения delphiX - танчики.
Игра должна работать на Pentium 100; video 1M; ОЗУ 16М. Компилироваться от Delphi 3 до Dephi6. Иметь рабочее разрешение 640x480 256 цветов. Так же есть вопрос: как сделать цивильное выделение спрайтов мышкой, как в любой стратегии, под 2d графику (Например: starcraft)?
Вариант типа танка:
type
_tanklife = (excelent, good, satisfactorily, bed, worse);
_type_tank = (rus_big_tank);
Rgametank=record
x,y :integer;
dead :boolean;
life :_tanklife
type :_type_tank;
end;
Тип пули:
Type
Rsnaryad = record
x,y :integer;
dead :boolean;
time_life :byte; //характеризует идею о том, что снаряд
не летит "от края до края", а лишь на определенное растояние, которое зависит от типа танка.
end;
← →
Farcaller © (2002-11-06 17:25) [44]Привет всем!
Давно уж с этой идеей мучаюсь. С коллишнами проблемы, пишу Д6+ГЛСцена0.9. СПРАЙТЫ ЕСТЬ! :-). Делал в 3ДС Максе.
← →
МимоПроходил (2002-11-07 14:48) [45]А что такое ГЛСцена0.9 ?
Ежели не секрет...
← →
МимоПроходил (2002-11-07 14:51) [46]Удалено модератором
← →
Alex (2002-11-07 16:26) [47]Блин вот так хорошие идеи и засыхают :(,
дюди постепенно теряют интерес, то на одно отвлеклись то на другое.
Я вот тоже по началу оживился, сделал редактор,
игра умеет грузить карту, танки ездят, ударяются о стенки,
стреляют, но .... началсь учеба, впереди диплом, дел завались, поэтому все отложил на неопределенное время.
а все таки жаль :( ...
← →
farcaller © (2002-11-07 17:10) [48]GLScene - набор компонентов для Делфи, рульная вещь!
Ник синий если ввежен е-майл, а (с) появляется при регистрации...
ЗЫ: Ну вот, засохли! Раз начали, так надо делать! Мануалу быть, даже если самому писать придется! 8-).
ЗЫ2: Профы, только со столкновениями помогите, а? :-)
← →
Ketmar © (2002-11-07 18:12) [49]2farcaller:
coldet:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1036446339&n=9
Satanas Nobiscum! 07-Nov-XXXVII A.S.
← →
hulidum (2002-11-07 21:23) [50]Отвечаю на свой же вопрос по поводу выделения мышкой. Должны быть переменные содержащие текущее положение мыши, что-то вроде этого:
type
Rpoint=record
( Rectangle(x1,x2,...) Отвечаю на свой же вопрос по поводу выделения мышкой. Должны быть переменные содержащие текущее положение мыши, что-то вроде этого:
type
Rpoint=record
x,y:integer;
end;
Rmouse_select_win=record
start_pos,end_pos:Rpoint;
end;
Текущие координаты мыши содержаться в end_pos.
Их мы будем обновлять в OnMouseMove. Сама же запись Rmouse_pos будет соодержать координаты окна выделения мыши. В onMouseDown мы фиксируем star_pos - начало выделения. Также нужна процедура, которая обрабатывает "Тех" кто попал в выделение, допустим присвоение некоторой переменной, у каждого объекта - select:boolean;. У Тех кто в него не попал, присваем select:=false; Дальше рисуем вокруг тех, кто попали в выделение,например,прямоугольники(Rectangle(x1,x2,...)). Добавляем фичу с клавишей Ctrl (удерживая её, можно добавлять к выделению новые объекты) в onKeyDown. Для этой фичи тоже должна быть создана глобальная переменная.
Для ускорение вывода выделения пришлось написать вывод rectanlge на основе PIXELCORE - это набор процедур и функции для быстрого вывода пикселей.
hulidum@nm.ru
← →
Grez (2002-11-09 03:19) [51]Всё же немножко не согласен насчёт рисунков. Они как помоему должны быть заранее. Я вот сам решыл игру склепать (самую свою первую) про космический кораблик (типа GALAXY). Так вот типа движок написал(если это мона движком назвать), времени правда ушло много да и не доделан он чуток. Но рисунков нету у меня, Я там чё то от руки нарисовал, кое где зграбил(не дезайнер я),выглядит хуже чем змейка на мобилке, можете мне подсказать сайт где этих рисунков всяких много, и где можно спокойно их взять. Плиззз.
← →
Li2n (2002-11-10 03:34) [52]Здоров всем кто меня читает!=) Планы у вас глобальные и очень интересные! Я прям рад за вас!!! Загрузили вы себя работой... Я навичек, в программирование на Delphi по OpenGLю, плин сколько сайтов не облазил не где не могу достать стоящих программ или статей чтоб они мне помогли, и я разобрасля как делать хоть простейшии программы по OpenGlю...=( Пока что я нашел только программы в которых даже специалисту очень сложно(к примеру на воду падают капельки воды и от воды отходят радужные круги=(, сколько не пробовал разобраться не получается ) разобраться... Тем более большинство программ без пояснений!!! Делаете лучьше простейшие программы, без наворотов и с пояснениями так и разобраться будет просто, и идеи появляются...
Люди помогите плиз! Скинте мне на мыло справочник(на русском языке) какойнить по Openglю или статьи(можно простейшие программы). Заранее благодарю!!! Li2n@mail.ru
← →
Miha-ha © (2002-11-10 13:59) [53]Есть готовая игра Cyborgа! Зачем изобретать велосипед? По моему нужно разобрать игру по кирпичикам(гаечка, болтикам) и описать все подробнейшим образом!!!!! Кто возьметься, тот молодец! Но не забудте получить согласие автора!!!!!!!
А так, если писать всё с самого начала новички не увидят туториал ещё лет 5 :)......... Вот и думайте..............
Skyslider завел народ я думаю ему надобно это и поручить!!!!!
Так, что от слов к делу........ и вперед к звездам ГамеМакинга!
← →
hulidum (2002-11-12 07:16) [54]Из истории СОЮЗАИз истории СОЮЗА.
1801 год. Битва у переправы.
Утро. Вид сверху. Поле пересекает неширокая речка с двумя мостиками. На верхнем
берегу
дивизия Колчака, спрятанная в бункере под землей. У Калчака вчера была днюха. На
нижнем - легендарный танкист, шаулинь Сидоров.
Вражьи танки потихоньку выползают из бункера в нескольких местах и намереваются
перехать на нижний берег и захватить обоз с пивом, охраняемый Сидоровым. Задача
Сидорова не дать Колчаковской дивизии опохмелиться.
Инструкция по созданию игры.
Итак, тебе предстоит сделать невероятное вероятным. Возможное невозможным. Для
начала перезагрузи компутер, чтобы всё было по дефаулту(умолчанию). Убедись что
у тебя стоит mustdie(Windows9x - где x точки экстремумы Microsoft(Версии)). У
тебя должно быть, положенное по инструкции табельное оружие пасквилиста-ви -
Delphi x, где x - номер версии, для работы в зоне мастдайя. И самое главное
программа прямой связи с самим Directx.
Вот иформация по DirectX и о других вещах. Много наших полегло добывая её. Изучи
её как следует.
← →
hulidum (2002-11-12 07:17) [55]{
С технической стороны, DirectX – это множество объектов COM (Компонентная
объектная модель). Эти объекты содержат ряд интерфейсов, которые призваны
упростить использование программистами аппаратной части компьютера: Видео, Звук,
Акселераторы, Контроли, Сеть и т.д.
DirectX создан для решения проблем поддержки почти всех устройств,
которые выпускаются и будут выпускаться на рынок. Если вы программировали
игры под DOS – то вы наверно знаете, о чем я.
Также DirectX способствует повышению качества и ускорению процессов. Вот
например, вы можете писать игру для своего компьютера, у которого,
допустим, нет акселератора. Потом ваша игра распространится и на
компьютеры с акселератором, при этом не теряется поддержка этих
акселераторов и ваша игра будет запускаться и работать еще быстрее и
качественнее.
FYI: DirectX 6.1. работает с Win95/98, DirectX3 работает также и с NT,
только при наличии service pak 3. DirectX 6.1. может работать с NT 5 beta
2, хотя МicroSoft говорит, что NT5/2000 будет поддерживать DirectX 7.0.
Патч для работы NT с DirectX 5 можно найти тут.
Сегодняшний DirectX состоит из следующих частей:
· DirectDraw – Позволяет операции с графическим устройством на
низком уровне, при этом обеспечивается совместимость с Windows.
· DirectInput – Интерфейс с манипуляторами (мышь, джойстик,
клавиатура и др)
· DirectPlay – Интерфейс для игры в multiplayer-режиме ( TCP/IP,
Direct Dial, Local Networking).
· DirectSound – Интерфейс ( WAV, MIDI ).
· DirectSound3D – без комментариев.
· DirectMusic – Интерфейс для работы с музыкой. Обычно не
используется.
· Direct3D – Интерфейс для работы с 3D, практически самый
используемый.
Ознакомся с терминологией DirectX.
Поверхность – это область видеопамяти, которая используется для
сохранения различных графических данных и заэкранных видеобуфферов.
Поверхность бывает первичной и вторичной. Первичной поверхность называется
тогда, когда она является текущей, т.е. отображаемой на экране. Первичная
поверхность по размером прямопропорциональна количеству памяти, требуемой
для сохранения области с размерами окна/экрана при данном видеорежиме.
Т.е. если дисплей имеет разрешение 640х480х256цветов (8 бит/пиксель), то
первичная поверхность будет занимать в памяти около 307 200 байт. Обычно
программисты создают помимо первичной поверхности вторичные, т.е.
заэкранные буфферы. Иногда такие буфферы имеют абсолютно равные размеры с
первичной поверхностью, это дает возможность просто переключать
поверхности.
А это значит, что нужно всего 614 400 (для упомянутого случая) байт
видеопамяти только для того, чтобы начать наше изучение. Когда видеопамять
заканчивается, то DirectX будет создавать поверхности в обычной,
системной, памяти, или же в свопе. Теперь принято считать, что только для
создания совсем маленькой игры требуется видеокарта как минимум с двумя
мегабайтами памяти.
← →
hulidum (2002-11-12 07:17) [56]Двойная буфферизация(Double Buffering) – это средство повышения скорости
вывода графических данных в случае анимации. Обычно реализуется с помощью
нескольких областей памяти, где хранятся графические данные. Эти буффера
перед выводом сравниваются между собой так, что уже не приходится в каждом
кадре рисовать все заново. Двойная буфферизация эффективна при рассчете на
то, что предыдущий кадр не сильно отличается от следующего.
Переключение страниц – возможно вам вообще не нужно объяснять, что это
значит. Наверно каждый из нас в школе на уроках/переменах
экспериментировал с несколькими листочками бумаги, на которых было
нарисовано что-то, но в разных ракурсах. Потом, если эти листочки
показывать глазу с относительно быстрой скоростью, получается подобие
мультфильма.
В нашем случае анимационные сцены строятся на копировании (блиттинге)
графических данных (спрайтов) в специальные буффера (заэкранные
поверхности), и когда построение очередного кадра завершено, вызывается
аппаратная функция переключения страниц, при этом видимым становится
только что нарисованный кадр.
Переключение страниц – это довольно быстрый способ, т.к. не требуется
копировать память из области в область. Эта операция сводится к тому,
чтобы переустановить значение переменной в видеокарте так, что область
начала отрисовки памяти совпадала бы с той областью, где сохранен текущий
кадр.
Число кадров в секунду – обычно его называют просто FPS (Frames Per
Second), пользуются этим термином для описания количества кадров, которое
будет показано на экране пользователю за 1 секунду. Телевидение вещает с
использованием частоты 24-25FPS.
При разработке игр нужно четко определять нижнюю границу FPS, т.к. если
FPS будет недостаточным, то у пользователя устанут глаза. Например, для
стратегий можно вполне обойтись 15FPS, но вообще-то лучше поставить себе
цель достичь 24-25FPS.
“Бешенство”(Tearing) – большинство мониторов обновляют дисплей 70 раз в
секунду (70Гц). Проблема состоит в том, что когда допустим по середине
дисплея отрисовывается картинка, а луч развертки в момент начала рисования
уже достиг середины экрана, то получится, что первая часть экрана
отрисовалась со старыми графическими данными, а вторая – с новыми. Это
достаточно неприятный эффект, связаный с мерцанием, чтобы его избежать,
программисты под DOS отслеживали луч развертки. При использовании DirectX
эта проблема решается автоматически.
Битмапы и спрайты – Битмапы - это области с графическими данными,
битовые карты, или просто картинки. Спрайты по сути то же самое, что и
битмапы, но с одной отличительной особенностью – они имеют области с
прозрачным цветом, который в процессе отрисовки просто игнорируется и не
выводится. Термином “спрайт” еще иногда пользуются, чтобы указать на
анимированный битмап.
Современные спрайты состоят обычно из нескольких кадров анимации, это
сделано для того, например, чтобы достичь эффекта летящего корабля,
идущего человека и т.д.
Клиппинг – это средство используется для ограничения области рисования,
например, клиппинг применяется системой Windows для недопущения рисования
вне пределов окна.
Теория цветов – цвета в Windows определяются моделью RGB (сочетание
Красного, Зеленого и Синего). Манипулируя этими тремя основными
компонентами можно создать любой цвет из диапазона различимых человеческим
глазом.
В Delphi цвета определять можно с помощью класса Tcolor, который определен
в модуле Graphics. Можно определить цвет, используя константы типа clBlue,
clLime и т.д. или воспользоваться более аккуратным и точным методом:
берется четырехбайтовое слово и заполняется байтами, где самые нижние три
байта определяют красную, синюю и зеленую компоненту цвета соответственно.
Например $0000FF00 – чистый зеленый, $000000FF – чистый красный. Я думаю,
идея понятна.
Для чего же тогда нужен первый байт? А вот для чего:
Если он равен 0, то цвет определяется как ближайший цвет из системной
палитры.
Если он равен 1, то цвет определяется как ближайший цвет из текущей
палитры.
Если он равен 2, то цвет определяется как ближайший цвет из всей
логической палитры данного устройства (видеокарты).
← →
hulidum (2002-11-12 07:18) [57]Обзор DelphiX.
Вот что нам нужно для начала:
· DirectX Run-time.
· Delphi 3 or 4.
· DelphiX.
DelphiX – это набор компонентов Delphi, которые призваны упростить
использование DirectX. В следующей таблице эти компоненты будут
перечисленны:
Название компонентаОписание компонента
TDXDrawСодержит все необходимое для работы с DirectDraw, а также и
весь необходимый код для включения Direct3D.
TDXDibРаботает с DIB
TDXImageListРаботает с набором DIB. Очень полезно, если используете
анимацию.
TDX3DЭто для поддержки со старыми версиями DelphiX, не используйте
это.
TDXSoundДоступ к DirectSound. Обеспечивает простое воспроизведение
WAV.
TDXWaveПозволяет хранить WAV
TDXWaveListПозволяет работать с набором WAV
TDXInputИнтерфейс с DirectInput
TDXPlayПозволяет работать с удаленными компьютерами.
TDXSpriteEngineПомогает создавать программы со спрайтами.
TDXTimerАналог стандартного таймера, только более надежный и
функциональный.
TDXPaintBoxВерсия DIB стандартного Timage.
}
← →
hulidum (2002-11-12 07:19) [58]Итак повторюсь. DelphiX- набор компонент для работы со звуком, картинками,
сетью, клавиатурой, мышью, джойстиком и другими техническими премудростями.
Называется этот секретный набор (считай что с тебя взяли расписку о
неразглашении) - DelphiX. Если у тебя его нет. Бегом к бравым ветеранам
информации - поисковикам. Можешь сразу к ya.ru. Пиши там DelphiX и тыкай на
button(кнопка). Если ты справишься с данным багом, то слушай наставления дальше.
Установи данный набор компонент, к нему должны прилагаться инструкции. На этом
всё. Вот тебе боевая задача:
1) Запустить Delphi. В командном меню выбрать пункт "Component". В нем пункт
"Configure Pallete". Появится окно в котором: два списка. В левом - названия
наборов компонент. В правом - компоненты наборов. Задача: Найти в левом списке
"DephiX" и передвинуть его вверх так, чтобы он был перед "System". Это просто
предосторожность, чтобы в минуту опасности, ты не облажался, а показал кому
надо, что и как. Проще говоря не тратил зря время.
2) Любой разведчик должен мгновенно адаптироваться к любой обстановке. Должен
уметь найти в стоге сена не одну, а несколько иголок. Задача: найти и нажать на
"Save all". Появится окно сохранения. Вычислить наиболее подходящий диск для
хранения секретной информации. Создать там папку Projects в ней SPPK(Сидоров
Против Пьяного Колчака). Именно эту папку ты передашь по завершению миссии
гонцу. Для создания папок использовать кнопу "создание новой папки" в окне
сохранения. В поле имя файла написать "se_op"(секретная опереция). Нажать кнопку
сохранить. Появится еще одно окно. В поле имя файла укажи "sppk". Тыкай на
сохранить.
3) Закрой Delphi. Перезагрузи компьютер. И по пробуй за три секкунды найти
sppk.dpr и запустить для работы. Время запуска не в счет. Если у тебя не
получится, то считать что ты уже труп. Любой мало-мальский программер укокошит
тебя не то, что за три, а аж за одну секкунду. Так что вот тебе наставления:
Продумай стратегию быстрого запуская проекта, но так чтобы никто ничего не смог
узнать. Совет: создай где-нибудь ярлык, присвой ему быструю клавишу. И когда
тебе нужно быстро, красиво и незаметно подкрасться к багу нажми на неё.
Профессионалы - засылают резидентов, которые по движению мыши определяются
необходимость запуска проекта, т.е. профы делают некоторое, заранее известное
резиденту движение мышью. Запусти SPPK. Никогда не делай лишний движений мышью
будь профессионалом. Но также учись их делать чтобы запутать противника, чтобы
он подумал, что ты не профессионал, и выболтнул чего-нибудь лишнее.
← →
hulidum (2002-11-12 07:20) [59]4) Пора добавить парочку утилит, заботливо предоставленные тебе СОЮЗОМ. Работа
предстоит нелегкая, особенно если учитывать что вкладка на которой находятся
компоненты DelphiX находится прямо в северной Зоне, где обитают банды меню типа
"File, Edit, ..." и мелкие отряды кнопок сохранения, добавления... . Подзадача:
узнать что означает нажатие клавиши, находяшейся слева, между Ctrl и Alt на
клавиатуре с одновременным нажатием на клавишу "m".Если у тебя такой клавиши
нет, то придётся учится работать мышью. Итак открой вкладку DelphiX и добавь на
форму следующие компонент: DXDRAW. Затем двигай на запад в зону Пропов
(Properties). И в свойстве Align установи alClient. В свойстве Name установи:
Scr. Теперь нажми на кнопку "Save all" - дабы сохранить твою работу для
следующих поколений. Убедись что у Пропов Scr.Dysplay равен [640x480x8]. Теперь
спустись на пару этажей ниже в подвалы Пропа Options. Поставь:
doFullScreen=true; //полноэкранная ситуация.
doNoWindowChange=false; //в полноэкранной ситуации делаем область видимости за
счет
//Dysplay=640x480x8
DoAllowReboot=true; //Позволяет реагировать на сочетание клавиш Ctrl, Alt и Del
DoWaitForBlank=false; //Эта опция включает/выключает автоматическую задержку
//при отрисоваке данных (см. эффект Tearing выше).
//Если установлена, то немного понизится FPS.
DoAllowPalette256=fase; //не использовать ли 256-цветную палитру.
DoSystemMemory=false; //Определяет, будут ли поверхности сохраняться в системной
памяти
//вместо видеопамяти. Немного снижает FPS (если доступно).
DoStretch=false; //Если область рисования по размерам больше той, что
//определена текущим видеорежимом, то, если эта опция выбрана,
//графические данные будут автоматически приводиться к нужным //размерам.
DoCenter=true; //Центрирование поверхности
DoFlip=true; //Эффективно только в полноэкранном режиме. Когда используется
//двойная буфферизация, эта опция позволяет без особых затрат
//времени переключать поверхности.
do3D=false; //операции с 3d не позволены.
doDirectX7Mode=flase; //информация неивестна
doRetainedMode=false; //Опция работает совместно с do3D. Если она установлена,
то
//используется RM, в противном случае – IM. (IM и RM – это
//сокращения от Retained Mode и Immediate Mode).
//RM – это надстройка режима IM. Позволяет рисовать объекты на
//более высоком уровне, т.е. можно например нарисовать сферу и //тп. IM – это
то, на чем основывается RM. Если используется этот //режим, то вся задача по
вычислению вершин фигур,отсечению //невидимых поверхностей и т.д. ложится на
программиста.
doHardware=false; //Если видеокарта с акселератором, то чтобы поддерживать
//операции с ним, нужно установить эту опцию.
doSelectDriver=false; //Выбрать драйвер для работы в полноэкранном режиме.
doZBuffer=false; //Включает Zbuffer (отсечение невидимых поверхностей и др).
Всё Сохраняйся и вырубай проект. На первый день с тебя хватит. Если наступит
завтра, то продолжим.
hulidum@nm.ru
http://hulidum.nm.ru
← →
[Baradoo] (2003-01-21 21:41) [60]это было давно и не правда
← →
xaim (2003-01-22 21:30) [61]я тут первый раз
это то что мне нужно
но у меня выход в интернет только раз в неделю(среда)
← →
Antichacker (2003-01-30 14:16) [62]В общем так. Сначала всем привет. Потом, уже по теме - сам помню, как сложно разбираться в DelphiX безо всего - могу скинуть уроки по данной теме(писал сам), но мой сайт угробили. Куда их можно выложить?
P.S. В уроках разбирается все на самых паршивых примерах(паршивых по графике), зато простых. Если кто-то сможет выложить уроки для общеполезного дела - пишите. Вышлю архив. Кроме того, у самого есть куча вопросов, но уже по GLScene. С самого-самого начала.
← →
JibSkeart © (2003-01-31 11:12) [63]Если интерестно то сдеся есть мои начинания
это не полноценная игра это просто пример как
можно сделать на мой взгляд неплохой 2Д движок
http://delphigfx.mastak.ru/samples7.htm
критику можете писать одобряемссс
← →
demwf (2003-03-07 11:17) [64]Вы чё сдесь петухи делаете
← →
MAX DAMAGE (2003-03-13 01:19) [65]Типа давайте уже OpenGlу юзать.
Ато ети 2Д неинтересно
С етим DelphiX даже дети из детского сада игрулю напишет....
Блин писать 5 сек.
Давайте уже разбирать 3д шутер какой просто я тут чото неразобрался как в етом опенЖЛ-е камеру вращать.
Пользуюсь коммандой LookAt
координаты глаза стоят на месте(eyex eyey eyez, а координаты
контрольной точки вычисляются по ф-ле
centerx=eyex+2*cos(alpha);(угол в радианах (вначале равен pi/2))
centery=eyey+2*sin(alpha);
Короче делаю так(как бы вокруг своей оси повернуться хочу),
угол изменяю, а оно сцену так развернёт - фиг поймёшь!
В чем беда?
(вектор поворта сцены 0,0,1)
← →
MeF88 © (2003-03-13 12:12) [66]2Max Damage: А ты напиши ;-) Я на тебя посмотрю.
← →
ogo © (2003-03-14 12:21) [67]Не надо писать на GLScene. Если хотите писать тутор пишите на OGL. И ещё маленькое пожелание напишите 3D игрушку, потому что писать на OGL 2D это извращение.
Страницы: 1 2 вся ветка
Текущий архив: 2003.09.15;
Скачать: CL | DM;
Память: 0.73 MB
Время: 0.028 c