• Technical support is temporarily provided through the Discord

использование в текстах ссылок/переменных, вместо прямых имен/названий

vxsw

Captain Of The Ark
Gold Founder
Joined
Feb 10, 2016
Messages
2,671
Likes
1,050
#1
суть в чем. текстовка растет. мир меняется и меняться будет. смена названий предметов/локаций/нпц и т.д. и т.п., все это нужно учитывать в текстовых частях. что квесты, что какие-то текстовые описания (записки/книжки). все это нужно учитывать. но если на начальных стадиях это отслеживается относительно легко, то с ростом объема текстов, это неизбежно начинает вызывать проблемы. примеры уже есть:
https://pgenom.com/community/threads/Разночтение-при-описании-объектов.1237/
и они будут. будут и очепятки. конечно, все это правится через систему багрепортов. но это тоже время. как время на отлов, так и на фикс. причем с ростом текстов, это время будет постоянно увеличиваться.
всего этого, можно избежать, используя в качестве имен и названий, ссылки/переменные. такой подход частенько используется во многих играх с большими объемами текстов. в т.ч. и в пресловутой вовке.

работает это относительно просто. разберу пример для наглядности.
например, имеем квест вида:
Мне как-то Вася, по пьянке рассказал, что ловил в Розовом озере рыбу, и потерял свой Брутальный рыбоискатель. с тех пор, рыба у него плохо ловится, а у нас не хватает ингридиентов для изготовления Ухи из Розовой селедки. Если сможешь отыскать этот Брутальный рыбоискатель, я угощу тебя Ухой из розовой селедки и научу ее готовить.
ревард:
Уха из розовой селедки
Рецепт: Уха из розовой селедки
это видит игрок. на самом деле, квест хранится с таком виде:
Мне как-то %NPC2017_00%, по пьянке рассказал, что ловил в %LOC1015_05% рыбу, и потерял свой %ITEMQ5639_00%. с тех пор, рыба у него плохо ловится, а у нас не хватает ингридиентов для изготовления %ITEMC8715_01%. Если сможешь отыскать этот %ITEMQ5639_00%, я угощу тебя %ITEMC8715_04% и научу ее готовить.
ревард:
%ITEMC8715_00%
%ITEMR8715_00%
когда движок видит в тексте переменные (то что в %%), он отправляет запрос на сервер, или подставляет из локальной копии бд соответствующее значение.
конкретно для этого примера, имеем:
- в базе имен нпц (NPC), собственно непися с ид NPC2017 - "Вася"
- в базе названий локаций (LOC), локацию с ид 1015 - "Розовое озеро"
- в базе квестовых предметов (ITEMQ), предмет с ид 5639 - "Брутальный рыбоискатель"
- в базе крафтовых предметов (ITEMC), предмет с ид 8715 - "Уха из розовой селедки"
- в базе рецептов (ITEMR), рецепт с ид 8715 - "Рецепт: Уха из розовой селедки"

каждое название в каждой базе, имеет написания как в единственном/множественном числе, таки и во всех падежах.
переменная, строится по принципу:
Code:
[База][ИД]_[Ч][П]
где:
База - имя бд
ИД - ид имени
Ч - индекс используемого числа (0 - единственное; 1 - множественное)
П - индекс падежа (0 - именительный;1 - родительный; 2 - дательный; 3 - винительный; 4 - творительный; 5 - предложный)

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


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

вот как-то так Drag_man543
 

Kortic

Resident Of Avalon
Silver Founder
Joined
Dec 10, 2015
Messages
539
Likes
164
#2
А как падежи учитывать? Чтобы не было что то вроде. "Был я вчера у Вася Пупкин".
 

vxsw

Captain Of The Ark
Gold Founder
Joined
Feb 10, 2016
Messages
2,671
Likes
1,050
#3
А как падежи учитывать? Чтобы не было что то вроде. "Был я вчера у Вася Пупкин".
эм...
[База][ИД]_[Ч][П]
где:
База - имя бд
ИД - ид имени
Ч - индекс используемого числа (0 - единственное; 1 - множественное)
П - индекс падежа (0 - именительный;1 - родительный; 2 - дательный; 3 - винительный; 4 - творительный; 5 - предложный)
 

Kortic

