Автор Тема: какие программы использовать для создания своих игр?  (Прочитано 42475 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Цитата
Видал я один проэкт. Около 20 файлов, в каждом по 10 строк от силы - вот что значит, фанатизм OOP.
И что такого? При организации проекта "один класс - один файл", такое встречается постоянно. Особенно на ActionScript 3, например.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Самое главное удобство. Как тебе удобно так и пиши, главное чтоб работало. Другое дело когда ты работаешь, тут уже другой принцип. Хотя много пишут о правилах хорошего тона....  
 Но всё это никак не относится к теме "какие программы использовать для создания своих игр?".
 Скорее больше относится к теме у кого больше, и чья техника лучше. :)
Лучшеб рассказали пару принципов подходя к разработке движка. Хотя я вроде понял что какой подход выберешь сам тот и верный..... ^_^
И про joypad, только через direct input?
И есть ли стандартные(STD) функции считывания нажатий кнопок с клавиотуры без нажатия enter.(как я понимаю нет, но уточнить надо..... :))

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
HoRRoR, ты себе количество сообщений накручиваешь чтоли?) Или пытаешься как-то меня спровоцировать, или хочешь чтобы тут оффтопа было тонны?
Т.к. >5 сообщений только для того чтобы ряз пять повторить одно и тоже, а потом ответить на то, что пол часа назад было сказано? Странное поведение я бы сказал. На моё отношение к OOP напал один ты (покачто), а с мнением нельзя поспорить.

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

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

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
В винде _getch() вроде, или просто getch() точно не помню. А в linux-е так и не нашел, наверно плохо искал. Но лучше конечно использовать direct input или допустим WinAPI (если винда). Если linux, опять же, не знаю. Можно юзать SDL библу, но рекомендовать не буду, т.к. не работал с ней, только описание прочёл )).
А в STL(с++) нет таких функций? ;)

Оффлайн r57shell

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

Добавлено позже:
Ладно, короче не важно, что знаю - выложил). Дальше сам).

Оффлайн edgbla

  • Пользователь
  • Сообщений: 503
    • Просмотр профиля
Забаньте уже этого r57shell, всю тему засрал, впору закрывать.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
-------------Engine01-----------------
Добавлен задний фон.
Добавлена поддержка прозрачности персонажа.
Добывлено перемещение по вертикали и горизонтали.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Перейти на нормальный ввод, ускорить передвижение вправо влево - и будет уже круто ))

Оффлайн Mr2

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


« Последнее редактирование: 04 Сентябрь 2010, 13:23:03 от Mr2 »

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Mr2, а у автора окна нет круче ввода?

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

Лучше использовать тайлы или грузить картинки(backgrounds, sprites) сразу целиком?
Это на вкус автора )).

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Вкатил Раш'у три кубика(++step) вместо одного, тепеть носится как ужаленный в Ж. :lol:


Оффлайн BmpCorp

  • Пользователь
  • Сообщений: 1413
  • Пол: Мужской
  • Серьёзнее не бывает
    • Steam
    • Youtube
    • Просмотр профиля
Re: какие программы использовать для создан&#
« Ответ #131 : 04 Сентябрь 2010, 14:48:19 »
Mr2, довольно быстро работаешь. Думал, там что-то вроде перемещения "красного квадратика по зелёному фону", а оказывается нет. :thumbup: Правда, выкладывать каждую версию игры я думаю имеет мало смысла - лучше сначала сделать что-то более-менее играбельное, а потом порадовать форумчан.

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

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Mr2, а у автора окна нет круче ввода?
В смысле какого ввода? Что не устраивает в имеющимся вводе? :) Если мы говорим о вводе с клавиотуры... ^_^

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

