Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Разработка новых алгоритмов | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Канал X-Tension/X-BTF: «Разработка новых алгоритмов»
эта тема вам интересна ?
да
63%
 63%  [ 7 ]
нет
0%
 0%  [ 0 ]
воздержался
36%
 36%  [ 4 ]
Всего проголосовало : 11
xmagnat
 280 EGP


Рейтинг канала: 5(106)
Репутация: 54
Сообщения: 1244
Откуда: Екатеринбург
Зарегистрирован: 06.12.2003
Алгоритм 1:

Oпределениe боевой мощи корабля (проект).

Назначение:

Подсчет ("в попугаях") боевой мощи атакуемого, затем атакующего, далее первое значение делится на второе. По полученному числу определяется вероятность захвата объекта в соответствии с таблицей значений.

Начало:
1) вычисление совокупной максимальной мощности всех щитов установленных на корабле в тек. момент времени.
1а) целочисленно делим полученное значение на 1 000
2) если щитов нет ( пример - дрон ), то записываем 0
3) ищем все установленные орудия на корабле, затем по приведенной ниже таблице начисляем "попугаи":

Код:

Название орудия      "попугаи"
AIRE         1
BIRE         2
GIRE         4
APAC         8
BPAC         16
GPAC         50
AHEPT         100
BHEPT         1000
GHEPT         10000


Пример: пусть на корабле установлено 2*APAC, тогда кол-во "попугаев" будет 2*8=16;
Пример 2: на корабле установлено 2*GIRE и 1*APAC, тогда кол-во "пернатых" будет 2*4+1*8=16;

3) если на корабле нет орудий ( пример TS ), то пишем 0
4) Оцениваем установленную на корабле ракетную установку по таблице:

Код:

Тип ракеты      "попугаи"
1)         1
2)         5
3)         20
4)         80
5)         320
6)         15
7)          1600

5) если ракетной установки нет, то пишем 0
6) складываем три полученных значения
7) если получится 0, то пишем 1 ( чтобы, впоследствии, небыло деления на 0 )

конец.

Далее, эта функция вызывается дважды: сначала для атакуемого, затем для атакующего,
затем делим второе значение на первое. Результат обозначим переменной Х:
Вероятность захвата определяем по таблице:
Код:

Х
(инт. от а до в)   вер.
более 10      0.00
(5, 10)         0.01
(2, 5)         0.05
(1, 2)         0.10
(0.5, 1)      0.13
(0.2, 0.5)      0.16
(0.04, 0.2)      0.20
(0.008, 0.04)      0.25
(0.0016, 0.008)      0.33
(0.00032, 0.0016)   0.50
(0, 0.00032)      1.00


Примеры: Приведу среднестатистические корабли каждого класса и их "боевую мощь" "в попугаях"
Код:

M5:   1*3+1*2+1      =6      1
M4:   1*15+4*2+5      =28      4.66
M3:   1*50+16*2+20      =102      3.64  16.96
M6:   4*50+50*3+80      =430      4.21    71.40
M2:   1*1000+100*18+320   =3120      7.25     517.66
M1:   5*1000+1000*12+1600   =18600      5.96       3085.26      
M0:   20*1000+10000*12+1600   =141600      7.61         23478.85


Из таблицы видно, что, если игрок имеет, скажем М2, то шанс захватить М5 равен 33%, шанс захватить М3 равен (1/(3.64*4.21)=0.065), т.е. 20%, а шанс захватить М1 равен 1% (надеюсь понятно, почему ?)

P.S.
Этот алгоритм будет встроен в игру.

P.P.S
Ваши комментарии...
_________________
Я вернулся !
    Добавлено: 19:01 06-01-2006   
Bozz
 601 EGP


Репутация: 163
Сообщения: 1079
Откуда: Россия Мурманск
Зарегистрирован: 03.10.2005
Это получается,что рандом сдачи теперь прогнозируемый?
_________________
Если я когда нибудь заявлю "Ув.Ф.! Я понял что ты хотел сказать!" Это будет означать, что Фалкон заболел или я сошел с ума.
    Добавлено: 19:09 06-01-2006   
xmagnat
 280 EGP


Рейтинг канала: 5(106)
Репутация: 54
Сообщения: 1244
Откуда: Екатеринбург
Зарегистрирован: 06.12.2003
Bozz :
Это получается,что рандом сдачи теперь прогнозируемый?

Да.
_________________
Я вернулся !
    Добавлено: 20:00 06-01-2006   
w31
 400 EGP


Рейтинг канала: 3(42)
Репутация: 72
Сообщения: 598
Откуда: СПб
Зарегистрирован: 04.10.2005
сам недавно над такой темой думал, только без учета ракет. да не знал как такой алгоритм проверить. вроде всё логично здесь.
а каковы шансы захвата TL и TS? и как (читать куда) изменённый алгоритм в игру встроить?
xmagnat :
рандом сдачи теперь прогнозируемый

но немного случайности не повредит. Улыбка
    Добавлено: 04:58 07-01-2006   
xmagnat
 280 EGP


Рейтинг канала: 5(106)
Репутация: 54
Сообщения: 1244
Откуда: Екатеринбург
Зарегистрирован: 06.12.2003
Цитата:
только без учета ракет

Без ракет нельзя - вот пример: один TS атакует другой, у первого есть ракеты, а у второго нет. Так кто же из них сильнее?
Цитата:
а каковы шансы захвата TL и TS?

см. п.3 алгоритма.
Цитата:
как (читать куда) изменённый алгоритм в игру встроить?

находишь незанятое место в OBJ. Пишешь туда свой код, затем соединяешь с процедурой захвата.
Цитата:
но немного случайности не повредит.

Какой случайности ? Этот алгоритм вычисляет только первое число: второе выбирается случайно в диапазане (0,100), затем числа сравниваются. Если первое число больше второго - то захват успешен.
_________________
Я вернулся !
    Добавлено: 07:43 07-01-2006   
xmagnat
 280 EGP


Рейтинг канала: 5(106)
Репутация: 54
Сообщения: 1244
Откуда: Екатеринбург
Зарегистрирован: 06.12.2003
Вот написал первую часть алгоритма ( исправленный вариант ): эта функция считает силу корабля в "попугаях"...
Код:

 1                                               .title     GetMaxStrength
   2                                               .ident     XT
   3                                               .radix     10d
   4                                               .loadobj   "001.obj"
   5
   6                                               .section   code, con
   7
   8                                               .classdef TSHIP
   9                                               .func GetMaxStrength
  10                                               .endclass TSHIP
  11
  12   001B5C78:                        TSHIP.GetMaxStrength:
  13   001B5C78: 0055 0008                         setmem     8
  14   001B5C7C: 0001 03E8                         push       1000
  15   001B5C80: 0009                              push       0
  16   001B5C82: 003C                              get_object
  17   001B5C84: 0057 00001082                     call       GetMaxShield
  18   001B5C8A: 0041                              div        SP[0],SP[1]
  19   001B5C8C: 0009                              push       0
  20   001B5C8E: 0009                              Push       0
  21   001B5C90: 0005 0001               L1:       push       SP[0]
  22   001B5C94: 0011                              push       8
  23   001B5C96: 004C                              if SP[0]<SP[1] then push 0 else push 1
  24   001B5C98: 0033 000DAED2                     if SP[0]=0 then jump L4
  25   001B5C9E: 0005 0001                         push       SP[0]
  26   001B5CA2: 0006 0007                         read       TShip.sh_Lasers
  27   001B5CA6: 0008                              get_from_array
  28   001B5CA8: 000A                              push       1
  29   001B5CAA: 004D                              if SP[0]>SP[1] then push 0 else push 1
  30   001B5CAC: 0033 000DAEC8                     if SP[0]=0 then jump L2
  31   001B5CB2: 0005 0002                         push       SP[1]
  32   001B5CB6: 0005 0002                         push       SP[1]
  33   001B5CBA: 0006 0007                         Read       TShip.sh_Lasers
  34   001B5CBE: 0008                              get_from_array
  35   001B5CC0: 0005 0003                         push       SP[2]
  36   001B5CC4: 0009                              push       0
  37   001B5CC6: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  38   001B5CC8: 0033 000DAE67                     if SP[0]=0 then jump LX0
  39   001B5CCE: 000A                              push       1
  40   001B5CD0: 0031 000DAEC3                     jump       L3
  41   001B5CD6: 0005 0003              LX0:       push       SP[2]
  42   001B5CDA: 000A                              push       1
  43   001B5CDC: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  44   001B5CDE: 0033 000DAE72                     if SP[0]=0 then jump LX1
  45   001B5CE4: 000B                              push       2
  46   001B5CE6: 0031 000DAEC3                     jump       L3
  47   001B5CEC: 0005 0003              LX1:       push       SP[2]
  48   001B5CF0: 000B                              push       2
  49   001B5CF2: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  50   001B5CF4: 0033 000DAE7D                     if SP[0]=0 then jump LX2
  51   001B5CFA: 000D                              push       4
  52   001B5CFC: 0031 000DAEC3                     jump       L3
  53   001B5D02: 0005 0003              LX2:       push       SP[2]
  54   001B5D06: 000C                              push       3
  55   001B5D08: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  56   001B5D0A: 0033 000DAE88                     if SP[0]=0 then jump LX3
  57   001B5D10: 0011                              push       8
  58   001B5D12: 0031 000DAEC3                     jump       L3
  59   001B5D18: 0005 0003              LX3:       push       SP[2]
  60   001B5D1C: 000D                              push       4
  61   001B5D1E: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  62   001B5D20: 0033 000DAE93                     if SP[0]=0 then jump LX4
  63   001B5D26: 0019                              push       16
  64   001B5D28: 0031 000DAEC3                     jump       L3
  65   001B5D2E: 0005 0003              LX4:       push       SP[2]
  66   001B5D32: 000E                              push       5
  67   001B5D34: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  68   001B5D36: 0033 000DAE9F                     if SP[0]=0 then jump LX5
  69   001B5D3C: 0001 0032                         push       50
  70   001B5D40: 0031 000DAEC3                     jump       L3
  71   001B5D46: 0005 0003              LX5:       push       SP[2]
  72   001B5D4A: 000F                              push       6
  73   001B5D4C: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  74   001B5D4E: 0033 000DAEAB                     if SP[0]=0 then jump LX6
  75   001B5D54: 0001 0064                         push       100
  76   001B5D58: 0031 000DAEC3                     jump       L3
  77   001B5D5E: 0005 0003              LX6:       push       SP[2]
  78   001B5D62: 0010                              push       7
  79   001B5D64: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  80   001B5D66: 0033 000DAEB7                     if SP[0]=0 then jump LX7
  81   001B5D6C: 0001 03E8                         push       1000
  82   001B5D70: 0031 000DAEC3                     jump       L3
  83   001B5D76: 0005 0003              LX7:       push       SP[2]
  84   001B5D7A: 0011                              push       8
  85   001B5D7C: 004F                              if SP[0]<>SP[1] then push 0 else push 1
  86   001B5D7E: 0033 000DAEC8                     if SP[0]=0 then jump L2
  87   001B5D84: 0001 2710                         push       10000
  88   001B5D88: 0031 000DAEC3                     jump       L3
  89   001B5D8E: 0040                   L3:        mul        SP[0],SP[1]
  90   001B5D90: 003E                              add        SP[0],SP[1]
  91   001B5D92: 002A 0003                         mov        SP[2],SP[0]
  92   001B5D96: 002C                              pop
  93   001B5D98: 0005 0001              L2:        push       SP[0]
  94   001B5D9C: 000A                              push       1
  95   001B5D9E: 003E                              add        SP[0],SP[1]
  96   001B5DA0: 002A 0002                         mov        SP[1],SP[0]
  97   001B5DA4: 002C                              pop
  98   001B5DA6: 0031 000DAE44                     jump       L1
  99   001B5DAC: 002C                   L4:        pop
 100   001B5DAE: 003E                              add        SP[0],SP[1]
 101   001B5DB0: 0009                              push       0
 102   001B5DB2: 000F                              push       6
 103   001B5DB4: 0005 0001              L7:        push       SP[0]
 104   001B5DB8: 0009                              push       0
 105   001B5DBA: 004D                              if SP[0]>SP[1] then push 0 else push 1
 106   001B5DBC: 0033 000DAF5C                     if SP[0]=0 then jump L13
 107   001B5DC2: 0005 0001                         push       SP[0]
 108   001B5DC6: 0006 002A                         read TShip.sh_NumRocketSlots
 109   001B5DCA: 0008                              get_from_array
 110   001B5DCC: 000A                              push       1
 111   001B5DCE: 004D                              if SP[0]>SP[1] then push 0 else push 1
 112   001B5DD0: 0033 000DAF3E                     if SP[0]=0 then jump L10
 113   001B5DD6: 0005 0002                         push       SP[1]
 114   001B5DDA: 0005 0002                         push       SP[1]
 115   001B5DDE: 0006 002A                         read TShip.sh_NumRocketSlots
 116   001B5DE2: 0008                              get_from_array
 117   001B5DE4: 0005 0003                         push       SP[2]
 118   001B5DE8: 000F                              push       6
 119   001B5DEA: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 120   001B5DEC: 0033 000DAEFA                     if SP[0]=0 then jump LR5
 121   001B5DF2: 0001 0640                         push       1600
 122   001B5DF6: 0031 000DAF48                     jump       L11
 123   001B5DFC: 0005 0003              LR5:       push       SP[2]
 124   001B5E00: 000E                              push       5
 125   001B5E02: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 126   001B5E04: 0033 000DAF05                     if SP[0]=0 then jump LR4
 127   001B5E0A: 0018                              push       15
 128   001B5E0C: 0031 000DAF48                     jump       L11
 129   001B5E12: 0005 0003              LR4:       push       SP[2]
 130   001B5E16: 000D                              push       4
 131   001B5E18: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 132   001B5E1A: 0033 000DAF11                     if SP[0]=0 then jump LR3
 133   001B5E20: 0001 0140                         push       320
 134   001B5E24: 0031 000DAF48                     jump       L11
 135   001B5E2A: 0005 0003              LR3:       push       SP[2]
 136   001B5E2E: 000C                              push       3
 137   001B5E30: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 138   001B5E32: 0033 000DAF1D                     if SP[0]=0 then jump LR2
 139   001B5E38: 0001 0050                         push       80
 140   001B5E3C: 0031 000DAF48                     jump       L11
 141   001B5E42: 0005 0003              LR2:       push       SP[2]
 142   001B5E46: 000B                              push       2
 143   001B5E48: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 144   001B5E4A: 0033 000DAF28                     if SP[0]=0 then jump LR1
 145   001B5E50: 001D                              push       20
 146   001B5E52: 0031 000DAF48                     jump       L11
 147   001B5E58: 0005 0003              LR1:       push       SP[2]
 148   001B5E5C: 000A                              push       1
 149   001B5E5E: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 150   001B5E60: 0033 000DAF33                     if SP[0]=0 then jump LR0
 151   001B5E66: 000E                              push       5
 152   001B5E68: 0031 000DAF48                     jump       L11
 153   001B5E6E: 0005 0003              LR0:       push       SP[2]
 154   001B5E72: 0009                              push       0
 155   001B5E74: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 156   001B5E76: 0033 000DAF48                     if SP[0]=0 then jump L11
 157   001B5E7C: 000A                              push       1
 158   001B5E7E: 0031 000DAF48                     jump       L11
 159   001B5E84: 000A                   L10:       push       1
 160   001B5E86: 0005 0002                         push       SP[1]
 161   001B5E8A: 003F                              sub        SP[0],SP[1]
 162   001B5E8C: 002A 0002                         mov        SP[1],SP[0]
 163   001B5E90: 002C                              pop
 164   001B5E92: 0031 000DAED6                     jump       L7
 165   001B5E98: 0005 0002              L11:       push       SP[1]
 166   001B5E9C: 0013                              push       10
 167   001B5E9E: 004C                              if SP[0]<SP[1] then push 0 else push 1
 168   001B5EA0: 0033 000DAF53                     if SP[0]=0 then jump L9
 169   001B5EA6: 0013                              push       10
 170   001B5EA8: 002A 0003                         mov        SP[2],SP[0]
 171   001B5EAC: 002C                              pop
 172   001B5EAE: 0040                   L9:        mul        SP[0],SP[1]
 173   001B5EB0: 0013                              push       10
 174   001B5EB2: 0005 0002                         push       SP[1]
 175   001B5EB6: 0041                              div        SP[0],SP[1]
 176   001B5EB8: 002A 0005                         mov        SP[4],SP[0]
 177   001B5EBC: 002E 0003                         popx       3
 178   001B5EC0: 002C                   L13:       pop
 179   001B5EC2: 003E                              add        SP[0],SP[1]
 180   001B5EC4: 0005 0001                         push       SP[0]
 181   001B5EC8: 0009                              push       0
 182   001B5ECA: 004F                              if SP[0]<>SP[1] then push 0 else push 1
 183   001B5ECC: 0033 000DAF69                     if SP[0]=0 then jump L14
 184   001B5ED2: 000A                              push       1
 185   001B5ED4: 002A 0002                         mov        sp[1],sp[0]
 186   001B5ED8: 002C                              pop
 187   001B5EDA: 0035                   L14:       ret

