Перейти к контенту

Курилка программистов


Рекомендуемые сообщения

Это тоже самое, как с ассемблером или C. На них должны писаться только критичные вещи. Так и с движком. Как по мне, так в движке должны быть только низкоуровневые вещи или то, что в скриптовой реализации создаст слишком большую нагрузку. Все остальное - для скриптов. И главное меню яркий тому пример. Зачем цементировать в движке то, что можно написать на скриптовом языке и оно хорошо работает. Смарты, гулаги, респаунеры и многое другое прекрасно реализуется скриптово и нормально работает.

  • Нравится 2
  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

 

 

Скрипты не предназначены для серьёзной алгоритмической работы

 

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


 

 

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

 

А это всего-лишь говорит об отсутствии инструмента скриптовой отладки. Вместо запихивания в движок всего и вся, полезнее будет сделать такой инструмент.

  • Нравится 2

Поделиться этим сообщением


Ссылка на сообщение
почему именно оно ложное

По меньшей мере по одной причине. Что бы оно только попыталось стать не ложным, нужно для начала определить, что есть "серьёзной алгоритмической работы". А так, просто утверждение из серии "C rulez forever" и т.п.

 

Язык примитивен

Все императивные языки одинаково примитивны. Все основаны на присваиваниях, циклах и ветвлениях. В этом плане lua и семейство C - одинаковы.

 

По-простому, что экспортировано, то и доступно

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

 

Производительность

Я об этом писал. Для большинства задач, скриптовой производительности достаточно.  Для того, для чего не достаточно, имеет смысл делать движковую поддержку.

 

Среда разработки, точнее её отсутствие.

Батенька, а ты ведь не скриптовый писатель? Угадал? :) Знаешь, какой у меня профессиональный инструмент разработки? Emacs. Вполне себе отличная среда разработки. В ней и на lua ничуть не хуже разрабатывать, чем на перле.

  • Нравится 3

Поделиться этим сообщением


Ссылка на сообщение

@Desertir, да они все одинаковые. Вот ей богу, я в практике особой разницы не вижу между lua, perl, js и python. Особой - это именно прямо такой, кардинальной. Плюс-минус все одинаковые.

Поделиться этим сообщением


Ссылка на сообщение

Кто в физике/математике разбирается, подскажите пожалуйста, как рассчитать силу, которую нужно приложить к гранате по трем осям, что бы она долетела до указанной точки? Чую, ускорение свободного падения тут участвует. Может @abramcumner подскажет?

 

Поделиться этим сообщением


Ссылка на сообщение
3 minutes ago, abramcumner said:

там же пускали гранаты

Там эмпирически подобранные константы:


    local bone = get_grenade(id):get_physics_shell():get_element_by_bone_name("wpn_body")
    local dir=utils.vector_copy_by_val(target):sub(get_grenade(id):position())
    dir:mul(1300)
    if typ=="lo" then
        dir:add(vector():set(0,8000,0))
    else
        dir:add(vector():set(0,19000,0))
    end
    if bone then bone:apply_force(dir.x,dir.y,dir.z) end

5 minutes ago, abramcumner said:

Vx,z = Sx,z * sqrt(g / D) / 2, Vy = (Sy +  2 * D) * sqrt(g / S) / 2, где D - расстояние до указанной точки.

Мне кажется, что в этих формулах еще должна как-то учитываться масса гранаты? А понял, скорость по каждой оси еще нужно умножить на массу гранаты?

 

Не могу понять, что в формулах обозначает S?

Поделиться этим сообщением


Ссылка на сообщение
3 hours ago, abramcumner said:

Sx = dest.x - pos.x

Т.е. переводя все на lua получается


local D  = src:distance_to( dst )
local g  = 2 * 9.81
local S  = vector():sub( dst, src )
local Vx = S.x * math.sqrt( g / D ) / 2
local Vz = S.z * math.sqrt( g / D ) / 2
local Vy = ( S.y + 2 * D ) * math.sqrt( g / D ) / 2

Правильно?

 

  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

@abramcumner, не, не получается. Вот такой вот код


local target  = vector():mad( obj_pos, db.actor:direction(), 25 )
local D  = obj_pos:distance_to( target )
local g  = 2 * 9.81
local Sx = target.x - obj_pos.x
local Sy = target.y - obj_pos.y
local Sz = target.z - obj_pos.z
local Vx = Sx * math.sqrt( g / D ) / 2
local Vz = Sz * math.sqrt( g / D ) / 2
local Vy = ( Sy + 2 * D ) * math.sqrt( g / D ) / 2
local mass = 1300
Vx = Vx * mass
Vy = Vy * mass
Vz = Vz * mass
bone:apply_force( Vx, Vy, Vz )

Граната больше летит вверх, чем вперед. Вверх она улетает на 7.6 метра, а вперед только на 8.6. Если поставить в mass obj:mass(), которая 12, то вообще не летит, а только чуть подпрыгивает.

 

Поделиться этим сообщением


Ссылка на сообщение
On 1/7/2019 at 3:04 PM, abramcumner said:

Вот такой код у меня запускает гранату точно к ногам ГГ.

У меня не долетает. Расстояние до гранаты примерно 12 метров. Ровное место. Не долетает примерно 5 метров. Если увеличивать mass, можно сделать, что бы долетела, но это будет верно только для одного расстояния.

 

Поделиться этим сообщением


Ссылка на сообщение
2 hours ago, abramcumner said:

А ph_frequency что возвращает?

Возвращает 100. Вроде все нормально. Может в ЧН g другое? 

Поделиться этим сообщением


Ссылка на сообщение

@AndreySol, я сначала создаю/копирую h и cpp файлы, а потом уже добавляю их в проект почти так же, только нужно выбрать Add exists что-ли, по памяти точно не напишу. 

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...