Добавлено позже:
Mr2, довольно быстро работаешь. Думал, там что-то вроде перемещения "красного квадратика по зелёному фону", а оказывается нет. :thumbup:
Фирма веников не вяжет. :lol: У нас перемещяются в основном зайцы и жабы. ;)
Правда, выкладывать каждую версию игры я думаю имеет мало смысла - лучше сначала сделать что-то более-менее играбельное, а потом порадовать форумчан.
Ну сначало движок нужно сделать а потом и играбельное. Пока идёт процесс "ради интереса". Да и то что у меня, что то получилось, это фантастика. ;) (всмысле не думал что смогу реализовать :lol:)
А синтаксис языка тебе надо знать в первую очередь, тогда отпадёт куча вопросов. Ошибки из-за синтаксиса исправить тоже проще всего.
Займёмся. :blush:

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Про операторы я в курсе. Просто не думал что надо присваивать чтобы просто прибавить к имеющемуся значению. o_0
Объясняется просто очень: "asd=step+2" и теперь представь что в этот момент у тебя произошло "step+=2" Ну не бред ли? Вычисление значения не должно менять состояния переменных, вот в чём фишка.

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

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

Выгледит обычно это так: "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 - новая позиция.

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

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

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Ассинхронный ввод надо юзать для игр. Чтобы ты мог чего-то делать во время того, пока юзер ничего не нажимает. И если задержать кнопку, то есть пауза пока не "повторяются нажатия" это стандартная фишка в текстовых редакторах и т д. В игре это не идёт.
об этом я не думал, но у меня нет паузы когда игрок ничего не жмёт. В это время идёт постоянный опрос клавиотуры.
Но вот что плохо считывается только одна кнопка, и если я захочу переместиться по диагонали этого не получится, так же как и идти вперёд и прыгнуть.... :(
Выгледит обычно это так: "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
Но я думаю пока движком и не пахнет, ну посмотрим )).
Ну да, до Unreal Engine немного не дотягивает. :lol:

Чтобы дальше развивать Engine, наверное придётся переделать исходник под ооп. А то для модификации и развития код ужасен.(тяп ляп :blush:)
« Последнее редактирование: 04 Сентябрь 2010, 17:13:01 от Mr2 »

Оффлайн УльтраБлокС

  • Пользователь
  • Сообщений: 1166
  • Пол: Мужской
    • Просмотр профиля
Re: какие программы использовать для создан&#
« Ответ #135 : 04 Сентябрь 2010, 17:37:21 »
Цитата: Mr2
В это время идёт постоянный опрос клавиотуры.

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

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

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Типо цикл? Он же будет сильно проц грузить. Впрочем Unreal Engine тоже постоянно грузил проц на 99%
Про Unreal была шутка. :)
А как ещё опрашивать кнопки если не с помощью цикла? o_0
Кстати как сделано - это компоненты визуальные двигаются или отрисовывается на "дисплей"?
Спрайт передвигается и отрисовывается в том месте куда он переместился.

Оффлайн r57shell

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

Ах да, забыл самое используемое: просто бывают функции которые выдают текущее состояние клавиатуры, типа GetKeyboardState из WINAPI.
« Последнее редактирование: 04 Сентябрь 2010, 23:10:56 от r57shell »

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
---------------Engin03------------
Добавлена возможность менять масштаб.
Добавлена горизонтальная прокрутка.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
За пол года крутые улучшения  :lol:.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
За пол года крутые улучшения  :lol:.
Я сейчас пробую сделать интерфейс для опросника.(вопрос и несколько вариантов ответов.)
Поэтому движком не знаимался.
Потом речь зашла о колизиях, и решил попробывать их реализовать. Но посмотрев код понял что надо его исправлять.(переделывать под ооп было лень)

Один день приводил исходник в нормальный вид.
Один день согласовывал масштабы.
Один день думал как реализовать прокрутку.

Теперь код усложнился и его снова нужно оптимизировать,не до колизий. ;)

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Отрисовывать 3D объекты можно только через 3D API функции?
Или можно и через 2D функции отрисовывать трёхмерные объекты?

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
:lol:
а на каком дисплее ты видишь 3D объекты?) - На 2D
Так что... рисованный 3D объект это иллюзия 3D. Главное правильно нарисовать.
Но тут если ты о применении... то 3D функциями и проще, и работать будет быстрее, ибо графическая карта под это заточена.
А 2D-функциями... это что-то на подобии software эмуляции...

Да и если говорить о 3D которое на стереоскопических дисплеях, то и такое без 3D функций и поддержки делать вообще гемор.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
:lol:
а на каком дисплее ты видишь 3D объекты?) - На 2D
Так что... рисованный 3D объект это иллюзия 3D. Главное правильно нарисовать.
Вот чего я и спросил.
Но тут если ты о применении... то 3D функциями и проще, и работать будет быстрее, ибо графическая карта под это заточена.
Пока хочу всё стандартное попробывать.(за маленьким исключением)

В WIN32 API есть 3D функции?
А 2D-функциями... это что-то на подобии software эмуляции...
Как програмно реализовать Z-координату?(желательно в теории, а то я в синусах не бум-бум ;))
2D функция у меня такая:
бумага.точка(ширина, высота, цвет);
Да и если говорить о 3D которое на стереоскопических дисплеях, то и такое без 3D функций и поддержки делать вообще гемор.
Не, это я в курсе как делается.
« Последнее редактирование: 16 Август 2011, 00:10:01 от Mr2 »

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
В WIN32 API есть 3D функции?
нету

Как програмно реализовать Z-координату?(желательно в теории, а то я в синусах не бум-бум ;))
Z-координата это всего лишь значение, как его хранить - как хочешь.

"обычно" далее означает - я только с таким сталкивался, и сам так делал :). То есть мое представление.
Лучше всего прочитать что такое базис векторного пространства... (да и вообще векторные пространства, линейная геометрия)
Затем, модели обычно задаются множеством треугольников в некотором базисе, который обычно называется "локальная система координат". Треугольники задаются вершинами.
Потом модели анимируются изменением вершин или текстур...
Позиционируются (и задаётся ориентация) за счёт матриц.
Т.к. одна матрица 4x4 задаёт полную ориентацию в 3D пространстве.
Затем обычно составляется 3 основных матрицы
WORLD, VIEW, PROJECTION - мир, вид, проекция соответственно, с помощью их уже проецируются вершины на экран.
Затем уже на плоскости с некоторой дополнительной информацией (текстуры, нормали...) пикселезируются так скажем (закрашиваются).
Матрица WORLD обычно получается из иерархии, так скажем, "относительности", она по сути означает базис в котором "в мире" отрисовать объект. Матрица VIEW определяется с помощью положения камеры (обычно). И наконец PROJECTION это ТУПО как спроецировать объекты на экран.
Таким образом, просто работает комбайн:
1) задать WORLD, VIEW, PROJECTION
2) задать текстуры, освещение, другие параметры
3) отрисовать модель (в узком смысле - набор треугольников)
4) перейти к следуйщей модели,и сначала.
а потом когда отрисовка закончилась, просчитать что изменилось к следуйщему кадру, и снова в комбайн все модели :).

Итого тебе понадобиться чтобы осилить:
1) знание матриц, и как они представляют отношение между ориентациями в пространстве, и как задают ориентацию. Другими словами как их готовить, и с чем их едят.
2) знания линейной геометрии.
если же захочешь ещё и текстурировать, то прийдётся попыхтеть... Лучше сразу не бросаться в эмуляцию 3D с помощью 2D, а для начала копнуть например OpenGL.  
« Последнее редактирование: 16 Август 2011, 18:34:52 от r57shell »

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
r57shell Спасибо! :)
Цитата
нету
Что то мне это подсказывало. ;)
Цитата
Z-координата это всего лишь значение, как его хранить - как хочешь.
Это то понятно. Вопрос в том как мне её реализовать.
Ведь у меня нет трёхмерной функции, то есть я не могу напрямую её(Z) использовать:
бумага.точка(ширина, высота, глубина, цвет);
Поэтому её надо как то преобразовавать между X и Y.То есть:
1.Преобразовываем X и Y с учётом Z. Получаем трёхмерные координаты точки в двух переменных(X, Y).
2.бумага.точка(ширина, высота, цвет);
Цитата
Лучше всего прочитать что такое базис векторного пространства... (да и вообще векторные пространства, линейная геометрия)
Я там нихрена не могу понять. То что вектор это направления я в курсе. Допустим вектор направления из точки А в точку Б.
Данная матрица определяет следующее преобразование: растяжение по оси x в два раза, по оси у в три раза и перенос на вектор (1, 2, -1). При этом матрица M применяется к вектору-столбцу слева:

             | M11  M12  M13  M14 |   | px |  
p' = M * p = | M21  M22  M23  M24 | * | py |

             | M31  M32  M33  M34 |   | pz |  

             | M41  M42  M43  M44 |   | 1  |
http://compgraphics.info/3D/3d_definitions.php
Цитата
Затем, модели обычно задаются множеством треугольников в некотором базисе, который обычно называется "локальная система координат". Треугольники задаются вершинами.
Потом модели анимируются изменением вершин или текстур...
Позиционируются (и задаётся ориентация) за счёт матриц.
Т.к. одна матрица 4x4 задаёт полную ориентацию в 3D пространстве.
Затем обычно составляется 3 основных матрицы
Как создаются 3D модели я в курсе. Матрицы используются для изменения координат вершин.
Цитата
если же захочешь ещё и текстурировать, то прийдётся попыхтеть...
Достаточно создать куб, повертеть его, ну мож ещё по сторанам буквы написать.(текстуру натянуть)

Допустим красный квадрат я смогу нарисовать двухмерной функцией, и сделать над ним преобразования,
4 раза{
 бумага.точка(red[i].x, red[i].y, цвет);
}
Но для остальных квадратов нужна глубина(Z).

 бумага.точка(малиновый[0].x, малиновый[0].y, цвет);
 бумага.точка(малиновый[1].x, малиновый[1].y, цвет);
допустим это две точки примыкаюзие к красному.
Далее оставшиеся две точки  нужно отдалять от красного квадрата к синему:

 бумага.точка(малиновый[2].x, малиновый[2].y,малиновый[2].z, цвет);
 бумага.точка(малиновый[3].x, малиновый[3].Y,малиновый[3].z, цвет);
Цитата
Лучше сразу не бросаться в эмуляцию 3D с помощью 2D, а для начала копнуть например OpenGL.
Да не, я просто набираю знаний для хакинга. Проверку знаний осуществляю путём реализации их на движке.2D отрисовываю, анимирую, сталкиваю. Остались звуки. Ну и 3D :'(.
Что то серьёзное на PC пока не планировал, поэтому обхожусь стандартным С++.(без Win api, OpenGL, DirectX )


« Последнее редактирование: 16 Август 2011, 19:58:58 от Mr2 »

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Вопрос в том как мне её реализовать.
как раз таки я на реализацию и ответил, "всеголишь информация, куда хочешь туда и пихай".

Ты же хочешь как правильно ею пользоваться, точнее чтобы Z стал Z.
Всё что я описывал - это про видео игры, там обычно напрямую не используют. WORLD, VIEW, PROJECTION и многое в совокупности. Одни x,y,z ничего не дают.
Однако если для простеньких программ... то можно например что-то на подобии изометрии (я не помню как это называется).
выбираешь 3 вектора i,j,k=(x,y) на плоскости экрана. И выбираешь точку O=(x,y) тоже на плоскости экрана.
после чего рисуешь модель основываясь на том что если нужно X=(x,y,z) спроецировать на экран, и P=(x,y) - проекция, то P=X.x*i+X.y*j+X.z*k. На самом деле эта "проекция" записывается одной матрицей. P=X*A, где A - матрица. После такой проекции, параллельные линии в 3D будут параллельны в 2D, но не наоборот.
Так же кстати можно с 4D. только i,j,k,l будут 4 вектора.
Ведь у меня нет трёхмерной функции, то есть я не могу напрямую её(Z) использовать:
и всёравно это будет не напрямую использование.
Допустим вектор направления из точки А в точку Б.
Это другой вектор :).
Я подразумевал "радиус вектор".

