Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2016, 16:18   #1
Hex1986
 
Регистрация: 12.05.2011
Сообщений: 6
По умолчанию Движок 2D Гонок

Навеяла на меня как то мысль сделать что нибудь в стиле 8(16) битных игр. И вот в итоге настрочил что то похоже, конечно много чего еще нет - атрибутов у дороги(деревья, дома, и прочие пейзажи), машин на дороге( куда же без них), и поворотов дороги..Ну и музончика, конечно 8 битной) Это в принципе не все так не подъемно. Можно сделать, если кому интересно пишите.. Нужен конечно же Художник, ну желательно еще программист для написания редактора уровней..Тогда мечта прокатится с ветерком и разными приколами по 16 битному миру станет реальностью..Надеюсь у меня есть единомышленники.

https://yadi.sk/d/u0RHV1qxrhpEy
Изображения
Тип файла: jpg bike.jpg (60.6 Кб, 147 просмотров)
Hex1986 вне форума Ответить с цитированием
Старый 15.05.2016, 11:59   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Если нажать и держать кнопку вперёд, то разметка дороги какое-то время движется, а потом останавливается

Мне кажется, игру будет интересно делать по принципу прохождения. То есть у вас сейчас игра бесконечная, а нужно добавить финиш: красную полосу, чтобы, например, через 10 секунд езды мотоцикл пересекал полосу, игроку выдавалось сообщение: "Поздравляем! Вы победили!" и игра начиналась бы с начала

Далее, можно начать усложнять игру: добавить препятствия, чтобы при наезде на них игрока отбрасывало на старт, потом повороты и т.д.

Последний раз редактировалось 8Observer8; 15.05.2016 в 12:03. Причина: Орфография
8Observer8 вне форума Ответить с цитированием
Старый 31.05.2016, 09:52   #3
rhiroceros
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 23
По умолчанию

Hex1986, Вы уже потеряли интерес к созданию 2D гонок? или еще есть запал?
rhiroceros вне форума Ответить с цитированием
Старый 31.05.2016, 14:26   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

К сожалению, так бывает у многих начинающих. Не терять запал - это самое основное в программировании
8Observer8 вне форума Ответить с цитированием
Старый 31.05.2016, 18:48   #5
rhiroceros
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 23
По умолчанию

кто подхватит начинание Hex1986? или может он сам?
готов внести свою лепту:
6 июня выйду из отпуска и после этого готов реализовать следующую функциональность:
сделаю редактор карт с сохранением в файл. каждая трасса отдельный файл.
трасса будет иметь следующие ограничения:
поворот это один участок , трасса не имеет развилок и пересечений.
формат файла не важен , т.к. считывание трассы в игре будет реализовано через следующий интерфейс:

// участки трассы
TWayType =
(
wayVertical, // вертикальный
wayHorizontal, // горизонтальный
way1Turn, // поворот - выглядит как дуга окружности соответствующий 1 четверти
way2Turn, // поворот - выглядит как дуга окружности соответствующий 2 четверти
way3Turn, // поворот - выглядит как дуга окружности соответствующий 3 четверти
way4Turn // поворот - выглядит как дуга окружности соответствующий 4 четверти
);

TWay = class
public
constructor Create; virtual;
destructor Destroy; override;
procedure LoadFromFile(FileName: string); // загрузить трассу из файла
procedure First; // в начало трассы
procedure Next; // следующий участок трассы
function Eof: Boolean; // true - это конец трассы
function Get: TWayType; // текущий участок трассы
end;

пишу на delphi, код предлагаю сделать открытым.

Последний раз редактировалось rhiroceros; 31.05.2016 в 21:53. Причина: уточнение
rhiroceros вне форума Ответить с цитированием
Старый 06.06.2016, 13:31   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Смотрел я эти гонки.
К сожалению, не отражено даже зачатков того, что может быть ключевыми фичами, того что цепляло бы.
Примитивный раннер может и можно получить, но тут в основном работу художника надо, а не программиста, а художника на шару для немалого объёма графики сложно искать.
К тому же для десктопа такие игрули почти неактуальны, на мобайле ещё куда ни шло, но надо освоить поболее, чем имейджи и/или канвас.дро.

