![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пошаговое создание платформенной стрелялки.
Skyslider © (2002-08-13 18:54:00)
Господа программеры :) Я думаю было бы интересно рассмотреть создание игры с нуля. Это был бы полезный тутор как для только начинающих так и для тех кто уже начал. Предлагаю обсудить следующие вопросы, ориентируясь на то что это простая стрелялка справа налево, похожая на др.Марио. Ну может сложнее, вашими силами.
1. Подборка программ и библиотек для создания игры
2. Создание уровней, объектов (возможно Редактор)
3. Хранение данных
4. Поведение противника (АИ)
5. Графика (2D,3D) создание и управление
6. Геймплей (Интерес игры)
7. Баланс
8. Анимация
9. То что пропутил выше :)
Если у кого есть идеи или советы по вышеизложенным вопросам,
пишите. Неплохо подкреплять свои идеи демонстрационным кодом.
Чтобы можно было сразу испытать и поучиться.
Alex (2002-11-07 16:26:00) [21]
Блин вот так хорошие идеи и засыхают :(,
дюди постепенно теряют интерес, то на одно отвлеклись то на другое.
Я вот тоже по началу оживился, сделал редактор,
игра умеет грузить карту, танки ездят, ударяются о стенки,
стреляют, но .... началсь учеба, впереди диплом, дел завались, поэтому все отложил на неопределенное время.
а все таки жаль :( ...
МимоПроходил (2002-11-07 14:51:00) [22]
Удалено модератором
МимоПроходил (2002-11-07 14:48:00) [23]
А что такое ГЛСцена0.9?
Ежели не секрет...
Farcaller (2002-11-06 17:25:00) [24]
Привет всем!
Давно уж с этой идеей мучаюсь. С коллишнами проблемы, пишу Д6+ГЛСцена0.9. СПРАЙТЫ ЕСТЬ!:-). Делал в 3ДС Максе.
hulidum (2002-11-05 18:06:00) [25]
Название игры: тренажор - для обучения 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;
chynik (2002-10-04 07:26:00) [26]
Мне идея понравилась и как чайнику в этом депе очень захотелось проследить за созданием этой игрушки.Но не слишком ли вы высоко замахнулись? Не проще ли начинать с примитива? К примеру:неважно как выглядит танк-нарисуй овал с черточкой,главное заставить его двигаться!Начать с первой операции-взять любую картинку для фона и заставить танк передвигаться по раэным направлениям или поворачивать башню,а уже затем переходить к следующему этапу:реагировать на появление противника.И так поэтапно усложнять игрушку.
Pavel_S (2002-09-21 14:59:00) [27]
Как насчет того, чтобы все это сделать с использованием объектно-ориентированного программирования?
И для будущего лучше - можно в дальнейшем добавлять всяких "персонажей" без проблем и для получения знаний об ООП.
А затем можно и на интерфейсы перейти (в будущем).
artgamer (2002-09-21 11:40:00) [28]
To All.
А что мы вообще делать собрались? 2D танчики или что? Если все-таки 2D (или даже 2.5D), то прошу подумать еще раз. По сложности такой движок близок к 3D, а пользы от него... Ну, вы сами понимаете. Я предлагаю писать 3D игру на GLScene, так как это самая простая и удобная (ИМХО) библиотека для написания игр на Delphi. И пусть это будут не танчики, а самолётики хотя-бы.
To Skyslider.Ты ветку начал -> ты тут главный -> ты и решай!
С наилучшими пожеланиями, ArtGamer.
Reticent (2002-09-20 21:30:00) [29]
Итак, ;)
допустим я могу уже управолять моим танком, но против кого? как осуществляется поиск имеющихся танков и их позиций? Массив с танками и их координатами? Ну а все же как комп определяет к какому танку сейчас бежать?
Понимаю, что вопрос обширный, но все же.
Dmitriy Polskoy (2002-08-30 11:41:00) [30]
Я вот тут тоже решил графикой заняться. Сабж меня заинтересовал. Ну что, не дадим идее засохнуть?
KroaT (2002-08-30 10:13:00) [31]
Молодцы что закрутили проект. Совет: обратитесь к авторам других танчиков, может они чего подскажут!
_Alex_ (2002-08-26 20:09:00) [32]
To ALL
После появления первых сообщений, идея мне понравилась, числа этак 15, решил попробовать. На сегодняшний день, готов редактор уровней. Уже грузиться карта, и танк немного бьется о стенки :)
Даже статья про редактор в черновике немного есть.
Время от времени доделываю, (раз в 2 дня), лишь бы хватило времени (до учебы) закончить все это. Даже если я и решу что-то опубликовать, это будет просто изложение моих идей, (ну типа я не считаю себя профи). Делаю на OpenGL.
P.S. Не считайте что хочу, или вызываюсь быть "лидером".
SireX (2002-08-23 17:42:00) [33]
Пиветствую!
Вы тут никак игру собираетесь писать. Видно по сообщениям, что люди толковые собрались.
Так вы игру собираетесь писать на DelphiX или на OpenGl"e.
Если на DelphiX"e то могу помоч. У меня небольшой опыт создания игр на DelphiX. Писал косоуголку на нем, редактор(примитивный правда, но работающий), немного переделал сам DelphiX. Кстати танчки тож пытался написать. Незакончил из-за отсутствия картинок.
Skyslider (2002-08-23 15:34:00) [34]
Я тему завел, я по идее погу взяться это все склеивать в тутор... только пока склеивать еще нечего.
Тутор предполагается делать в chm формате в виде трех частей:
1.Тутор
2.FAQ
3.Справочник
cyborg (2002-08-23 12:50:00) [35]
А как обычно делается? Танк- это обьект. Так? ево свойства, к примеру, прочность, скорость и др. я могу а нем описать. А вобытия такие как попадание в него где луче делать. Какую-нить отдельную процедурку, пробегающую по всем танкам? Эт наверно глупо звучит.
Можно по разному делать, объектами и не объектами, например Record-ами.
У объектов есть свои плюсы, то, что они могут сами себя обслуживать, но есть небольшой минус, чувствительный для игры, это скорость, вроде где-то всплывала инфа, что к полям класса долго обрабатываются обращения. В Record-ах минус в тотм, что сами себя они обслужить не могут, но зато быстрее по идее к ним обращение будет происходить. Вот думаю следующию игру без объектов сделать.
Попадание в танк должна обрабатывать сама пуля при проверке столкновения со спрайтом танка, если оно произошло, то убавляется жизнь у объекта столкнувшегося танка и пуля уничтожается создавая объект взрыва снаряда, а танк уж затем сам, если жизнь меньше или равна нулю ликвидируется, при этом он создаёт объект спрайта взрыва танка.
как рисовать двигающуюся картинку (танк) по верх другой (земля) не затирая ее??
И как делают что бы игра на полном экране шла?
Сначала выводится на Surface фон, затем рисуются поверх фона объекты (танки, деревья, пули, взрывы и т.д.), затем вся эта разрисованная картинка выводится разом на экран, поэтому и не мерцает ничего :).
Что-бы не затирая рисовать, нужно создавать спрайты (картинки) с прозрачным фоном, как например делают GIF файлы на пагах.
Den_IS01 (2002-08-23 11:07:00) [36]
2ALL
Народ! Меня заинтересовал Ваш проект...
Но я не совсем за танчики, хотя...
Главное: давайте поставим точки над "ё" - нужен лидер проекта, который всё будет склеивать, короче кто будет lead programmer?
kima (2002-08-22 20:43:00) [37]
Я вот тут ваши постинги увидел так я не понимаю вы тутор
будете лепить или что? так почему только сорс даете?
Мне лично лучше бы было если кто-нибудь написал как
*пошагово* писать игру и с обьяснениями что к чему
(в играх я нифига не соображаю т.е. delphix/opengl)
Reticent (2002-08-22 12:53:00) [38]
кстати, а чем отличается DirectX от OpenGL ?
а то одни пишут под первое, другие под второе, но все на Delphi. А какие достоинства и недостатки ? или я что-то не понял?
Reticent (2002-08-22 02:42:00) [39]
ооо, сенкс!
я примерно так и предполагал :)
я вот и думаю тожа сперва что-то типа танчиков сляпать ;)
А как обычно делается? Танк- это обьект. Так? ево свойства, к примеру, прочность, скорость и др. я могу а нем описать. А вобытия такие как попадание в него где луче делать. Какую-нить отдельную процедурку, пробегающую по всем танкам? Эт наверно глупо звучит.
А еще можна спросить? как рисовать двигающуюся картинку (танк) по верх другой (земля) не затирая ее??
И как делают что бы игра на полном экране шла?
cyborg (2002-08-18 08:31:00) [40]
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, если нужно выйти из игры.
Вот примерный скелет тела игры.