Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание игры

17K
07 сентября 2006 года
DIME
24 / / 07.09.2006
Предлагаю собраться людям разбирающимся в DirectX для написания игры.
Страницы:
10
18 декабря 2006 года
Freeman
3.2K / / 06.03.2004
Цитата: Lerkin
Все прошлые задумки для 2-х карт утрясались.


Просуммируй мои предложения - я для единой карты проектировал.

Цитата: Lerkin
Хотя тут есть свои плюсы. Корабль противника становиться виден на определенном расстоянии от какого-нибудь корабля, в зависимости от дальности радара (и если он на нем установлен). Я правильно понимаю твою идею общей карты?


Да. Можно ещё ввести дальнобойность артиллерии и ракет - единственный физический параметр, абстрактный по своей природе.

9
18 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Freeman
...
Да. Можно ещё ввести дальнобойность артиллерии и ракет - единственный физический параметр, абстрактный по своей природе.



Ок. Я уже согласен на общую карту :). Надеюсь, подлодок не будет?

P.S. Ты бы уже поднакидал примерный планчик. У меня, вишь, не получается...

10
18 декабря 2006 года
Freeman
3.2K / / 06.03.2004
Цитата: Lerkin
Надеюсь, подлодок не будет?


Как захотите. Добавление нового юнита не принципиально, главное - баланс возможностей соблюсти, тогда интересно играть будет.

Цитата: Lerkin
Ты бы уже поднакидал примерный планчик. У меня, вишь, не получается...


Не-е-е, я лучше у туалета пританцовывать буду: и так два проекта висит, а третий наклёвывается. Четыре - это перебор.

63
18 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Цитата: Lerkin
Я уже на данном этапе обсуждения не представляю, как это будет в коде выглядеть...


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

Я, конечно, не могу оценить ващи знания и возможности, и потому считаю, что надо переходить от обсуждение абстрактных вещей к чему-то конкретному, например - написанию концепции игры.

P.S. Я не пессимист, просто стараюсь смотреть на вещи трезво. И буду очень рад, если меня убедят, что мои слова необоснованны:)

9
18 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Zorkus
... Сначала попробовать реализовать морской бой, в его классическом виде.



Вот! Вот, блин! И я, с самого своего вмешательства, толкал эту мысль. Каюсь, потом несколько увлекся. :)

Цитата: Zorkus
...
никто так и не ответил на вопрос, который тут ставился много раз - доводились ли до чего то материального проекты, начатые на форуме?



Насколько я узнал на других форумах, игровые проекты - никогда. Если дело и доходило до исходников, то в ТАКОМ примитиве... Когда-то ребята на gamedev.ru пытались что-то реализовать. Но тема улетела, куда-то в сторону создания универсального графического интерфейса, при использовании которого, не имело значения какую библиотеку использовать: DirectX или OpenGL (и что-то еще)...

Цитата: Zorkus
... считаю, что надо переходить от обсуждение абстрактных вещей к чему-то конкретному, например - написанию концепции игры.



Да я согласен. Но мы не определили, ЧТО, все-таки начать писать. Никакого ПРЕДВАРИТЕЛЬНОГО подведения итогов не было.

63
18 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Согласен, поэтому вот мое предложение. Писать обычный, классический морской бой, в котором 2 человека играют по сети между собой. Мнения?
9
18 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Zorkus
Согласен, поэтому вот мое предложение. Писать обычный, классический морской бой, в котором 2 человека играют по сети между собой. Мнения?



Поддерживаю. Пишется классический морской бой для сети.
Вопросы: язык, уровень графики, target platform?

533
18 декабря 2006 года
Visualex
254 / / 07.01.2005
Ребят, может попробовать пока такой план составить?
1. Пишем классику, 2поля 10х10, стандартный набор кораблей, принцип игры стрельнул: убил, ранел, мимо... победил.
2. Раз построен механизм игры, можно расширять, думать о дальности выстрелов, можности оружия, специализации кораблей и т.д.

ps: опять предлагаю мою первую версию этапов разработки... т.е. отталкиваясь от классики...
533
18 декабря 2006 года
Visualex
254 / / 07.01.2005
И кстати вопросы на счет среды:
Как уже предлагал Visual C++6
Графику предлагаю использовать в приложении MFC (Dialog) 2D.
63
18 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Язык - это надо опросить всех тех, кто будет писать. Мое мнение - можно ограничиться стандартными средствами любой приличной оконной библиотеки для отрисовки, будь то qt, jambi, swing , windows forms... А Платформа - можно наверно и под win32 / linux, ниче непереносимого не требуется.
11K
18 декабря 2006 года
Salamansar
83 / / 29.11.2006
[QUOTE=Zorkus]А Платформа - можно наверно и под win32 / linux[/QUOTE]
И я того же мнения.