Resident Of Avalon
Silver Founder
Joined
Dec 10, 2015
Messages
539
Likes
164
#4
ну просто с падежами не все так просто, нету такого, чтобы у каждого падежа было единственно верное окончание. Возможно поэтому в той же ВОВке при указании имена перса уточняют падежи. Например кому Вас[е], но Владислав[у]. И в случае Васи меняем последнию букву, а у Владислава добавляем. Вообще конечно это все решаемо. Но затраты будут серьезными.

А в дополнение к предложению было бы круто сделать систему ссылок прямо в тексте. Как в том же Моровинде, говорят сходи в ту локацию, жмем на название локации прямо в тексте квеста, и персонаж можно кратенько описать как туда можно добраться. Хотя тоже спорно надо ли это.
 

vxsw

Captain Of The Ark
Gold Founder
Joined
Feb 10, 2016
Messages
2,671
Likes
1,050
#5
Вас[е], но Владислав[у].
"вася" и "владислав" это разные ид Bye_man9877
=> и поля падежей у них будут разные.
 

Kortic

Resident Of Avalon
Silver Founder
Joined
Dec 10, 2015
Messages
539
Likes
164
#6
"вася" и "владислав" это разные ид Bye_man9877
=> и поля падежей у них будут разные.
в принципе да все решаемо. Для каждого id при добавлении в базу обязательно указывать все падежи и множ. един. числа. И точно так же при создании персонажа. На самом деле не так страшен черт, как я представлял на первый взгляд.
 

vxsw

Captain Of The Ark
Gold Founder
Joined
Feb 10, 2016
Messages
2,671
Likes
1,050
#7
ок. для уточнения.
таблица падежей для васи (ед.ч.):
0 - Вася
1 - Васи
2 - Васе
3 - Васю
4 - Васей
5 - Васе
таблица падежей для владислава (ед.ч.):
0 - Владислав
1 - Владислава
2 - Владиславу
3 - Владислава
4 - Владиславом
5 - Владиславе

то-же самое и для множественных чисел.

-----------------------------------
успел до меня написать))
Для каждого id при добавлении в базу обязательно указывать все падежи и множ. един. числа. И точно так же при создании персонажа.
воооот))
 
Joined
Jul 1, 2016
Messages
151
Likes
28
#8
Та я бы вообще не парился по этому поводу, есть жи перспективные разработки на эту тему)
Генератор стихов

Однажды Вася елки палки ехал задом на скакалке
И при этом рыбу ел а змея его шипел
Я болею типичным недугом провинциалки:
И атлантики воздух так враз потемнел,
)
 

Kortic

Resident Of Avalon
Silver Founder
Joined
Dec 10, 2015
Messages
539
Likes
164
#9
Та я бы вообще не парился по этому поводу, есть жи перспективные разработки на эту тему)
Генератор стихов

Однажды Вася елки палки ехал задом на скакалке
И при этом рыбу ел а змея его шипел
Я болею типичным недугом провинциалки:
И атлантики воздух так враз потемнел,
)
бррр...."а змея его шипел"...такое в квестах читать, да ну нафиг
 

faqir

Inquisitive
Joined
Aug 21, 2015
Messages
27
Likes
3
#10
когда занимался модами для одной игры, старался юзать только такие переменные, удобно, дабы не париться с локализацией на другие языки
 
Joined
Jul 1, 2016
Messages
151
Likes
28
#13
меня коробит когда фразы звучат не по русски "змея его шипел[a]".
Ну тогда держи)

-Дэвушка, на вам сидит большой зеленый мухм
-Не на вам, а на вас
-На мню?
-Не на мню, а на мне
-Опять на тебю? вах какой шустрый мух)
 

tsopov86

Смехопсишарик
Staff member
Joined
Jun 29, 2015
Messages
391
Likes
362
#15
Прошу прощения, но не смог удержаться.
"а змея его шипел"
анекдот на эту тему)))))

Одна подруга жалуется другой:
- У меня муж алкоголик. Я уже так от него устала. Что мне делать?
Та ей отвечает:
- Да, у меня была такая проблема. Ты попробуй сделать так: когда муж пьяным придет и ляжет спать, ты ему в штаны положи змею. Он увидит ее, подумает, что началась белая горячка, и пить перестанет.
Ну первая так и сделала. На следующее утро мужик просыпается, идет в туалет, достает из штанов змею, она ему:
- Шшш-ш-ш-ш...
Мужик:
- Я тебе дам шшшш, писай давай!!!
 
Top Bottom