Игрулька без названия
В общем, по мере учебы на C++ в универе, решил поизучать opengl для вывода 3D графики... С течением времени это переросло в маленькую игрульку с примитивной графикой.
По существу, так это выглядит на сегодняшний день. Играбельности пока никакой: ходим, прыгаем, машем кинжалом - в основном только технические особенности.
Курочка!
Карта высот представляет из себя набор косинусов и синусов. Высота считается для каждой вершины в отдельности, в итоге получаются плавные холмы и речки. Конечно, при размере карты 1000х1000 небольшая симметрия есть, но в игре не заметна.
Есть простенький редактор(TAB - включить). Пока только землю редактировать, покликайте мышкой, покрутите колесико и пощелкайте стрелочки, чтобы менять текстуры. Там не сложно разобраться. Shift - Турбо ускорение
За последнее время перелопатил движок(если его можно так назвать), тк нужна была цельная организация структуры объектов и игрового цикла, чтобы все рисовалось в свое время на своей глубине, чтобы была возможность удалять\создавать в любое время новые объекты... ну короче вы поняли, хотя кому это интересно)
I - открыть инвентарь
Думаю обновлять хотя бы раз в месяц-два, если будет что нового показать. Список идей составлен, остается их реализовать :ъ
- 16 июля 2013, 21:09
- 016
Размер экзешника радует. При нажатии TAB почему-то выделился один кирпичик, и снять выделение уже не получилось - куда бы не убегал, редактировался только он. А еще в инвентаре курсор отчего-то привязался к кольчуге и не хотел с неё сходить.
А конечная цель у проекта намечается?
Правой кнопкой мыши снимать выделение. Что там с кольчугой я не разобрался, видимо, открыл разом и меню, и инвентарь
На данный момент готовлю основу: оптимизирую вывод графики и редактор, там уже видно будет, что из этого сможет получиться. Наверно, типичное рубилово со скелетами в подземельях, брождение по лесам, болотам и тд. Придумаем историю возникновения мира, скачки на поросятах, блэк-джэк, и будет не так скучно
Выглядит здорово :)
Мне нравится, однозначно!)
Графика вся аппаратная, или это все же сохраненные картинки 8х8 пикселей?
Мне кажется спрайты стоит поворачивать к игроку не только по оси z, но и по другим, потому что все объекты если смотреть сверху превращаются в полоску.
Я считаю, что картинка на данный момент очень даже приятная, и если доделать все задуманные геймплейные моменты (а их тут нужно минимум: проработать инвентарь, вещи и слоты на теле, а также характеристики предметов; дневник квестов с самими квестами; НПС и монстры), то получится отличный экшн-эксплорейшн))
Это как?
Я неточно выразился) имел в виду, что текстуры аппаратно генерируются, а не являются сохраненными заранее битмапами)
Это "программно" же называется.
оу, ноу, я отупел от армии, спасибо)
Пожалуйста.
Процедурно.
Или процедурно. Но не аппаратно.
Спасибо за приятный отзыв.)
Видимо, он имел ввиду, что текстуры сами генерируются перед запуском, но не, я просто беру несколько bmp файлов, формирую их в виде массива подряд идущих rgb-цветов и уже из этого генерирую текстуры. Таким образом, текстуры оказываются встроенными в экзешник. Перед посроением проекта, конечно, можно выбрать способ загрузки текстур. Так что можно будет редактировать в любое время и сделать из средневековой бродилки стар-варс с джедайскими палками.)
Слоты экипировки только-только приделал к инвентарю, как раз для них место оставлял. Можно даже увеличивать размер инвентаря и количества одеваемых предметов в процессе игры)
текстуры же совсем мелкие, например земля 8х8, поэтому и веса добавляют так мало)
Графика слишком походит на Delver, нужно бы перерисовать текстуры
Эта графика - бесплатный пакет, созданный не помню на какой уже конкурс и много где используется))
Самая популярная игра с этой графикой Realm Of The Mad God
Лишь бы этот проект не превратился в очередной Minecraft (который сам по себе хорош, а вот его клоны...) с крафтом и рубанием блоков.
Крэш при запуске.
Такие дела.
(Win8, x64).
Давай попробуем другую сборку
скачать
upd: добавил 6 разных, скажи какие заработают
Интересный проект! Как осознатель говорил лишь была эта игра в майнкрафт не превратилась .
в линуксе под wine запускается, но жутко тормозит :( хотя пишет, что фпс 60
60 фпс означает, что за секунду программа выполнила 60 игровых шагов и 60 раз отрисовала сцену(или 30 отрисовок, если включена опция в настройках). Получается, что глюк из-за wine или самого линукса, скорее всего нету синхронизации кадров, и некоторые просто пропускаются.
Попробуй скачать версии из моего комментария чуть выше.
Мне показалось, что игрень была бы динамичнее, будь она ТПС... (с камерой за спиной: например, идёт персонаж с камерой как в ФПС, а потом, разворачвает её к себе лицом и говорит - "слушай, я устал тебя нести, давай ужэж лети сам", и запускает в тпс-тут конечно я вспоминаю летающий череп из "П-Т"), ну и с ЗБС (закрученным безумным сюжетом, с обрушением огромного количества пикселей) игралась бы соответственно )
На моем опыта камеру за спиной сделать гораздо сложнее чем от первого лица. Для нее нужно отдельно просчитывать физику стокновений (она ведь не должна проходить сквозь стены), а также постоянно позиционировать ее под определенным углом к персонажу, в общем пришлось неплохо залезть в школьный курс тригонометрии.
Ты прав, но это стереометрия.
Вот заладил поправлять же.Ну вообще это была тригонометрия, потому что я вычислял синусы/косинусы и их арксинусы/арккосинусы, чтобы всегда поворачивать камеру на игрока, а также задавать координаты предполагаемого места камеры. Игрок и камера находились в одной плоскости, параллельной оси Z в трехмерной системе, так как камера лежала в контейнере игрока, потому я все вычислял на плоскости)
Да ладно, я за год вообще забыл что такое игры, например)
Пришел после дембеля домой, сел играть, а не играется ни во что Оо Вообще прям никак не идет. Увезли на моря/озера (у нас тут есть места где море и озеро в нескольких сотнях метров друг от друга) на три дня с 40+ человек народу, только так и реабилитировался).
Проще: от координат игрока до нужной позиции с некоторым шагом проверяем, если точка не свободна, то устанавливаем камеру на предыдущей позиции. А лучше решить как трансцендентное уравнение каким-нибудь способом.)
Изначально задумывалось от 1го лица, так что не буду переделывать. Конечно, кат-сцены можно будет делать какими угодно.
Все равно ведь это работа для физического движка.
Да я в итоге почти так и сделал) Запускал коллайдер от игрока до точки, где должна оказаться камера, и ставил камеру в место первого столкновения. Если столкновений не было, то ставил в конечную точку. Потом поворачивал ее на игрока и готово)
м? cube 2 sauerbraten, эниуан?
Какое отношение квейко-подобный шутер имеет к майнподобной игре?
из огромной сетки простого поля там выбираешь диаметр куба и вытягиваешь его вверх, потом уже накладываешь текстуры, делаешь скосы и т.д.
ну да ладно тут вроде другой принцип знач ошибся
Я одел перчатку.
Тогда уж "надел".
Xitilon, будь добрее, добрее будь, блджд!Как-нибудь при личной встрече.
Тогда уж "длина ребра куба"/"диаметр вписанной в куб сферы".
Тогда уж диагональ. >_>
Почему диагональ?
По определению.
"Диагональ куба" в задачниках и учебниках
Эх, жаль на Гамине нет роли "редактор", мы бы с вами быстро привели это место в порядок)А. Ну, диагональ ещё и не все поймут. Не знал определения.
А что тут приводить-то куда? Людей особо не приведёшь...
диагональ квадрата(
который станет кубом и т.д.
Очень странно.Игра не запускается с первого раза,покликаешь еще и на 2 раз запустится:)
Привет. Я когда учился тоже начинал на C++ под openGL делать движок. Потом забил.
И вот спустя много лет вспомнил и снова создал проект на C# и openTK.
У меня камера по синусу и косинусу вращается, но не до конца поднимается вверих и опускается вниз - это ограничение моих формул.
А ты как вращаешь? Кватернионы?
И можешь ли исходный код выложить?
Про кватернионы что-то слышал, не знаю, что это)
Сначала вращаю сцену по осям, потом сдвигаю на координаты камеры:
glLoadIdentity(); // сбрасываем просмотр
glRotatef(-vDir, 1, 0, 0); // вверх-вниз vDir[5;175]
glRotatef(-hDir, 0, 0, 1); // влево-вправо hDir[0;360)
glTranslatef(-x, -y, -z);
float gradus = 180 / 3.14;
gluLookAt( x, y, z, // позиция камеры
// координаты, куда смотрим
x + cos( hDir / gradus ), // xto
y + sin( hDir / gradus ), // yto
z + sin( vDir / gradus ), // zto
0, 0, 1 );
Но вот так смотреть ровно вниз или вверх не получится, тк точка (xto,yto,zto) всегда лежит на боковой поверхности цилиндра с центром (x,y,z) и радиусом 1. Выходит, эта точка не может находиться ровно над или под камерой, потому область просмотра ограничена.
О том и речь...
Но у тебя значит не сделано еще правильное вращение.
Тебе ведь нужно знать вектор, куда смотрит твой герой.
Куда пулькам-то лететь?
У меня не вектор, а градусы
hDir и vDir - это float значения направления
vDir - это вертикальное направление (0 - вниз под ноги, 180 - вверх в небо)
hDir - горизонтальное (0 - это вправо по х, 90 - вверх по у... и так до 360)
Я сейчас вот так по кривому вектор считаю через тригонометрию.
А потом использую glLookAt.
Так исходники-то можешь скинуть?
Мне для самообразования)
В исходниках ты явно потеряешься:)
Посмотри вот мой пример с генерацией острова. В "opengl.h" есть структура камеры, там и смотри, как она двигается и поворачивается.
Да, я это понимаю. glRotate и все такое...
Но я не знаю, как в этом случае ты получаешь направление взгляда. Т.е. каким образом ты выделяешь участок земли для редактирования?
Если вы хотите ответить на конкретный пост, то используйте лучше кнопку под ним.
через gluProject получаю экранные 2d координаты куска земли и проверяю, лежит ли точка в центре экрана в этом четырехугольнике
А что будешь делать, когда захочешь реализовать стрельбу или что-то подобное?