Я к сожалению (как я уже не однократно говорил) не умею програмировать на С++, Visual C и других подобных языках :( :( :(
Но если я хоть для чего нибудь пригожусь, то буду рад помочь.

Кстати, может попробовать сделать ИИ? В классическом "Морском бое" его будет не трудно сделать. У меня есть некоторые соображения на эту тему, если надо, могу рассказать поподробнее.
9
18 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
И все таки, а почему не ограничиться API? Или там графики много? Цеплять MFC - увольте... Qt - тяжелую библу с собой таскать... нужна маленькая шустренькая программка....

jambi, swing - это что за звери?
9
18 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Salamansar
И я того же мнения.

Я к сожалению (как я уже не однократно говорил) не умею програмировать на С++, Visual C и других подобных языках :( :( :(
Но если я хоть для чего нибудь пригожусь, то буду рад помочь.

Кстати, может попробовать сделать ИИ? В классическом "Морском бое" его будет не трудно сделать. У меня есть некоторые соображения на эту тему, если надо, могу рассказать поподробнее.



Расскажи. И еще: для сети пишешь?

11K
18 декабря 2006 года
Salamansar
83 / / 29.11.2006
Основная концепция ИИ "Морского боя" - случайность. Это основной элемент, но стандартный генератор чисел (по крайней мере на Pascal) не достаточно хорошо делает разброс цифр. Таким образом получается, что клетка (10;10) меньше всего будет атаковаться компьютером. Это применимо только для низкого уровня сложности. Для высокого нужно разработать другой алгоритм. Основой все-таки будет случайность. Но случайность не в выборе клетки а в выборе алгоритма действия. Другими словами я предлагаю сделать комплексный алгоритм, со случайным переключением между ними, причем чем больше будет "элементарных" алгоритмов, тем лучше. Таких комплексов я придумал несколько (конечно их можно и нужно дополнить):
1. Чистая случайность (думаю в описании не нуждается);
2. Обстрел областей - поле делится на более большие квадраты, затем выбирается случайный такой квадрат, и в нем уже выбирается клетка. Преимущества данного типа - меньше чисел квадратов - больше процент выпадания каждого из них;
3. Диагональный или крестовидный обстрел - выбирается клетка на поле, затем от нее генерируется расстояние и направление в неочень больших пределах;
4. Спиралевидный обстрел или обстрел "лопуха" - вокруг выбраной клетки производится обстрел каждой соседней клетки по спирали, наращивая радиус;
Данные алгоритмы имеют произвольную продолжительность и выбираются случайно. Естественно при попадании компьютер начинает обстреливать соседние квадраты, пока не уничтожит корабль.
Таким образом можно сформировать разные уровни сложности.
Я не утверждаю, что данные алгоритмы хороши (я даже на это и не надеюсь), но может какое нибудь понравится? :)

P.S. Все что я умею - Pascal. К сожалению я имею только общее представление о сетях вообще, не говоря уже о их организации в языках програмирования:(
63
18 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Мне казалось, что писать что то прикладное на WAPI - то мазохизм?:)
И потом, в перечисленных мной библиотеках есть высокоуровневые средства для работы с сетью. На апи придется все сетевое писать на WinSock2, а у меня о нем плохие воспоминания. (Хотя - может я тут один прикладник, а все остальные на асме шпарят?;))

P.S. swing - это родная граф. библиотека явы, от sun, а jambi - это плагин к qt под яву, грубо говоря.
63
18 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Salamansar - алгоритмы хороши. По крайней мере для не высшего уровня сложности сойдут:) Тогда на чем акцент - ИИ или сеть?
11K
18 декабря 2006 года
Salamansar
83 / / 29.11.2006
Еще один забыл пункт - он нечестный, но почти во всех играх он присутствует - читерство, т. е. элементарное подглядывание.:)
Про выбор ИИ или Сеть - даже не знаю, что лучше. Но я вот что думаю - раз игра не по турам, а по партиям, то нужно ввести систему рейтингов - это особенно интересно в сетевой игре, согласитесь приятно иметь звание "Адмирал Флота":) Естественно нужно сделать динамическую систему, т.е. работает правило: "сложно не захватить, а удержать". Можно будет тогда устраивать турниры. Ой че-то я замечтался:rolleyes:
533
18 декабря 2006 года
Visualex
254 / / 07.01.2005
Цитата:

Salamansar - алгоритмы хороши. По крайней мере для не высшего уровня сложности сойдут Тогда на чем акцент - ИИ или сеть?


Думаю изначально лучше акцентировать на ИИ, даже не сложный алгоритм... чисто для тестирования...(на начальной стадии) а далее будет видно.

9
18 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Ну, так тому и быть :) Salamansar, ты DLL'ку склепать смогёшь? Одна функция, по идее...

Я тоже чё-нить сделаю... Но предупреждаю, я сильно загружен по работе. Так что - чудес не будет ;)...

Кстати, писать буду на С\С++...
11K
18 декабря 2006 года
Salamansar
83 / / 29.11.2006
[QUOTE=Lerkin]Ну, так тому и быть Salamansar, ты DLL'ку склепать смогёшь? Одна функция, по идее...
[/QUOTE]
К своему стыду ни разу не сталкивался и имею только общее представление:( Но так как эта вещица используется даже в Pascal, то думаю мне не составитт особого труда ее изучить, тем более, что спешить мы не собираемся (вроде бы) :)
533
19 декабря 2006 года
Visualex
254 / / 07.01.2005
Вчера часок посидел, у кого какие предложения???
Код:
int x=BEGIN_POINT;//30
    int y=BEGIN_POINT;
    int k = 300;
    int size = 24;
    CClientDC dc(this);
    CPen pPen;
    pPen.CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
    dc.SelectObject(&pPen);
    dc.Rectangle(x, y, size*10+x, size*10+y);
    dc.Rectangle(x+k, y, 240+x+k, 240+y);
    int i;
    for(i=0; i<10; i++)
    {
        dc.MoveTo(x, y);
        dc.LineTo(x+size*10-1, y);
        dc.MoveTo(x+k, y);
        dc.LineTo(x+k+size*10-1, y);
        y+=size;
    }
   
    y=BEGIN_POINT;
    for(i=0; i<10; i++)
    {
        dc.MoveTo(x, y);
        dc.LineTo(x, y+size*10-1);
        dc.MoveTo(x+k, y);
        dc.LineTo(x+k, y+size*10-1);
        x+=size;
    }
   
    x=BEGIN_POINT;
    char lbl = 'A';
    x+=7;
    y-=18;
    for(i=0; i<10; i++)
    {
        dc.TextOut(x, y, lbl);
        dc.TextOut(x+k, y, lbl);
        lbl++;
        x+=size;
    }
   
    x=BEGIN_POINT;
    x-=20;
    y+=20;
    for(i=1; i<=10; i++)
    {
        dc.TextOut(x, y, itoa(i, &lbl, 10));
        dc.TextOut(x+k, y, itoa(i, &lbl, 10));
        y+=size;
    }

При нажатии на ОК срабатывает код, пока примитивно но прошу высказать мнения...
533
19 декабря 2006 года
Visualex
254 / / 07.01.2005
хм, почемуто файл не прикрепился...
вот еще раз
63
19 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Salamansar -> Dll: http://citforum.ru/book/cook/dll0.shtml
тас написано не глубоко, но быстро и понятно. А глубоко - Рихтера читай.
9
19 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Visualex
...прошу высказать мнения...



А может, просто картинку на поле кидать? Хотя, тут это не принципиально...

533
19 декабря 2006 года
Visualex
254 / / 07.01.2005
Цитата:
А может, просто картинку на поле кидать? Хотя, тут это не принципиально...


Так имхо будет лучше, т.к. при расчетах кликов мышки будет удобнее определять заданный квадрат.

63
19 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Возможно, стоит использовать массив квадратов, каждый из которых состоит из нескольких клеток? И каждый квадрат - отдельный виджет, возможно, тогда будет проще писать ИИ? Как кто думает?
533
19 декабря 2006 года
Visualex
254 / / 07.01.2005
Цитата:
Возможно, стоит использовать массив квадратов, каждый из которых состоит из нескольких клеток? И каждый квадрат - отдельный виджет, возможно, тогда будет проще писать ИИ? Как кто думает?


Думаю не стоит, лишние заморочки. Если использовать массив квадратов, то мне кажется только в разработке модуля ИИ.

9
19 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Мне представляется это так:
Для каждого игрока, имеем 2 двумерных массива 10х10. Тип, ну, можно использовать unsigned char.
Кодировка:

1. Для игрока: 0 - пустое место, 1 - место куда попал противник, 2 - палуба корабля, 3 - подбитая палуба.
2. Карта радара: 0 - неизвестное состояние, 1 - подбитая палуба противника.

(Вообще, можно использовать и кодировку по битовым полям.)

"Рендер" - будет прорисовывать каждое из полей, в зависимости от их расположения в массиве, и согласно коду. Имхо, надо иметь 4 маленькие картинки: пустое место, палуба корабля, подбитая палуба и для отметки места промаха. Или не картинки, а обыкновенную цветовую заливку по сетке, предложенной Visualex (все равно, перерисовки не будет).

В плане ИИ или сети: От противника, нам передаются координаты выстрела, а от нас ответ: попал или не попал. У него это помечается на карте радара. Тоже самое и "с другой стороны"... Наверное, тупо объяснил...
63
19 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Цитата: Lerkin

(Вообще, можно использовать и кодировку по битовым полям.)


Думаю, особого смысла нету. Память беречь, или производительность повышать? Зачем? :)

11K
19 декабря 2006 года
Salamansar
83 / / 29.11.2006
[QUOTE=Lerkin]В плане ИИ или сети: От противника, нам передаются координаты выстрела, а от нас ответ: попал или не попал. У него это помечается на карте радара.[/QUOTE] В плане сетки согласен, но зачем ИИ передовать? Ответ ему десять лет не нужен - от него будет только нужно заполнить свой массив и делать выстрелы, все остальное его не касается (это для самого примитивного ИИ - на ГСЧ).
Массив должен быть 12х12 и дублировать поле со смещением (х+1,у+1).
Лишние четыре линии нужны для "бордюра", т.к. вокруг кораблей должна быть "прослойка" из единиц (к примеру) - обозначений того, что ставить сюда корабли нельзя. Лучше использовать такие обозначения:
0-пустое поле;
1-то же самое, но учитывается при постановке кораблей как ограничитель (сюда ставить нельзя);
2-не поврежденный корабль;
3-подбитая клетка;
4-подбитая палуба.
Помимо этого нужно предусмотреть 2 состояния подбитых кораблей: подбита 1 палуба или корабль убит. Здесь можно сделать подсказку игроку - раз ставить рядом корабли запрещено, то поля вокруг убитого корабля отмечаются как подбитые. Это все конечно необязательно должно быть так, но может что-то пригодится.:)
9
19 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Salamansar
... но зачем ИИ передовать?



А что бы взаимодействие с сетью и ИИ не сильно различалось. Оптимальнее...

Цитата: Salamansar
...
Массив должен быть 12х12 и дублировать поле со смещением (х+1,у+1).
Лишние четыре линии нужны для "бордюра", т.к. вокруг кораблей должна быть "прослойка" из единиц (к примеру) - обозначений того, что ставить сюда корабли нельзя. Лучше использовать такие обозначения:
0-пустое поле;
1-то же самое, но учитывается при постановке кораблей как ограничитель (сюда ставить нельзя);
2-не поврежденный корабль;
3-подбитая клетка;
4-подбитая палуба.



Не, 10х10. Больше не надо. У тебя ведь размер поля 10х10? Так зачем платить больше? :). За бордюр отвечает подсистема контроля размещения кораблей. А в массиве, можно указать еще один код для обозначения "зоны отчуждения :)", бордюра то бишь...

Цитата: Salamansar
...
Помимо этого нужно предусмотреть 2 состояния подбитых кораблей: подбита 1 палуба или корабль убит.



А зачем? Как только корабль убит, будет появляться... этот...как ты предложил, короче. см.ниже :)

Цитата: Salamansar
...
Здесь можно сделать подсказку игроку - раз ставить рядом корабли запрещено, то поля вокруг убитого корабля отмечаются как подбитые. Это все конечно необязательно должно быть так, но может что-то пригодится.:)



Это грамотно. Надо реализовать...

9
19 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Zorkus
Думаю, особого смысла нету. Память беречь, или производительность повышать? Зачем? :)



И то верно... это я так, оптимизирую :)
Да, да, знаю: "Преждевременная оптимизация - корень всех бед". Не смог удержаться... :)

63
19 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Цитата: Lerkin
И то верно... это я так, оптимизирую :)
Да, да, знаю: "Преждевременная оптимизация - корень всех бед". Не смог удержаться... :)