Достаточно создать куб, повертеть его, ну мож ещё по сторанам буквы написать.(текстуру натянуть)
тот пример что я в этом сообщении выше привел, даст тебе крутить только САМ куб, или перемещать. угол под которым ты его будешь смотреть, и прочее - будет фиксирован, прийдётся поворачивать куб к "камере". Так делать не трушно, обычно крутят камеру. Хотя, на самом деле, это только так подразумевают, на самом деле крутиться весь мир вокруг камеры ), но просто идёт удобное разделение, что явно нигде не крутишь весь мир, только перемещаешь камеру.

Да не, я просто набираю знаний для хакинга.
Таких знаний не нужно для хакинга, достаточно знать что такое камера и как работает, и что такое модели, и их иерархию, или ещё подобное... да и вообще, зачем тебе хакать графический движок? он же обычно такой огромный, что ты не осилишь. Лучше использовать готовые функции движка, а там особого ума не надо.
« Последнее редактирование: 17 Август 2011, 16:53:51 от r57shell »

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Цитата
Ты же хочешь как правильно ею пользоваться, точнее чтобы Z стал Z.
Всё что я описывал - это про видео игры, там обычно напрямую не используют. WORLD, VIEW, PROJECTION и многое в совокупности. Одни x,y,z ничего не дают.
Однако если для простеньких программ... то можно например что-то на подобии изометрии (я не помню как это называется).
выбираешь 3 вектора i,j,k=(x,y) на плоскости экрана. И выбираешь точку O=(x,y) тоже на плоскости экрана.
после чего рисуешь модель основываясь на том что если нужно X=(x,y,z) спроецировать на экран, и P=(x,y) - проекция, то P=X.x*i+X.y*j+X.z*k. На самом деле эта "проекция" записывается одной матрицей. P=X*A, где A - матрица. После такой проекции, параллельные линии в 3D будут параллельны в 2D, но не наоборот.
Так же кстати можно с 4D. только i,j,k,l будут 4 вектора.
Не понял о чём ты.
Вот попробывал реализовать что знаю ;):
Цитата
Таких знаний не нужно для хакинга, достаточно знать что такое камера и как работает, и что такое модели, и их иерархию, или ещё подобное...
Если знать как это работает то думаю повторить это будет не сложно. ;)
Цитата
да и вообще, зачем тебе хакать графический движок? он же обычно такой огромный, что ты не осилишь. Лучше использовать готовые функции движка, а там особого ума не надо.
Чтобы использовать функции нужно о них что то знать. :(

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Не понял о чём ты.
А я модифицировал твой код... скомпилить не могу ибо у меня нет твоих двух библиотек, такчто помарки сам исправляй.
Если знать как это работает то думаю повторить это будет не сложно. ;)
Хоть я и знаю как работает - не разу пока полностью всё не делал сам... было один раз достаточно много сделано, да заброшено, ибо очень толсто.

Чтобы использовать функции нужно о них что то знать. :(
Чтобы знать, достаточно оттестировать, или посмотреть применение, короче то, чем и занимается хацкер.
« Последнее редактирование: 17 Август 2011, 22:36:53 от r57shell »

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1622
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Цитата
А я модифицировал твой код... скомпилить не могу ибо у меня нет твоих двух библиотек, такчто помарки сам исправляй.
Чё то я не понял? :?
А где эффект, вроде работает также.
Неплохо было ещё откоментировать :
point E[3];
point O;
v1.x=E[0].x*x1.x+E[1].x*x1.y+E[2].x*x1.z;

Цитата
Хоть я и знаю как работает - не разу пока полностью всё не делал сам...
Человеком движит интерес. Всегда интересно применять знания.
Цитата
было один раз достаточно много сделано, да заброшено, ибо очень толсто.
Ну заброшено, это не удалено.Можно и вернуться. :)
Цитата
Чтобы знать, достаточно оттестировать, или посмотреть применение, короче то, чем и занимается хацкер.
Мне намного проще сделать самому, а потом уже искать аналогии у других. А так откроешь, и не знаешь за что браться. ;)

Добавлено позже:
Добаил какую то фигню, выглядит как поворот.Похоже на псевдо 3D. :D
Cube0.2
« Последнее редактирование: 18 Август 2011, 00:01:53 от Mr2 »