Теория и технологии программирования

Как Вы относитесь к созданию игр на Delphi?

Здравствуйте в этом топике я хочу создать справочник проблем и решений в создании 2D и 3D игр. Те у кого есть опыт в этом пишите сюда. Почему я хочу создать такой топик, потому, что мне интересно заниматься созданиями игр. Я не хакер и не хочу им быть. Издеваться над людьми ради потехи? Нет это не моё. Вот создавать игры это куда веселей и за это не посадят. Ну вообщем пишите, кто чё знает.
"Проблемы и решения в создании 2D и3D игр в Delphi"
1)Первая проблема:
Когда создаёшоь форму, какими бы ты не крутил параметрами, всё равно панель задач стоит Выше, чем Ваше приложение. Параметр "над всеми" не катит, т.к при открыть новых окон(Show) их не будет видно, а лишь главное окно, Как от этого избавиться? Постараюсь обновлять топик каждый день! Но и Вы тоже задавайте вопросы. Я нарядли на них отвечу, но на форуме есть много умных людей, они помогут, я сам в этом убедился, всем им респект
вопрос #2: надо создать географическую карту месности, т.е. рельеф, как это сделать? (нужно сеточную модель сделать)
Villiant
я сам толком не разбирался, есть один пример - 3d танки, есть что-то вроде 3д мира + танки, одним ты управляешь, другой просто ездит за тобой, рельеф можно менять (вроде клавиши G и F, 0 - центрировать камеру на танке, понажимайте другие клавиши на клавиатуре - там ещё угол можно менятть, пушку крутить - интересная вещь). смысла у игры нет, но зато много что реализовано, а самое главное - исходники на делфе
главное в игре, не реализация, а идея. в основном все идеи старые и избитые.
поэтому вопрос. какова идея у разрабатываемой игры?
вообще для создания современных 3d игр восновном используют с++. он более подходящий для этих целей (хотя я сам не знаю почему). но через делфи всегда можно сделать тоже самое только это будет сложнее.
сложнеее не будет будет даже лучше и проще просто по этой теме нет нормальный туториалов и справочников
Если же придётся работать с 3D графикой, то у меня где-то был набор компонентов DelphiX, там даже сэмплы построения есть.
ну думаю они у каждого есть... а если нет, то вот, держите
DelphiX либа отличная. И идея отличная.
Соль в том, что при создании игр надо забывать о религиозных войнах и выбирать не между С++ и Delphi, а между DirectX и GDI(естественно не в пользу последнего).
Отлично желающие нашлись. Я предлагаю начать не 3D, а с 2D игр. Ведь не зная простого не создашь сложного! А то тут все анимация 3д графика, не чего подобного начнём с 2D приключения. Для начало определимся со сценарием. Пусть это будет магическое средневековье, с применением оружия и магий. Почему так, да потому, что код будет сложнее. Проффесионалы, можите тоже нам помочь с кодингом, потом, когда научимся создавать 2D игры, приступим к 3D. Итак наши цели создать игру с интересным геймплеем, графика тут роли не играет, нам надо набить руку. В на чале я смого задавать вопросы и находить решения, но потом мне понадобиться Ваша помощь, поэтому все принимайте участие. Для новичков - это полезный опыт, для проффесионалов - это оттачивание мастерства.
Приступим:
1)Надо создать оболочку.
Открываем делфи, создаём форму, во весь экран, вставляем туда название игры, пусть будет "magic warior", если хотите предложите другое название, это роли не играет. Создаём кнопки начать игру, выйти из игры. С кнопкой выйти из игры запускается процедура показ 2 формы, в ней 3 элемента Label,Button1,Button2. Вы уверены, что хотите выйти? Да нет. Вот и всё с процедурой выхода мы разобрались. Вставляйте Ваш вариант кода. Мы выберем лучший или сделаем симбиоз нескольких кодов. На сегодня всё завтра будем начинать игру!Спасибо за внимание.
хорошо. напиши сценарий. как будет проходить действия. смысл и цели игры. и распредели части программы для нескольких человек. части очень маленькие. может какие функции или графику...
Небудем мудрить, мы же не создаём комерческий проект, а учимся создавать игру.
Сценарий:
У чела убили семью и он хочет отомстить. Надо сделать анимацию, со смертью его семьи и как он поклялся отомстить. Для этого нам понадобяться знатоки флеш или 3D MAX , если таких не найдётся, то прийдётся делать мне(я не проффесионал во флеш), но думаю, что смогу. Ещё нам нужен художник, рисующий персонажей. Потом нам нужен дизайнер интерфейса игры и группа дизайнеров, создающие миссии и последнее дизайнер макий и оружия(этим я могу заняться!). И самое главное - нам нужен кодер(Delphi), желательно, чтобы их было много - ну с этим проблем не будет . Всё вродебы всё учли, теперь приступим, в той теме я писал про создание главного меню - лучший дизайн и код будут отобраны для нашей игры. Я сегодня, когда приеду домой, то пришлю свой вариант кода и дизайна. Если, что прощайте за ошибки, времени нет проверять, спасибо за внимание.
Наша главная цель - научиться создавать игры любого жанра и уровня сложности, а затем создать проффесиональный комерческий проект, к тому времени мы соберём весь штат создателей. И уже будем пере писываться как -то иначе(я надеюсь что нам помогут админы форума и создадут отдел форума под кодом, который выдадут всему штату разработчиков), но это потом, а сейчас мы учимся!
Как и обещал, Вот код! Скачивайте. А где ваши коды? Активности вообще нет!
Продолжаем меню выбераем моё, т.к. других нету !
Теперь приступим к прорисовке 1 миссии. Она называется "Эльфийский лес", как Вы поняли, нам надо сделать фон размером 9000*550, изображениями деревьев, кустов и т.д. Также нам надо прорисовать перса - вот тут возникают сложности. И не забудьте персонаж должен быть в профиле, у нас же 2D игра. Нужно вобщем примерно 9 картинок при ходьбе право и 9 при ходьбе влево, для создания анимации бега. На это у Вас 3 дня. Сильно прорисовывать не надо!
Обращаюсь к проффесионалам: не стесняйтесь, то, что для Вас это легко и не престижно заниматься этим, скоро доберёмся до программирования Вашего уровня и Вы там себя проявите, а щас плиз помогайте новичкам!
Объясняю принцип процедуры нажатия на кнопку играть:
Открывается картинка с надписью: "Миссия1: Эльфийский лес". В низу label с надписью идёт загрузка, а ещё ниже прелоадер связанный с загрузкой(вот тут задание для проффесионалов: связать прелоадер с загрузкой картинки, а для новичков просто связать прелоадер с таймером). После того, как прелоадер покажет 100% показать фон и чела. При нажатии на стрелку влево - работает анимация, сделанная из 9 картинок и также на право. Вот это и будет следующим задаинем.
Пожалуйста - побольше активности . Ведь для тех, кто будет создавать игры - это драгоценный опыт. А для программистов - это развитие логики по другому направлению - это тоже полезно и может помочь Вам в будущем в ваших проектах.
Спасибо за внимание.
Опять здравствуйте! Gambler прав - 3D шутер для некоторых из нас сделать на данный момент практически невозможно! Я из их числа.
Ещё задали вопрос создаём ли мы код к игре. Ответ да - мы полностью создаём игру, в начале 2D, а затем 3D!
А теперь к игре:
Надо написать код к этому алгоритму движения персонажа:
При нажатии левой стрелки происходит смена 9 картиннок с интервалом 50 милисекунд, а лучше 25, название картинок:
I1,I2,I3,I4,I5,I6,I7,I8,I9. Это должно создать илюзию движения персонажа влево. Тоже самое при нажатии правой стрелки, только, название картинок:I10,I11,I12,I13,I14,I15,I16,I17,I18.Это должно создать илюзию движения персонажа вправо. Лично я не знаю как это реализовать, поэтому надеюсь на Вашу помощь! Всем спасибо!
Особое спасибо Администрации, за то, что отредактировали тему, убрав лишнее!
я думаю тебе нужно немного самому начать. и раздавать задания адресно.
какая нужна поддержка со стороны администрации форума?
Не то мы делаем!!!
Предлагаю написать что-то похожее на движок(И ЗАБЫТЬ про GDI).
Давайте напишем подобие компонентов для DirectX(на базе DelphiX).
Я начал писать что-то подобное, давайте объеденимся, я выкладываю свои потуги. перегружайте TDXCtrl.Draw и рисуйте. Сам сейчас займусь кнопкой и анимацией.
DXTree.rar
Alar, Вы говорите, что это легко, но ведь по себе людей не сюдят! Не такли?! Не все знают это, кому-то это легко, а кому-то это покажется не реализуемым, причём если знаете как это сделать, то плз выложите исходник проги, чтобы и мы этому научились! Спасибо за внимание.
Задача: написать программу, делающую анимацию по 9 картинкам (чтоб казалось что человек - в данном случае - бежит)
В начале на счёт персонажей:
Наш администратор - Alar обещал сделать это, за что ему спасибо!
Теперь приступим к магиям. Давайте предлагайте различные магии и картинки, этих магий в действии!
Дальше нужно ответить на вопрос, который в дальнейшем нам поможет в создании кода для магий.
Тут возник у меня вопрос:
Написал код, возникла ошибка, вот часть кода:
if (Image9.Left:=x+y+50) then<--здесь останавливается курсор
begin
Timer2.Enabled:=false;
Image9.Visible:=false;
Image9.Left:=x;
end;
Пишет:Type of expression must be BOOLEAN
Переменные ввел правильно, они действуют я проверял, в другой части кода, а здесь возникает ошибка, в чем она?
Спасибо за внимание!
н-да-а-а!
маги... магия... мечи... движки...
а попробуйте-ка для начала сделать римейк старого доброго диггера (сам делал когда-то еще для синклера).
тогда многое станет понятнее.
или это для вас слишком просто?
тогда мне просто интересно, как вы будете описывать и реализовывать логику поведения всяких мостров...
только не в виде словесного поноса, а хотя бы в расписовке алгоритма.
Здравствуйте уважаемый Mihali4! Вы внимательно прочитайте весь топик, мы и так делаем самое простое - это 2D игру. Конечно это не самое простое, но если мы создадим 2D игру - это нам даст опыт. И если Вы ответите на выше поставленный вопрос и Alar покажет код анимации, то написать поведение монстров(примитивное) не составит труда! Поверте мне, в дальнейшем вы поймёте почему.
Отвечаю:
if (Image9.Left:=x+y+50) then<--здесь останавливается курсор
а зачем здесь двоеточие? Оно участвует в операции присвоения...
Почему Диггер?
Потому что:
- есть готовый сценарий
- есть готовые образы для спрайтов
- есть примеры удачных реализаций ЛОГИК поведения
и т.д. и т.п.
Я к тому, что, к примеру, для того, чтобы научиться делать мебель, надо начинать не с византийского шкафа, фото которого никто никогда не видел, а с копирования табуретки у соседа... И чтоб она получилась, как минимум, не хуже. Тогда можно попробовать стул, затем столик, шкафчик, и так далее...
Похоже, в этой теме собрались юные максималисты.
Пойду-ка я отсюда...
Учите матчасть, будущие Биллы Гейтсы...
P.S. Вы тут лихо орудуете термином "движок". А может кто-нибудь дать исчерпывающее определение "движка"?
Сообщение от mihali4
Отвечаю:
if (Image9.Left:=x+y+50) then<--здесь останавливается курсор
а зачем здесь двоеточие? Оно участвует в операции присвоения...
Почему Диггер?
Потому что:
- есть готовый сценарий
- есть готовые образы для спрайтов
- есть примеры удачных реализаций ЛОГИК поведения
и т.д. и т.п.
Можно на форуме увидеть этого диггера?
Господа, ваш спор не имеет смысла. Тяжело в учении - легко в бою! Можно начать и со сложного, умение придет медленнее, но если уж и придет, то уже никогда не уйдет! :-))
1. Вопрос по поводу полноэкранного режима решили?
2. Использовать тупые стандартные кнопки - это пошло, а как можно создать кнопки произвольной формы, да и еще туды картинку впендюрить? Код пожалуйста...
3. Может историю с убийством семьи проще сделать в виде .avi файла и тупо проиграть его мо звуком? Многие так делают (допустим GTA VC)!
4. По поводу логики монстров - вопрос интересный! Есть какие мысли?
Есть ли смысл в наличии ProgressBar с надписью "Loader" если ничего не загружается?
Логика проста, монстры ходят по чек-поинтам, если главный герой попадает в их радиус (ну допрустим пикселе 200) то они идеут на него, если он выходит из радиуса (смог убежать), то они останавливаются (такой алгоритм применяется во многих играх). Можно сделать просто (как aliens Shooter ) как только расстояние между героем и монстром < определённого, то монстр идёт на него (учитывая карту). Опять же, если в игре нужен реализм, то надо учитывать, что монстр не может видеть сквозь стену или выступ (такое и в 2D возможно), но и не надо создавать слишком сложный алгоритм, а то с глюками потом не разгрестись и тормозами.
P.S.: извините но кода не будет, это только слова.
Сообщение от Alar
Можно на форуме увидеть этого диггера?
Чтобы увидеть диггера, нужно в любой поисковой системе набрать "digger" и получить список ссылок, которого хватит на всю оставшуюся жизнь...
идея создания игры хорошая, но если вы будете долго думать что создать то у вас ничего неполучется.
Здравствуйте уважаемые!
Сегодня у нас мини праздник - тема стала популярной!
В начале ответим на вопрос rusl016.
В какой-то степени проблему во весь экран окна решели. Нам дали исходник DXTree.rar(вы можете скачать этот файл с нашего топика!). Но я так и не понял, как автор это реализовал, может Вам удастся! Чтобы создать кнопку с картинкой, надо нажать на инструмент BitBtn, во вкладке Additional, при помощи св-ва Glyph, только перед этим не забудте очистить поле Caption, если Вам нужна только картинка, а если Вы хотите делать сами кнопки, то код, вы можете найти скачав с нашего топика mager.rar.
Пока наш проект по созданию игры простаивает, но дня через 2 появятся новый сообщения. Но вы не забывайте, сейчас мы придумываем магии - предлагайте свои названия магий и картинку магии в действии. Например если это огненый шар, то на картинке должен быть нарисован огненый шар, желательно на белом фоне! Люди поактивней!
Спасибо за внимание
Опять здравствуйте посетители этого топика, я прочитал весь топик и понял, что нам не хватает готовых наработок, чтобы если люди чего-то не допоняли, то обратились, к наработкам и им всё стало ясно. Вот выкладываю весь код по данной игре, на данный момент.
Unit1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, Gauges, MPlayer;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Button1: TButton;
Image6: TImage;
Gauge1: TGauge;
Timer1: TTimer;
Label1: TLabel;
Image7: TImage;
Image8: TImage;
MediaPlayer1: TMediaPlayer;
Label2: TLabel;
Image9: TImage;
Timer2: TTimer;
procedure Image3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image4MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image4Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.Image3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image3.Left:=66;
Image3.Top:=186;
end;
procedure TForm1.Image3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image3.Left:=64;
Image3.Top:=184;
end;
procedure TForm1.Image4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image4.Left:=66;
Image4.Top:=266;
end;
procedure TForm1.Image4MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image4.Left:=64;
Image4.Top:=264;
end;
procedure TForm1.Image4Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.Image3Click(Sender: TObject);
begin
Image1.Visible:=false;
Image2.Visible:=false;
Image3.Visible:=false;
Image4.Visible:=false;
Image5.Visible:=false;
Image6.Visible:=true;
Button1.Visible:=true;
Gauge1.Visible:=true;
Label1.Visible:=true;
Label2.Visible:=true;
MediaPlayer1.Visible:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var x:Integer;
begin
if (key=.) or (key=ю) then
begin
x:=Image5.left;
Image5.Left:=x-7;
Image7.Visible:=true;
Image8.Visible:=false;
end;
if (key=,) or (key=б) then
begin
x:=Image5.left;
Image5.Left:=x+7;
Image8.Visible:=true;
Image7.Visible:=false;
end;
if (key=m) or (key=ь) then
begin
Timer2.Enabled:=true;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var z:Integer;
begin
z:=Gauge1.Progress;
Gauge1.Progress:=z+1;
if z=100 then
begin
Gauge1.Visible:=false;
Image6.Visible:=false;
Image5.Visible:=true;
Label1.Visible:=false;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var y:Integer;
x: Integer;
begin
y:=Image9.left;
x:=Image7.Left;
Image9.Visible:=true;
Image9.Left:=x+y+15;
if (Image9.Left>=x+y+50) then
begin
Timer2.Enabled:=false;
Image9.Visible:=false;
Image9.Left:=x;
end;
end;
end.
Unit2:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Image1: TImage;
Image2: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1Click(Sender: TObject);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left:=34;
Image1.Top:=34;
end;
procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left:=32;
Image1.Top:=32;
end;
procedure TForm2.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left:=210;
Image2.Top:=34;
end;
procedure TForm2.Image1Click(Sender: TObject);
begin
Form2.Close;
Form1.Close;
end;
procedure TForm2.Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left:=208;
Image2.Top:=32;
end;
procedure TForm2.Image2Click(Sender: TObject);
begin
Form2.Close;
end;
end.
Unit3
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
Form3.Close;
Form1.Image1.Visible:=true;
Form1.Image3.Visible:=true;
Form1.Image4.Visible:=true;
Form1.Image5.Visible:=false;
Form1.Image6.Visible:=false;
Form1.Image7.Visible:=false;
Form1.Image8.Visible:=false;
Form1.Button1.Visible:=false;
Form1.Image5.left:=0;
Form1.Gauge1.Visible:=false;
Form1.Gauge1.Progress:=0;
Form1.Label1.Visible:=false;
Form1.Label2.Visible:=false;
Form1.MediaPlayer1.Visible:=false;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Form3.Close;
end;
end.
Сообщение от BEETHOVEN
идея создания игры хорошая, но если вы будете долго думать что создать то у вас ничего неполучется.
Вот пример толкового подхода к проблеме!
Вы, молодые люди, хотите добиться решения проблемы (в данном случае - проявить себя, не так ли) с какой стороны (это я просто спрашиваю...):
- как грамотного сценариста? Увы, в этом случае вы себя абсолютно не зарекомендовали, Близзард вас к себе не пригласит. Более того, сразу могу сказать, вы не тот ВУЗ выбрали (если вы - студент)?
- как талантливого разработчика нетривиального подхода к скоростной обработке графики? У вас тоже не катит, вы же элементарных вещей не знаете и, что самое неразумное, не хотите их узнавать, предпочитая, как уже (не помню кем, но весьма справедливо) было сказано - "изобретать колесо"?
- как талантливого программиста (читай - кодера)? Тогда прошу без всяких там обид перечитать МОЙ предыдущий пост (ненавижу это слово, есть же русское - сообщение) и попытаться его осмыслить. Ну, а если останетесь при прежнем мнении, как говорится "тоды ой"...
За сим, с почтением и с пожеланием всяческих успехов (а уж я чем могу - помогу), ваш Михалыч (это для тех, кто не понял ник Michali4)
Вот я и вернулся. Пардон, серьезные проблемы с подключением, выходить могу только на работе, и то не всегда.
Братишка Mager, пожалуйста забудь про GDI(в третий раз прошу), zetrix выложил нам DelphiX!!!!
Там(в двух словах) рисование делается таким образом.
Кидаешь на форму DXDraw, а само рисование(ЗАБУДЬ ПРО OnPaint!!!) происходит по таймеру(DXTimer).
У DXDraw имеются две поверхности Primary и Surface(это свойства).
Рисовать надо на второй(Primary представляет собой нечто вроде рисования на GetDC(0), т.е. прямо на экран).
Как только закончил рисование на DXDRaw.Surface говоришь ему это - DXDraw.Surface.Canvas.Realise).
А потом переключаешь поверхности DXDraw.Flip и все твое ваяние появляется на экране.
Я думаю, что свое дерево компонентов для DelphiX написать стоит, если не в игре, то все равно пригодится.
вообще для создания современных 3d игр восновном используют с++. он более подходящий для этих целей (хотя я сам не знаю почему). но через делфи всегда можно сделать тоже самое только это будет сложнее.
Писать игру на "C" правильнее, основными аргументами являются:
1) меньший размер файлов (чем в Delphi);
2) разнообразность библиотек и SDK;
3) скорость обработки кода.
Приверженец Delphi может гордо ответить:
1) если писать на WinAPI функциях в Delphi, то размер и скорость обращения к коду практически сравнивается с "С"; Да и при HDD 200 Гб 0,5 мб особой роли не играют.
2) библиотеки и справки под Delphi можно найти тоже очень просто, а если "руки прямые", то и самому можно, транслировать библиотеки с кода "С";
3) на сегодняшний день средний компьютер стал настолько мощным и производительным, что о скорости обработки программного кода можно не говорить. Как видите, Delphi ничем не уступает "С", а, например, в скорости разработки - даже обходит.
Если же придётся работать с 3D графикой, то у меня где-то был набор компонентов DelphiX, там даже сэмплы построения есть.
http://www.glscene.ru/index.php - лучше здесь глянте.
Вот руководство ещё, там как космосим сделать - http://snakesmiles.narod.ru/Manual.rar - 239,6 кб
Я предлагаю начать не 3D, а с 2D игр. Ведь не зная простого не создашь сложного!
Зря. Совершенно разный подход, будете долго разбираться как работать с 2d, а потом в 3d это будет только мешать.
В какой-то степени проблему во весь экран окна решели.
Окно программы на весь экран + смена разрешения экрана.
Это только пример.
Создаем проект - vcl form applic.
Код:
uses OpenGL; // надо добавить.
Код:
procedure TForm1.FormCreate(Sender: TObject);vartd:tdevmode;begin form1.Left:=0;form1.Top:=0; {положение формы} with td do begin dmsize:=sizeof(td); dmbitsperpel:=32; {разрядность цвета} Form1.Width:=800; Form1.Height:=600; dmpelswidth:=800; {разрешение по горизонтали} dmpelsheight:=600; {разрешение по вертикали} dmfields:=dm_bitsperpel or dm_pelswidth or dm_pelsheight; changedisplaysettings(td,cds_fullscreen);end; end;
+ Button на форму (где-нибудь сверху-слева) и в onClick, лучше сделать, при нажатии на Esc выход, но я не помню её код, искать лень.
Код:
procedure TForm1.Button1Click(Sender: TObject);beginclose;end;
http://downloads.sourceforge.net/gls...big_mirr or=0
а пробей ссылочку и глянь тему, что зальётся(38мб).
НИЖЕ темы конкретно могут помочь при создании 3D!!!
думаю в исходниках взять мыла кодеров - вдруг помогут!
http://Micaell.narod.ru/download/Fighting.zip (уже висит выше)
http://Micaell.narod.ru/download/Actor.rar
http://Micaell.narod.ru/download/RTCW_Zombie.zip
http://www.mirgames.ru/articles/opengl.html
http://www.vr-online.ru/download.php
вот интересная ссылка на тему Delphi и не только!
Все для "игроделов" :
http://delphigfx.mastak.ru
Теория, практика, компоненты, примеры и т.д. и т.п.
Если осилите эту инфу, я думаю, прыти и шапкозакидательских настроений поубавится...
приблизительные сценарии(основа для сценария) игры:
РОЛЕВАЯ ИГРА
1. главный герой – борец за справедливость! Есть небольшой выбор героев – есть резон сделать героев на основе русских сказок (думаю, не особо сложно будет сделать поддержку пользовательских моделей героев);
2. место действия – средневековая Россия(Русь), деревни, частокол, кремль, избушки, Киев, Новгород и тд;
3. цель – завоевать как можно больше городов, деревень, земель
4. враги – другие князья, войны, всякие чудища и другая херь лесная;
5. оружие – стандартный набор(мечи, луки тд) и магические заклинания.
ИГРА-ПРИКОЛ
1. главный герой – насекомое(например, таракан);
2. место действия – кухня(при желании можно добавить спальню, туалет и тд);
3. цель – сожрать как можно больше крошек и нагадить во всех углах квартиры(в принципе можно ещё добавить функцию размножения );
4. враги – люди, а главное их руки, тапки, мухобойки и тд;
5. тип – 3D-графическая аркада.
Жду уточнений и предложений(от 3D-дизайнеров – нужны модели тараканов и кухни). Возможно, что ИГРА-ПРИКОЛ будет простым началом для наработки опыта перед последующей реализации РОЛЕВОЙ ИГРЫ.
http://gamedev.ru/
http://www.mirgames.ru/news.html
http://sky3d.sourceforge.net/index.php
Вот... давно собирал, может пригодится...
Языки:
Basic (Dark & Blitz), dephi - если что, могу выложить пару прог на делфи... так... утилитки, посмотреть. На Дарке ни чего не осталось уже, на blitz3d есть наработка старая, но там исходники.
Редакторы 3D:
Есть такая "Doga-L1", в игру ей модели не сделаешь, но простая в освоении... я раздавал её знакомым... модели техники всякой делали.. есть оригинальные очень... теперь тока в 3д максе по ним сделать нармальные...
Откуда:
Камчатка
Сеанс связи:
с 12 до 18 по московскому... но могу пропасть месяца на четыре...
Хочу:
Да так... может чем и помогу...
Думаю до нового года закончу чем счас занимаюсь и возьмусь за GLScene... давно на него кошусь.
ICQ#: 190-109-751
Думаю надо бы попросить форумских сделать раздел... написание там игр, например... и там всё это организовывать. Можно по каждой игре тему. И по вопросам тоже разные темы. Так что - организовывайте.
По рпг... а собственно тут есть кто-нить кто может сделать модели людей с анимацией... Не знаю как в делфиХ, в glScene поддерживается формат квейка2, там в одном файле можно разные анимации сразу. Хотя можно и 3д макса формат конвертнуть...
http://infiltration.ru/p/base.htm - вот тут ещё глянуть можна, там рассылка по программированию на турбопаскале, в часности - рпг (квесты, монстры, всё такое...)
p.s. я вот делал... на blitz3d...
http://snakesmiles.narod.ru/Primer.JPG
http://snakesmiles.narod.ru/Primer2.JPG
Ну.. сделаем одну... сильно сказано.
На пример надо всё таки определиться на чем делать...
glScene, delphiX... или может ещё что...
Да и по моему лучше не с игры начать... а на игровом движке сделать 3д вьювер...
во-первых нормальных их нету... монстры триальные типа 3DDeep, это не удобно...
во-вторых можно прикинуть как модели будут выглядеть в игре... хотя б примерно...
в-третьих подойдет для изучения основ 3д...
Исходники потом кинуть... и те кто позже захотят присоединиться могут уже на чем-то по тренироваться...
В теории дело плевое... на glScene на пару дней работы...
сам бы сделал... да только вот уже год как руки до него не доходят... Ну не получилось с наскока поставить, а счас вроде и без него куча всего...
p.s. если кто ставил на delphi`05 glScene подскажите как... а то факи лежат, да чуствую не скоро до них руки дойдут....
Сообщение от parasite_eve
мне нужно вывести сетку 5*5 для игры в каторую будут помещаться карты
как это сделать при помощи LineTo-?
Вот примерчик
Вложение 164
Когда-то пытался делать РПГ, да забросил, пока не до игры. Вот хочу поделится соображениями по поводу анимации. Лучше использоать битовый буфер, а не тупо передвигать Image вместе с меняющейся в нем картинкой по таймеру, тогда раскадровку в легкую можно увеличить до 24 кадров, что будет явно лучше "слай-шоу" из 9 кадров.
В своей моодели применил 16 кадров (за неимением остальных) загружаемых с диска, а сам Image использовал в качестве невидимой для глаза области, на которую можно будет нажать и будут производится какие-нибудь действия, или будет выводится меню с командами.
Сильно не цепляйтесь к коду, можно и сжать до минимума, но для начала можно и так.
Умникам скажу следующее: "Не учите жить, помогите лучше материально!"
Mager так сразу не получится, магия вешь второстепенная, т.е. все прибамбасы идут потом. Сначала надо смоделировать простую дуель с применением оружия (к примеру меч). Если я не ошибаюсь мстить герой собирается не мысленно, основное направление - битва. Поставим пугало и смоделируем поползновения героя вокруг него и имитацию атаки мечем, разумеется с потерей жизни у онного, вот тогда народ и потянется .
Здравствуйте уважаемые читатели этой темы. Я не настаиваю на создании именно 2Д игры, если Вы считаете, что мы справимся и с 3Д, то я с радостью соглашусь. Но в этом я лично ничего не понимаю, давайте предлайте с чего начать. Сценарий был написан давно(прочитайте в начале темы!). Супер сценарий писать не надо, мы же продавать её не собираемся, а хотим всего лишь научиться! Надо сделать полноценную игру с врагами, боями, магиями, сохранениями и уровнями. Незнаю осилим ли мы хотябы 50% этой работы, но давайте попробуем, но если не будет активности, верномся к 2Д игре. Давайте, я думаю надо начать с прорисовки героя, текстур, врагов и карт. Поделитесь опытом, где Вы это делаете и в каких форматах сохраняете. Из этого всего я знаю как делается текстуры, в любом графическом редакторе(например PhotoShop), в формате JPG. А остальное я не знаю, поэтому плиз пишите в каких программах это делать. И начнём! С уважением mager.
Почитал как-то раз в самом начале, раза два в середине и читаю сейчас: тема - очень хорошая дискуссия. на месте zetrix позволил бы себе кинуть подобный пост: "Извините, тема сжимается" и удалил бы больше половины сообщений...
Из одного лишь сообщения беру все ответы...
Народ, чем вы здесь занимаетесь? Ответ:
Сообщение от micaell
В этой теме мы только и занимаемся что спорим что лучше, а что хуже(3D или 2D)!!!
А о чем думаете? Ответ:
Сообщение от micaell
Давайте для начала сценарий накатаем! Ведь он и для того и другого пригодится!
А как вы собираетесь все реализовывать? Ответ:
Сообщение от micaell
Потом разделимся на тех кто будет делать 3D и 2D, а уже потом посмотрим кто лучше реализовал замысел сценария!
А теперь скажите: вы долго смеялись? Я нет. Потому что вы думаете о том, как что-то нарисовать, придумать сценарий и положить все на 3D движок. Зачем???? Создайте сначала пакмана (PacMan)!!! Да куда там... Вы хоть на FullScreen вышли? Подумайте о самом проекте: в начале были хоть какие- то обсуждения - GDI, DelphiX, а сейчас: как его украсить или создать нелинейный сюжет с переплетением времени и пространств...
Подумайте о написанном...
НУ тогда я думаю моя помощь вам пригодиться! если не прогоните ))
Завтро я постораюсь выложить процедуру полноэкранного отоброжения изоброжения!
Кста а какого рода эта игра будит? Rpg? 2d шутер? Если RPG то опять же завтро постораюсь выложить систему параметров персонажа (Тоесть накидывание персонажа сила ловкость и др не менее важные характеристики ) также у меня есть в разработке система боя но так как я не достаточно хорошо разбираюсь в Delphi я не знаю возможно ли её будит интерпретировать в игру (
Сообщение от Mr.Dmitry
Я студент алгоритм конечно я не пиши но четко предстовляю его у себя в голове
ребят! вы всю жизню студентами будете? всю жизнЮ будете проги мелкие писать? если хотите действительно выйти в люди(хотя бы стать руководителем проекта), то вам просто необходимо знать все аспекты программистской деятельности - ОАиП, ТРПП и т.д. иначе вам не видать карьерного роста .
короче всё! ни слова в сторону!!! кидаем исходники!!! даём предложения по ИГРЕ!!
Сообщение от AVer
По прохождении некотороко времени, в зависимости от того как участники проявят себя в работе, состав группы будет редактироваться. В итоге мы получим группу готовую к работе.
Это все сильно напоминает: "Давайте, делайте кто че может, кидайте исходники Мне, а после, как выдохнитесь, Мы вас выкинем за ненадобностью".
Оч хорошая идея была со стороны "теоретиков-утопистов" - писать (не писать) кто чего может и выкладываь, ... вполне согласен, добавлю только, что голосованием можно выбирать лучшие вырианты (если они будут кончно).
И вообще, кончайте ставить друг друга "на место", все равно вскоре выяснится кто, где "стоит", и чего "стоит", а топик, он не ризиновый.
Собственно вот как я и обещал. Форма запускаеться во весь экран и изменен курсор.
Сообщение от Mr.Dmitry
Собственно вот как я и обещал. Форма запускаеться во весь экран и изменен курсор.
Class TDXDraw not found!!!
Надо компонеты DelphiX ссылку кто то довал уже здесь но на всякий случай вот еще
Сообщение от Beermonza
Это все сильно напоминает: "Давайте, делайте кто че может, кидайте исходники Мне, а после, как выдохнитесь, Мы вас выкинем за ненадобностью".
Оч хорошая идея была со стороны "теоретиков-утопистов" - писать (не писать) кто чего может и выкладываь, ... вполне согласен, добавлю только, что голосованием можно выбирать лучшие вырианты (если они будут кончно).
И вообще, кончайте ставить друг друга "на место", все равно вскоре выяснится кто, где "стоит", и чего "стоит", а топик, он не ризиновый.
Beermonza, похоже ты и малейшего представления не имеешь о работе в команде. "Писать кто что может и выкладывать..." Скажи мне, ты читал нетленное произведение "Лебедь, рак и щука"? Так вот примерно это мы и получим. Каждый быдет (если будет) писать все так, как хочется именно ему. А кто потом будет собирать это все в один проект? Или трвоя игра будет работать по принципу "Для перехода в режим боя завершите приложение и запустите Бой.ехе"? "Давайте, делайте кто че может, кидайте исходники Мне, а после, как выдохнитесь, Мы вас выкинем за ненадобностью" Если ты и всерьез так считаешь, то я тебе предлагаю писать игру в гордом одиночестве, а потом выбрать лучший из всех вариантов.
Единственный кто готов к работе в этом разделе - Mr.Dmitry. Он не говорит "не очем" а предлогает конкретные примеры для их дальнейшего развития. Но если он будет работать один, то много ли принесут его поползновения? В данном случае команда - основа работы...
Сообщение от AVer
Для перехода в режим боя завершите приложение и запустите Бой.ехе
БАЛ ЗА АКТИВНОСТЬ!!! это лучшая фраза темы!!! скидываемся на приз!
Есть такое предложение: раз мы делаем 2Д, то всех героев можно было бы реализовать как gif-анимацию перемещаемую по экрану.
Насчет GIF-анимации не знаю, но мне понравился пример, который предлогал Beermonza в посте №88 http://programmersforum.ru/attachmen...7&d=1166302902.
Gif-анимация весит меньше чем BMP и это упростит код! нужно просто подключить поддержку Gifа!!!
Ура! Свершилось! Наканец-то Alar сделал этот раздел! Спасибо ему огромное! Хоть путаницы меньше будет...
Давайте подумаем что сейчас нам нужно!
1 нам нужна анимация главного пресонажа как он двигаеться ведение боя и т.д. Можно зделать как роедложил micaell
Есть такое предложение: раз мы делаем 2Д, то всех героев можно было бы реализовать как gif-анимацию перемещаемую по экрану.
2 Анимация