Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2009, 10:23   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как параметр может быть смещение...

хех...тока дошло...тебе же еще и свой компилятор писать
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.08.2009, 07:41   #12
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
как параметр может быть смещение...
Да это не параметр,это нужно указать потоку куда переместится.

Цитата:
хех...тока дошло...тебе же еще и свой компилятор писать
Придется.

еще вопрос как реализовать много потоков для скриптов (только не системные потоки).
VintProg вне форума Ответить с цитированием
Старый 19.08.2009, 11:13   #13
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Блин, ну что тут сложного?Для многопоточности пишется класс, назову его TScriptThread c процедурами LoadScript, processing и freethread.Processing вызывается в таймере и обрабатывать можно сразу сколько угодно потоков.
Вот так работает обработка в CosmoNoid2.5:
Код:
//обработка скриптов
for n:=0 to MAXGameScripts do if Assigned(GameScript[n]) then begin CurrentScriptUpdate:=n; GameScript[n].Processing; end;
except
//если ошибки не игнорируются
if EngineSet.IgnoreErrors=false then
begin
//выводим ее в лог
Addlog('Ошибка при выполнении: '+'"'+command+'" в скрипте "'+GameScript[CurrentScriptUpdate].ScriptName+'"');
//переводим код на сл. строчку
GameScript[CurrentScriptUpdate].LineIndex:=GameScript[CurrentScriptUpdate].LineIndex+1;
end else exit;
С goto-label тоже элементарщина (например по сравнению с if-then)....
В класс потока скрипта добавляем массив:
LabelList: array [0..10] of integer;
При компиляции скрипта составляется LabelList: когда компилятор видит комманду label он записывает в LabelList ее номер, а когда игра видит комманду goto она переводит выполнение на нужный номер строки (которыц ранее был сохранен компилятором)
Вадим Буренков вне форума Ответить с цитированием
Старый 20.08.2009, 06:39   #14
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
Блин, ну что тут сложного?Для многопоточности пишется класс, назову его TScriptThread c процедурами LoadScript, processing и freethread.Processing вызывается в таймере и обрабатывать можно сразу сколько угодно потоков.
Вот так работает обработка в CosmoNoid2.5:
Сложно в другом,а если в одном из потоков будет ожидание то как сделать чтобы остальные не остановились.
VintProg вне форума Ответить с цитированием
Старый 20.08.2009, 09:03   #15
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

А почему другие должны останавливаться????При выполнении Processing каждый раз выполняется только 1 комманда, а процессинг выполняется каждые 55 мс. А ожидание-это условие. Если ожидание=true то комманда в процессинге не выполняется Ты статью читал?? (по видимому нет), там ВСЕ объяснено и показано, все работает как надо. Ты еще ни строчки кода не написал а у тебя уже проблемы с тем что что-то не работает.
Вообще зачем думать как будет устроено ожидание если ты еще основы не сделал!?!?!
Вадим Буренков вне форума Ответить с цитированием
Старый 20.08.2009, 09:11   #16
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Ну предположим в одном потоки идет ожидание 15 сек до активации миссии
а в другом 5 сек для получения оружия.

Цитата:
Ты еще ни строчки кода не написал
Я очень много написал.
Шас работаю над этим опкодным скриптовым движком,
могу изложить некоторые функции если надо.
VintProg вне форума Ответить с цитированием
Старый 20.08.2009, 09:33   #17
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Ну предположим в одном потоки идет ожидание 15 сек до активации миссии
а в другом 5 сек для получения оружия.
Я уже все сказал по поводу ожиданий.
Если не хочешь принять к сведениям рабочую информацию из статьи это твое дело, но тогда не задавай вопросов ответ на которые уже есть.

Цитата:
Я очень много написал.
Ну тогда выкладывай полный проэкт.
Вадим Буренков вне форума Ответить с цитированием
Старый 20.08.2009, 09:45   #18
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Он у меня не полный,зачем разбрасывать не готовое, шас только могу описать из модуля
ULTScript.pas функции:

Код:
 
THeaderScript = packed record
  Name : array[0..2] of char; //Всегда имеет заголовок SCR
  ScriptSize : integer;  //Размер самого скрипта (массив опкодов)
 end;


 function u_Load_script(fileName : string):pointer; //Даная функция загружает в память скрипт и возрошает указатель на начало скрипта

 procedure u_Free_Script(p:pointer); выгружает скрипт из памяти
По этому только думаю еще над своим скриптом,
хочу решить нормально задачу с чтением опкодов,

еше много трудностей ибо это не что особенное,
еше не могу реализовать прыжок если ложь?
VintProg вне форума Ответить с цитированием
Старый 20.08.2009, 09:50   #19
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Ну дело твое, разбирайся во всем сам.
Вадим Буренков вне форума Ответить с цитированием
Старый 20.08.2009, 09:53   #20
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Ладно завтра выложу.
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37