Со мной тоже бывает.
Кстати, оффтоп, но все же, вспомнилось, тут говорили про оставление лазайки для читерства. Вспомнил, как в одной из версий фифа играли на максимальном уровне сложности вратари, мы так и прикалывались - "судя по тому, какие клавиши вы нажали, пенельти будет в правый нижний...с вероятностью 100%"...:)
Так насчет языка, платформы - опять ушло в сторону:) На чем остановились то? И графики, встроенная, в оконные либы, как я предлагал, или opengl например?

9
19 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Zorkus
...или opengl например?



Хочу OpenGL!!! Обожаю её, заразу... :)

11K
19 декабря 2006 года
Salamansar
83 / / 29.11.2006
А разве DirectX не лучше OpenGL? Или просто для такого проекта нет смысла DirectX использовать?
[QUOTE=Lerkin]За бордюр отвечает подсистема контроля размещения кораблей.[/QUOTE]В таком случае надо кучу проверок придумать - нужно же будет метками все поля вокруг корабля заставлять, а при выключеном контроле переполнения строка, которая не поместилась на верх, будет внизу. Или в Visual C все по-другому устроено?
9
19 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Цитата: Salamansar
А разве DirectX не лучше OpenGL? Или просто для такого проекта нет смысла DirectX использовать?



Ну, не в этом дело. Честно говоря, для продолжения и развития проекта, лучше использовать DirectX, в разрезе DirectDraw. Но!
При этом:
Переносимость кода - NULL (NIL).
Зависимость от версии DX - 100% (хотя можно использовать интерфейсы DX7)...
А так же и другие сложности.

Цитата: Salamansar
...
таком случае надо кучу проверок придумать - нужно же будет метками все поля вокруг корабля заставлять, а при выключеном контроле переполнения строка, которая не поместилась на верх, будет внизу. Или в Visual C все по-другому устроено?



Среда здесь не причем. Грамотно алгоритм размещения прописать и все.
P.S. Контрол - что имеется в виду? Если визуальный компонент, так таких у нас не будет...

533
20 декабря 2006 года
Visualex
254 / / 07.01.2005
Я всетаки предлогая сделать на базе диалога. Просто напросто отработается механизм... А делее перейдем к 3D среде.
И на счет кораблей такая мысль давно возникла:
(естественно красивыми картинками прорисовать)
[==> -четырех палубный
[=> - 3x
<> || [> - 2x
# - 1x
Палубы у всех кораблей одинаковые, разница в кормовой части и в носовой.
[quote=Lerkin]
1. Для игрока: 0 - пустое место, 1 - место куда попал противник, 2 - палуба корабля, 3 - подбитая палуба.
2. Карта радара: 0 - неизвестное состояние, 1 - подбитая палуба противника.
[/quote]
По второму пункту вопрос: Промахи учитываются? Пока вроде корабли не "плавают", или это с учетом их перемещения?
9
20 декабря 2006 года
Lerkin
3.0K / / 25.03.2003
Да, пока не плавают, и сейчас, разумеется, никакой графики не будет. Так, самый примитив...
Эта простенькая программка должна показать, есть ли интерес к написанию основной игры.
11K
20 декабря 2006 года
Salamansar
83 / / 29.11.2006
[QUOTE=Visualex]По второму пункту вопрос: Промахи учитываются?[/QUOTE] Конечно учитываются! Это нужно, чтобы 100 раз по одной и той же клетке не бить, а то нажал случайно и выстрелил в никуда, тем более это важно знать компу.
На счет графики - так как нет разделения на разработчиков, то для графики на первых порах можно взять простые квадраты, потом сделать библиотеку объектов. Сначала нужно сделать движок, а оформление потом. Главное как можно больше графики вынести в процедуры, чтобы не мешались в коде движка. Потом просто заменить эти процедуры на объекты из библиотеки и все дела.:)

P.S. Можно конечно сделать разделение обязанностей, но т.к. участников мало, а пишущих на нужном языке и того меньше, то эта идея вряд ли получит свое развитие.
63
20 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Цитата: Lerkin
Ну, не в этом дело. Честно говоря, для продолжения и развития проекта, лучше использовать DirectX, в разрезе DirectDraw. Но!
При этом:
Переносимость кода - NULL (NIL).
Зависимость от версии DX - 100% (хотя можно использовать интерфейсы DX7)...
А так же и другие сложности.


Насколько я знаю, Opengl например поддерживается нормально (если не хорошо) в mfc и qt, а вот насчет поддержки DX - совсем не уверен.
Писать же все не в оконной библиотеке, а а fullscreen.. не знаю, насколько будет сложно и нужно ли?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог