Page 2 of 81

Вопросы по созданию игр.

Post #1Posted: 25.01.2014, 14:45
by exooman
В этой теме помогаем друг-другу разбираться в игростроении на движке BGE.
Внимание, прежде чем задать вопрос, просмотрите темы:
Blender Game Engine FAQ
Blender Game Engine примеры
Полезные ресурсы по BGE


Пожалуйста, выкладывайте бленд-файлы, изображения и другие ресурсы на сторонних хостингах. Приветствуется упаковывание файлов в архив, желательно в формате .7z. По возможности старайтесь использовать изображения формата .jpeg.

Post #21Posted: 12.02.2014, 13:22
by denis8424
В бге нет, в самом блендере можно, хотя и не в одну строчку.
P.S. хотя наверное в бге можно тоже, через библиотеку bgl, но это сложно будет, одной строчкой не обойдешся.

Post #22Posted: 20.02.2014, 15:00
by exooman
чего-то не пойму ЧЯДНТ? нужно заставить "прокручиваться" текстуру, пишу

Code: Select all
from bge import logic
def wer(cont):
    own = cont.owner
    mesh = own.meshes[0]
    vert  = mesh.getVertex( 0, 0)
    if own['gears'] == 1:
        vert.UV[1] += 0.1

В итоге ноль реакции. Ошибок в консоли нет.

Post #23Posted: 21.02.2014, 10:43
by denis8424
exooman, во - первых, что тебя в стандартном скрипте из примеров не устроило?
Во-вторых, почему -то нельзя менять UV координаты напрямую, нужна промежуточная переменная.
В-третьих, ты получаешь UV-координату только одной точки меша, а если хочешь прокручивать текстуру, то надо менять UV-координаты всех вершин.
Spoiler
Code: Select all
from bge import logic
def wer(cont):
    own = cont.owner
    mesh = own.meshes[0]
    vert  = mesh.getVertex( 0, 0)
    if own['gears'] == 1:
        UV = vert.UV
        UV[1] += 0.1
        vert.setUV(UV)
Твой код, вроде то, что ты хотел.
Code: Select all
from bge import logic
def wer(cont):
    own = cont.owner
    mesh = own.meshes[0]
    array = mesh.getVertexArrayLength(0)
    if own['gears'] == 1:
        for i in range(0, array):
            vert  = mesh.getVertex(0, i)
            uv = vert.UV
            uv[1] = uv[1] + 0.01
            vert.setUV(uv)
Код из примера. Наверно то, что тебе нужно.

Post #24Posted: 21.02.2014, 12:36
by exooman
Хм, что-то все равно не так. Взял дефолтную сцену, включил GLSL, создал материал и текстуру кубу. Примотал к модулю пульсирующий сенсор Always - все работает. Делаю тоже самое в проекте - не пашет. Текстура только немного дергается при запуске и все. Как-то уже попадалась мне такая проблема, но она еще интереснее была - при виде из камеры все работало, а в остальных случаях - нет.

Post #25Posted: 21.02.2014, 12:44
by maleficmax
exooman, я в БГЕ ноль, но иногда в блене бывают глюки, от которых спастись можно спасает только тотальный аппенд в новую сцену. И всё вдруг начинает правильно работать. Или наоборот можно из работающей в неработающую попробовать. Если для БГЕ это глупость, прошу простить)

Post #26Posted: 21.02.2014, 13:49
by exooman
maleficmax, по своему опыту знаю, что просто где-то что-то не нажато или наоборот - нажато, но не то что нужно. Хотя, блендер и вправду любитель покапризничать в ответственный момент

Post #27Posted: 21.02.2014, 13:58
by denis8424
exooman, Что тут скажешь? Фиг его знает. Попробуй вывести принтами значения UV, посмотри изменения данных.

Post #28Posted: 21.02.2014, 14:19
by exooman
Попробуй вывести принтами значения UV, посмотри изменения данных.

У UV вектор меняется, но почему-то это не влияет на само отображение текстуры.

З.Ы. на скрине прибавляется единица, но я разные значения пробовал, включая дефолтное 0.1


Spoiler
Image

хм. Чего то оно как-то странно добавляется(значение +0.4)

Spoiler
Image

Post #29Posted: 21.02.2014, 14:43
by denis8424
Действительно странно. Такое ощущение, что координаты развертки не меняются. Попробуй вместо этого скрипта использовать скрипт из примера. Тоже с принтами, если будет тоже самое, значит проблема не в скрипте.

