Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

Пошаговое создание платформенной стрелялки.   Найти похожие ветки 

 
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.



Страницы: 1 2 вся ветка

Форум: "Игры";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.59 MB
Время: 0.012 c
1-48581
MakNik
2003-09-03 19:03
2003.09.15
StringGrid


1-48634
oduvan
2003-08-26 20:03
2003.09.15
Скролинг в МеМо при поиске...


1-48615
глупый
2003-09-03 13:28
2003.09.15
В мемо заносить построчно инфу ?


6-48674
Чижик Пыжик
2003-07-12 18:34
2003.09.15
Как сделать запрос и отключиться?


14-48712
Ru
2003-08-27 14:57
2003.09.15
Давайте сделаем гипотетическое представление





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский