Разработка и ромхакинг > Ромхакинг и программирование
какие программы использовать для создания своих игр?
<< < (7/11) > >>
HoRRoR:

--- Цитата ---Видал я один проэкт. Около 20 файлов, в каждом по 10 строк от силы - вот что значит, фанатизм OOP.
--- Конец цитаты ---
И что такого? При организации проекта "один класс - один файл", такое встречается постоянно. Особенно на ActionScript 3, например.
Mr2:
Самое главное удобство. Как тебе удобно так и пиши, главное чтоб работало. Другое дело когда ты работаешь, тут уже другой принцип. Хотя много пишут о правилах хорошего тона....  
 Но всё это никак не относится к теме "какие программы использовать для создания своих игр?".
 Скорее больше относится к теме у кого больше, и чья техника лучше. :)
Лучшеб рассказали пару принципов подходя к разработке движка. Хотя я вроде понял что какой подход выберешь сам тот и верный..... ^_^
И про joypad, только через direct input?
И есть ли стандартные(STD) функции считывания нажатий кнопок с клавиотуры без нажатия enter.(как я понимаю нет, но уточнить надо..... :))
r57shell:
HoRRoR, ты себе количество сообщений накручиваешь чтоли?) Или пытаешься как-то меня спровоцировать, или хочешь чтобы тут оффтопа было тонны?
Т.к. >5 сообщений только для того чтобы ряз пять повторить одно и тоже, а потом ответить на то, что пол часа назад было сказано? Странное поведение я бы сказал. На моё отношение к OOP напал один ты (покачто), а с мнением нельзя поспорить.


--- Цитата: HoRRoR от 28 Август 2010, 19:59:06 ---И что такого? При организации проекта "один класс - один файл", такое встречается постоянно. Особенно на ActionScript 3, например.

--- Конец цитаты ---
Не спорю что такое встречается постоянно, только там был проэкт который можно было написать в значительно меньшее количество классов. Чуть ли не каждую отдельную функцию в класс затолкали. Всё надо в меру, хотя автор определяет эту меру. Но опятьже вполне в праве, своё мнение иметь, что это было не в меру.

Добавлено позже:

--- Цитата: Mr2 от 28 Август 2010, 20:03:44 ---И про joypad, только через direct input?
И есть ли стандартные(STD) функции считывания нажатий кнопок с клавиотуры без нажатия enter.(как я понимаю нет, но уточнить надо..... :))

--- Конец цитаты ---
В винде _getch() вроде, или просто getch() точно не помню. А в linux-е так и не нашел, наверно плохо искал. Но лучше конечно использовать direct input или допустим WinAPI (если винда). Если linux, опять же, не знаю. Можно юзать SDL библу, но рекомендовать не буду, т.к. не работал с ней, только описание прочёл )).
Mr2:

--- Цитата: r57shell от 28 Август 2010, 20:10:54 ---В винде _getch() вроде, или просто getch() точно не помню. А в linux-е так и не нашел, наверно плохо искал. Но лучше конечно использовать direct input или допустим WinAPI (если винда). Если linux, опять же, не знаю. Можно юзать SDL библу, но рекомендовать не буду, т.к. не работал с ней, только описание прочёл )).

--- Конец цитаты ---
А в STL(с++) нет таких функций? ;)
r57shell:

--- Цитата: r57shell от 28 Август 2010, 20:10:54 ---В винде _getch() вроде, или просто getch() точно не помню.

--- Конец цитаты ---
Это я какраз про CRT, только почему-то в Linux версии их нет. STL такто Standard Template Library %) это совсем другое, Template - это шаблоны. Уже за шаблонные типы взялся и функции? типо std::vector<int>? Хотя почему "уже" я же не знаю сколько ты там уже делаешь чего ).

Добавлено позже:
Ладно, короче не важно, что знаю - выложил). Дальше сам).
edgbla:
Забаньте уже этого r57shell, всю тему засрал, впору закрывать.
Mr2:
-------------Engine01-----------------
Добавлен задний фон.
Добавлена поддержка прозрачности персонажа.
Добывлено перемещение по вертикали и горизонтали.
r57shell:
Перейти на нормальный ввод, ускорить передвижение вправо влево - и будет уже круто ))
Mr2:

--- Цитата: r57shell от 04 Сентябрь 2010, 12:47:49 ---Перейти на нормальный ввод, ускорить передвижение вправо влево - и будет уже круто ))

--- Конец цитаты ---
Согласен. :)
Нормальный ввод пока проблема.(надо выходить за рамки стандартного С++)
Функций getch(), и _getch() не нашёл.(использовал функцию(чтения с клавиотуры без нажатия ENTER) автора окна :blush:)
Ускорить почемуто неполучается:
использую ++step после каждого шага то всё нормально, а когда использую step+3 то ничего не меняится. >:( :(
Вопросы:
Лучше использовать тайлы или грузить картинки(backgrounds, sprites) сразу целиком?


r57shell:
Mr2, а у автора окна нет круче ввода?


--- Цитата: Mr2 от 04 Сентябрь 2010, 13:19:05 ---использую ++step после каждого шага то всё нормально, а когда использую step+3 то ничего не меняится. >:( :(

--- Конец цитаты ---
"step+3" - оператор который посути ничего не делает а только считает step+3 значение )) Надо ещё присвоить вить куда-то это значение )). Короче надо "step=step+3" либо сокращение: "step+=3". А "++step" если ты не знал то оно интерпретируется как "step=step+1". Это надо про операторы почитать и про операции. "++step" и "step++" - разные вещи, первое называется преинкремент, а второе постинкремент.


--- Цитата: Mr2 от 04 Сентябрь 2010, 13:19:05 ---Лучше использовать тайлы или грузить картинки(backgrounds, sprites) сразу целиком?

--- Конец цитаты ---
Это на вкус автора )).
Mr2:
Вкатил Раш'у три кубика(++step) вместо одного, тепеть носится как ужаленный в Ж. :lol:

BmpCorp:
Mr2, довольно быстро работаешь. Думал, там что-то вроде перемещения "красного квадратика по зелёному фону", а оказывается нет. :thumbup: Правда, выкладывать каждую версию игры я думаю имеет мало смысла - лучше сначала сделать что-то более-менее играбельное, а потом порадовать форумчан.

А синтаксис языка тебе надо знать в первую очередь, тогда отпадёт куча вопросов. Ошибки из-за синтаксиса исправить тоже проще всего.
Mr2:

--- Цитата: r57shell от 04 Сентябрь 2010, 14:32:15 ---Mr2, а у автора окна нет круче ввода?
--- Конец цитаты ---
В смысле какого ввода? Что не устраивает в имеющимся вводе? :) Если мы говорим о вводе с клавиотуры... ^_^
Использующиеся функции от автора окна:
LoadPlaypen(изображение,"имя");// загрузка Пол литрового(256) PNG файла 512x512.
точка(ширина, высота, цвет);// нанесениу точек в окне по координатам Ш/В.
char = keyb.key_pressed() // получение значения с клавиотуры


--- Цитата: r57shell от 04 Сентябрь 2010, 14:32:15 ---"step+3" - оператор который посути ничего не делает а только считает step+3 значение )) Надо ещё присвоить вить куда-то это значение )). Короче надо "step=step+3" либо сокращение: "step+=3". А "++step" если ты не знал то оно интерпретируется как "step=step+1". Это надо про операторы почитать и про операции. "++step" и "step++" - разные вещи, первое называется преинкремент, а второе постинкремент.
Это на вкус автора )).

--- Конец цитаты ---
Про операторы я в курсе. Просто не думал что надо присваивать чтобы просто прибавить к имеющемуся значению. o_0

Добавлено позже:

--- Цитата: BmpCorp от 04 Сентябрь 2010, 14:48:19 ---Mr2, довольно быстро работаешь. Думал, там что-то вроде перемещения "красного квадратика по зелёному фону", а оказывается нет. :thumbup:
--- Конец цитаты ---
Фирма веников не вяжет. :lol: У нас перемещяются в основном зайцы и жабы. ;)