А Вы, rhiroceros, с какой целью интересуетесь ?
Желаете поучаствовать в небольшом проекте ?
Стремление хорошее, бесспорно. Но есть пару замечаний. Лучше вливаться в проект с большими наработками - концепты, фичи, наброски, а недодемка - не главное. Также код стоит оформлять по правилам форума (теги CODE или кнопочка #), ну это так, к слову.
А по самому коду есть замечания: constructor Create; virtual; - в простых классах виртуальный конструктор не нужен, можете аргументировать его виртуальность ? function Eof: Boolean; - задействовать одно из системных (из модуля систем, хоть оно и не зарезервированное слово), не лучшая практика - может сбивать с толку при чтении и отладке, а в некоторых редких случаях приводить к ошибкам (например, с with), к тому же эта функция исконно обозначает конец файла, и комментарий показывает, что Вы хотите эту логику модифицировать, что опять же мешает восприятию.
Однако, есть и хорошие моменты - Вы сразу предлагаете абстрагировать работу через общий "контракт", а также выделаяете бизнес-логику на первое место, развивая терминологию и модель работы в терминах предметной области, сразу описываете условия и принципы работы , это очень хорошо !
phomm вне форума Ответить с цитированием
Старый 12.06.2016, 13:08   #7
rhiroceros
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 23
По умолчанию

Для phomm:

Ох, не хотелось писать, пока редактор карт не выложил, но молчать то же показалось не уместным.

"Смотрел я эти гонки.
К сожалению, не отражено даже зачатков того, что может быть ключевыми фичами, того что цепляло бы"...

Пусть даже так.
Но я не нашел ни на этом сайте, ни в интернете подробной информации,
как сделать 2d гонки - готовое работающее приложение с кодом, приличной архитектурой,
с рассуждениями автора: почему он выбрал именно такие абстракции?;
как из них получил конечное приложение?.
Такими рассуждениями, чтобы можно было, не смотря код, понять, что в нем можно было бы увидеть.
Такими рассуждениями, что бы, не имея код, читатель мог бы достаточно быстро и самостоятельно такой код написать.
Код, на основе которого, другой человек, добавив что-то свое, мог бы сделать отличающеюся от других игру.
И что бы, условно говоря, человек мог бы сказать так:
"Еще вчера не знал, как сделать такого вида игру,
но нашел тут кое - какую информацию, прочитал и сегодня точно знаю, как такое сделать.
И даже не надо с нуля начинать т.к. код есть."
Пусть у людей будет из чего научиться, как вообще, сделать конкретную игру.
Что бы тот, кому это интересно, мог за несколько дней впитать в себя то, на что у автора ушли годы.
А как научиться игры делать интересными - этому отдельно учится надо.

Вот этого хотелось бы. Не знаю получится ли, но постараюсь.

"А Вы, rhiroceros, с какой целью интересуетесь ?
Желаете поучаствовать в небольшом проекте ?"

Именно так.
Давно пишу простенькие игры для себя.
Захотелось в интернет выйти, на других посмотреть, себя показать.
Проекты с большими наработками очень интересны, но пока хочу осмотреться вокруг,
не беря на себя больших обязательств по скорости работы
(и на работе (не в игровой индустрии) и дома программировать тяжеловато).
По-тихонечку, я бы даже сказал медлительно, добить проект 2d гонок, а там посмотрим.

Чем меня заинтересовал проект:
гонок я еще не делал (в основном делал простенькие платформеры, стрелялки вид сверху/сбоку);
гонки: вид сверху, сбоку - не интересны (я представляю как их сделать),
вид сзади интересен тем, что не все мне пока понятно, а наброски в голове хотелось бы опробовать в деле.

"function Eof: Boolean; - задействовать одно из системных (из модуля систем, хоть оно и не зарезервированное слово),
не лучшая практика - может сбивать с толку при чтении и отладке,
а в некоторых редких случаях приводить к ошибкам (например, с with),
к тому же эта функция исконно обозначает конец файла, и комментарий показывает,
что Вы хотите эту логику модифицировать, что опять же мешает восприятию."
Честно говоря относился к Eof, как к функции конца любой сущности. (например TADODataSet.Eof).
А Вы, какое название в своих проектах используете для такого рода функции?

Для всех:

Наверно пока редактор карт не выложу, смысла нет, а как выложу, милости прошу - присоединяйтесь, вместе веселее...
rhiroceros вне форума Ответить с цитированием
Старый 13.06.2016, 12:02   #8
rhiroceros
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 23
По умолчанию

ля phomm:

..."А по самому коду есть замечания: constructor Create; virtual; - в простых классах виртуальный конструктор не нужен,
можете аргументировать его виртуальность ?"

Вы, phomm, заставили меня пересмотреть свои взгляды, засомневаться.

Всего лишь мое мнение, не более того:
Хотел ответить сразу, но понял что не вспомню, почему когда-то решил что
все конструкторы, в том числе TObject.Create должны быть виртуальными?
(и в глубине души ругал Borland за недоделку)
Теперь вспомнил, обратите внимание на следующий код (Delphi 7):

Код:
type
  // не помню в каком модуле в Delpi уже есть такое обьявление,
  // поэтому продублировал
  TObjectClass = class of TObject;

  TMyObjectClass = class of TMyObject;

  TMyObject = class(TObject)
    constructor Create; virtual;
  end;

  TMyObject2 = class(TMyObject)
    constructor Create; override;
  end;

function CreateObject_UnCorrect(ObjectClass: TObjectClass): TObject;
begin
  Result := ObjectClass.Create;
end;

function CreateObject_Correct(ObjectClass: TMyObjectClass): TObject;
begin
  Result := ObjectClass.Create;
end;

{ TMyObject }

constructor TMyObject.Create;
begin
  inherited;
  ShowMessage('TMyObject');
end;

{ TMyObject2 }

constructor TMyObject2.Create;
begin
  inherited;
  ShowMessage('TMyObject2');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateObject_UnCorrect(TMyObject2);
  ShowMessage('Неправильный вызов, должны были отобразиться TMyObject, TMyObject2 а не отобразились');

  CreateObject_Correct(TMyObject2);
  ShowMessage('Правильный вызов, должны были отобразиться TMyObject, TMyObject2 и отобразились');
end;
может быть, к виртуальности контструктора следует относится по другому чем
к виртуальности процедур и функции, (по крайней мере там где есть конструкции типа class of).
но это опять же если бы TObject был виртуальным, а пока это не так
но наверное Вы, phomm, правы, пока нужно делать виртуальными только где это действительно необходимо.
Не стоит пугать общественность слишком радикальными взглядами, например при приеме на работу.
rhiroceros вне форума Ответить с цитированием
Старый 14.06.2016, 16:21   #9
ichi
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 144
По умолчанию

http://codeincomplete.com/projects/racer/v4.final.html

http://codeincomplete.com/posts/2012...r_v1_straight/
ichi вне форума Ответить с цитированием
Старый 14.06.2016, 16:32   #10
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Неимоверно приятно получать ответы в таком же стиле, как пишешь их сам (словоохотливо , с ответной мыслью на каждую мысль). А также очень рад, что приняли во внимание мои уточнения и размышления.
Полагаю, в интернете есть разнообразной полноты источники и девблоги, особенно на хабре, там часто сам зачитываюсь подобными статьями. Хотя, конечно, некоего полноценного обучающего цикла найти будет сложно, Но, например, Гром начинал большой такой труд (в закреплённой теме раздела), хоть и не дошёл до кода, но тем не менее, я считаю, полезно изучить для хорошего планирования и анализа.
Гонки, особенно в 2д имеют не сильно большую специфику перед остальными играми, если, конечно, цель не высокоточный симулятор, и материалы по многим сферам разработки игр будут полезны, разве что физика обособлена.

По коду - Вы правы, виртуальные конструкторы в ходу с конктрукцией class of (метаклассами), и для приёмов DDD - когда тип рабочей сущности определяется на этапе работы программы, а не компиляции, но мне думается, в ключевых классах встречается редко (скорее для элементов коллекций, чем для управляющих систем и самих коллекций).
Про еоф - просто глаз цепляется , я бы назвал Last/IsLast/Finish, например.

Если есть желание мир посмотреть и себя показать - можем обсудить разные варианты, заходите на огонёк.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2D движок Sergeu Gamedev - cоздание игр: Unity, OpenGL, DirectX 19 01.11.2009 22:47
Движок Alex2009 Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 25.08.2009 18:18
Помогитеу становить движок на сайт. Движок Joomla acmilan WordPress и другие CMS 2 01.04.2009 11:26
Набор команды для создания гонок. mflat Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 17.02.2009 21:10
Помогите в создании Гонок ChukCha Gamedev - cоздание игр: Unity, OpenGL, DirectX 21 25.07.2008 09:39