_________________
Я вернулся !
    Добавлено: 18:34 08-01-2006   
Argonaut
 260 EGP


Рейтинг канала: 1(9)
Репутация: 43
Сообщения: 185
Откуда: Челябинск
Зарегистрирован: 27.04.2004
А мощность щита совсем не будет теперь учитываться?
(Хотя, наверное, считать его нет смысла - если сумел щит выбить, то не имеет значения, большой он был с самого начала или нет.)

А вроде еще кто-то говорил, что вероятность захвата повышается от скорости "убивания" щита. Или это ни есть так?
_________________
Объявление
Отдам малыша Ксенона в хорошие руки. Денег не предлагать.
    Добавлено: 12:59 10-01-2006   
xmagnat
 280 EGP


Рейтинг канала: 5(106)
Репутация: 54
Сообщения: 1244
Откуда: Екатеринбург
Зарегистрирован: 06.12.2003
Цитата:
А мощность щита совсем не будет теперь учитываться?

Так я же написал текст программы... Конечно учитывается!
Цитата:
если сумел щит выбить

Вот именно - если сумел выбить, а если не сумел ?
Цитата:
А вроде еще кто-то говорил, что вероятность захвата повышается от скорости "убивания" щита. Или это ни есть так?

Пока это так...
_________________
Я вернулся !
    Добавлено: 18:27 10-01-2006   
Канал X-Tension/X-BTF: «Разработка новых алгоритмов»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: День открытий: два года думала, что Рыб - это негр из Африки, которого французское посольство отправило учиться в Россию... (MeLeK)

  » Разработка новых алгоритмов | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18