Post #30Posted: 21.02.2014, 14:54
by vknw123
А кто расскажет как применять лоды?
http://wiki.blender.org/index.php/User:Kupoman/Level_Of_Detail

Post #31Posted: 21.02.2014, 15:03
by exooman
прикрутил скрипт из старого примера. Все так же - в дефолтном файле пашет, в проекте - нет

Spoiler
Code: Select all
from bge import logic
def wer(cont):

    own = cont.owner
    mesh = own.meshes[0]
    array = mesh.getVertexArrayLength(0)

   
    speed = own['speed']
    axis = own['axis']

   
    if axis == "x":
       axis = 0
    if axis == "y":
       axis = 1
      
       
 
    for v in range(0,array):
       vertex = mesh.getVertex(0,v)
       UV = vertex.getUV()
       UV[axis] = UV[axis]+speed
       vertex.setUV(UV)
    print(UV)

В консоле все вроде норм.

Spoiler
Image

Post #32Posted: 21.02.2014, 15:17
by denis8424
vknw123, А где его взять?
exooman, Черт его знает, может сама развертка?

Post #33Posted: 21.02.2014, 15:29
by exooman
может сама развертка?

уже перепробовал разные виды разверток, настроек текстуры - тщетно. Думаю тут есть какая-то взаимосвязь с багом, когда не желал запекаться амбиент. В качестве ошибки указывалось отсутствие изображения, хотя оно присутствовало. Такая же беспричинная мутатень.


Вынос мозга, вообщем - всё заработало в версии 2.65а. В 2.66, 2.67 и 2.68 НЕРАБОТАЕТ ;-(

В блендер-плеере то же самое - только в 2.65а работает.

Post #34Posted: 21.02.2014, 15:47
by denis8424
А моделька откуда?
Может обратной совместимости нет?

Post #35Posted: 21.02.2014, 15:55
by exooman
А моделька откуда?

Да вот же только создал куб.
Материал и текстура тоже только что были созданы. Сам проект в 2.69-й версии начат.

Post #36Posted: 21.02.2014, 16:01
by vknw123
denis8424, кого взять? вроде как пишут появились в 2.7 лоды в игре. или нет? я просто ещё не смотрел,
сижу изучаю новое меню.

Post #37Posted: 21.02.2014, 21:52
by exooman
вроде как пишут появились в 2.7 лоды в игре.

таки да, товарищи! Потестил я эти лоды и остался доволен. Теперь, во вкладке объекта можно задать меши для его трансформации на определенном расстоянии. Я сделал сферу и две вариации лодов к ней. Затем продублировал всё это дело - вот сколько таких сфер у меня потянул комп(4-х ядерник q9550 + GTX 560ti).


Spoiler
Image

Лагов при подгрузке лодов нету вообще.
Учитывая, что количество объектов чрезмерно высокое(в игре графику лучше блоками делать), то результат довольно не плохой. Уже можно состряпать шутерок типа CoD4, с псевдо-открытыми локациями.

Post #38Posted: 21.02.2014, 22:05
by vknw123
А вот как интересно делать лоды врагов с костной анимацией, кости одни и теже у них анимация, меш прикреплён у него анимация прописана.... короче надо наверно пробовать.

Post #39Posted: 21.02.2014, 22:11
by andreymal
Если верить скриншоту, у этих лодов есть страшный косяк: они не зависят ни от разрешения экрана, ни от фокусного расстояния камеры. Будешь в игре через снайперскую винтовку целиться — а тебе вместо человека куб покажут.

Post #40Posted: 21.02.2014, 22:40
by exooman
Если верить скриншоту, у этих лодов есть страшный косяк: они не зависят ни от разрешения экрана, ни от фокусного расстояния камеры. Будешь в игре через снайперскую винтовку целиться — а тебе вместо человека куб покажут.

да, есть такой косяк. Но травку мутить уже можно.
Spoiler
Image

Image


к тому же, думаю в API добавят дополнительные функции по манипуляциям лодов. К примеру, можно сделать так, что при виде из прицела у нужных объектов расстояние замены мешей будет увеличиваться. Нам ли о костылях беспокоится? :)

Added after 8 minutes 56 seconds:
А вот как интересно делать лоды врагов с костной анимацией, кости одни и теже у них анимация, меш прикреплён у него анимация прописана.... короче надо наверно пробовать.

Попробовал - нужно припэрентить меш-дублер к арматуре и задать весы. Затем меш можно "отпэрентить" и убрать на другой слой - лод уже будет работать с данной арматурой.