--- Цитата: BmpCorp от 04 Сентябрь 2010, 14:48:19 ---Правда, выкладывать каждую версию игры я думаю имеет мало смысла - лучше сначала сделать что-то более-менее играбельное, а потом порадовать форумчан.
--- Конец цитаты ---
Ну сначало движок нужно сделать а потом и играбельное. Пока идёт процесс "ради интереса". Да и то что у меня, что то получилось, это фантастика. ;) (всмысле не думал что смогу реализовать :lol:)

--- Цитата: BmpCorp от 04 Сентябрь 2010, 14:48:19 ---А синтаксис языка тебе надо знать в первую очередь, тогда отпадёт куча вопросов. Ошибки из-за синтаксиса исправить тоже проще всего.

--- Конец цитаты ---
Займёмся. :blush:
r57shell:

--- Цитата: Mr2 от 04 Сентябрь 2010, 15:00:20 ---Про операторы я в курсе. Просто не думал что надо присваивать чтобы просто прибавить к имеющемуся значению. o_0

--- Конец цитаты ---
Объясняется просто очень: "asd=step+2" и теперь представь что в этот момент у тебя произошло "step+=2" Ну не бред ли? Вычисление значения не должно менять состояния переменных, вот в чём фишка.


--- Цитата: Mr2 от 04 Сентябрь 2010, 15:00:20 ---В смысле какого ввода? Что не устраивает в имеющимся вводе? :) Если мы говорим о вводе с клавиотуры... ^_^

--- Конец цитаты ---
Ассинхронный ввод надо юзать для игр. Чтобы ты мог чего-то делать во время того, пока юзер ничего не нажимает. И если задержать кнопку, то есть пауза пока не "повторяются нажатия" это стандартная фишка в текстовых редакторах и т д. В игре это не идёт.

В игре обычно сразу повторятся действия пока ты держишь кнопку, и как только ты её отпускаешь - останавливаться.

Выгледит обычно это так: "step+=delay*speed;" где delay это время которое прошло пока зажата клавиша. speed - скорость передвижения относительно времени. Однако если у персонажей есть ещё и ускорение тогда скорость тоже пересчитывается например через speed=delay*acceleration где acceleration - ускорение. Кроме того speed обрубается top speed, и нулём, чтобы персонаж немог носится как угорелый, и чтобы он умел останавливаться. Когда не зажата клавиша просто acceleration - отрицательный. Это один из варьянтов физики.

Если вдаваться в более извращенные, если равноускоренное движение уж сильно охото контролировать, то есть из физики формула
x=x0+v0*t+a*(t^2)/2. где
x0 - старая позиция.
v0 - старая скорость.
a - ускорение.
t - прошедшее время.
x - новая позиция.

Никто не запрещал свои модели физики придумывать.


--- Цитата: Mr2 от 04 Сентябрь 2010, 15:00:20 ---всмысле не думал что смогу реализовать :lol:

--- Конец цитаты ---
Как я и говорил, главное попробовать.
Но я думаю пока движком и не пахнет, ну посмотрим )).
Mr2:

--- Цитата: r57shell от 04 Сентябрь 2010, 15:38:28 ---Ассинхронный ввод надо юзать для игр. Чтобы ты мог чего-то делать во время того, пока юзер ничего не нажимает. И если задержать кнопку, то есть пауза пока не "повторяются нажатия" это стандартная фишка в текстовых редакторах и т д. В игре это не идёт.
--- Конец цитаты ---
об этом я не думал, но у меня нет паузы когда игрок ничего не жмёт. В это время идёт постоянный опрос клавиотуры.
Но вот что плохо считывается только одна кнопка, и если я захочу переместиться по диагонали этого не получится, так же как и идти вперёд и прыгнуть.... :(

--- Цитата: r57shell от 04 Сентябрь 2010, 15:38:28 ---Выгледит обычно это так: "step+=delay*speed;" где delay это время которое прошло пока зажата клавиша. speed - скорость передвижения относительно времени. Однако если у персонажей есть ещё и ускорение тогда скорость тоже пересчитывается например через speed=delay*acceleration где acceleration - ускорение. Кроме того speed обрубается top speed, и нулём, чтобы персонаж немог носится как угорелый, и чтобы он умел останавливаться. Когда не зажата клавиша просто acceleration - отрицательный. Это один из варьянтов физики.

Если вдаваться в более извращенные, если равноускоренное движение уж сильно охото контролировать, то есть из физики формула
x=x0+v0*t+a*(t^2)/2. где
x0 - старая позиция.
v0 - старая скорость.
a - ускорение.
t - прошедшее время.
x - новая позиция.

Никто не запрещал свои модели физики придумывать.
Как я и говорил, главное попробовать.

--- Конец цитаты ---
o_0

--- Цитата: r57shell от 04 Сентябрь 2010, 15:38:28 ---Но я думаю пока движком и не пахнет, ну посмотрим )).

--- Конец цитаты ---
Ну да, до Unreal Engine немного не дотягивает. :lol:

Чтобы дальше развивать Engine, наверное придётся переделать исходник под ооп. А то для модификации и развития код ужасен.(тяп ляп :blush:)
УльтраБлокС:

--- Цитата: Mr2 ---В это время идёт постоянный опрос клавиотуры.
--- Конец цитаты ---

Типо цикл? Он же будет сильно проц грузить. Впрочем Unreal Engine тоже постоянно грузил проц на 99%

Кстати как сделано - это компоненты визуальные двигаются или отрисовывается на "дисплей"?
Mr2:

--- Цитата: УльтраБлокС от 04 Сентябрь 2010, 17:37:21 ---Типо цикл? Он же будет сильно проц грузить. Впрочем Unreal Engine тоже постоянно грузил проц на 99%
--- Конец цитаты ---
Про Unreal была шутка. :)
А как ещё опрашивать кнопки если не с помощью цикла? o_0

--- Цитата: УльтраБлокС от 04 Сентябрь 2010, 17:37:21 ---Кстати как сделано - это компоненты визуальные двигаются или отрисовывается на "дисплей"?

--- Конец цитаты ---
Спрайт передвигается и отрисовывается в том месте куда он переместился.
r57shell:

--- Цитата: Mr2 от 04 Сентябрь 2010, 21:21:17 ---А как ещё опрашивать кнопки если не с помощью цикла? o_0Спрайт передвигается и отрисовывается

--- Конец цитаты ---
Я не знаю сколько есть всего варьянтов... Но покрайней мере ещё два: callback, event. Первый подразумевает что ты системе даешь адресса callback. (call - вызов. back - назад. короче чёто типо обратный вызов). Твой callback будет система сама вызывать при нажатии клавиши, как и программу запускает система. Не ты же прогу запускаешь, а система ), такчто забудь что ты один можешь чего-то вызывать. Второе Event-ы - события. Обычно также в цикле ждёшь события... но система в самой функции "ждать событие" - останавливает (ставит на паузу) процесс, пока не произойдёт само событие, потом она же (система) возвращает тип события и инфу о событии (в данном случае событие нажатия клавиши, и какая именно клавиша была нажата). Таким образом твоя программа конечно стоит, но не загружает процессор на 100% )). Такие вещи обычно в отдельных потоках делаются. Есть обычно специальные функции которые дают явно указать что твоей программе нечего делать, и пусть "поспит" пару сотен милисекунд - это тоже обрабатывает система, также чтобы не загружать процессор. Обычно имя такой функции sleep.  (системой называл что-то неопределённое ) )

Ах да, забыл самое используемое: просто бывают функции которые выдают текущее состояние клавиатуры, типа GetKeyboardState из WINAPI.
Mr2:
---------------Engin03------------
Добавлена возможность менять масштаб.
Добавлена горизонтальная прокрутка.
r57shell:
За пол года крутые улучшения  :lol:.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии