Съвети за създателите на карти - създателите на мисии за Operation Flashpoint, ArmA
По принцип това са само лични наблюдения и всеки е свободен да прави както иска, но според мен това ще помогне да се направят мисиите по-логични от гледна точка на логиката, да се избегне тяхната „бавност“ на слаби машини и просто да направи създаването и редактирането им по-удобно (между другото, тук има добър сайт, където можете да изтеглите игри за android 4.1 - бел.ред.).
Грешка едно:
Много създатели на карти използват пътни точки с всички сили. Често това води до факта, че мисията започва да се забавя много. И ако все още може да се оправдае използването им за движение или патрулиране, тогава изглежда много грозно да ги настройвате да задават поведение, формация и т.н. Обичайно е да видите пътна точка на същото място като единица, което е просто команда за подреждане или казване на единицата да „седне“.
Това е фундаментално погрешно! Няколко дузини допълнителни вапове вече забележимо намаляват ефективността на мисията. Защо се случва това? Струва си просто да погледнете как изглежда описанието на VP в mission.sqm, където една точка отнема около двадесет реда код, а в мисии, богати на тях, това е до четиридесет процента от целия файл! Е, кой иска мисията му да се забави с 40% повече, отколкото би могла? И имайте предвид, че това понякога се среща дори сред опитни производители на карти!
Заключение: ИзползвайтеsetBehaviour,setFormation,setCombatMode и подобни команди в реда за инициализация на модула, такъв запис отнема само един ред срещу две дузини реда на точката. Понякога можете да откажете да използвате VI при преместване, използвайтеMove Getpos иGetMarkerPos. Такъв запис ще бъде много по-кратък от използването на който и да е вейп и следователно няма да създаде "спирачки" в мисията. От опит ще кажа, че имам мисии без точки и досега никой не е забелязал това :-)
Грешка втора:
Много създатели на карти, и не само начинаещи, когато поставят група в хеликоптер или раздават определени оръжия, просто пишат в инициализацията на всяка единица This MoveInCargo Vert или This AddWeapon „Бинокъл“. Защо е необходима допълнителната работа за редактиране на всяка единица в група от десет души? Ами ако има няколко такива групи?
Заключение: Много е просто, направете всичко, като свържете недефинирана променлива към груповия масив! На практика изглежда по следния начин -"_x MoveInCargo Vert" за всяка група групи това. Като напишем това в инициализацията на командира на групата, ще получим всички манекени, които седят в хеликоптера.
Друг пример е раздаването на оръжия. Да предположим, че трябва да раздадете очила за нощно виждане на всеки член на отряда, напишете следното на командира -"_x addweapon ""NVGoggles""" за всяка група единици това. Моля, обърнете внимание, че това, което трябва да бъде в кавички (име на оръжие, поведение, формация и т.н.) в този израз трябва да бъде в двойни кавички! Това може да се използва за всякакви действия с масиви, а не само с групи. Ако, например, е необходимо да се приземят трима произволни войници от превозното средство, ние пишем това -"unassignVehicle _x" за всеки [sold1,sold2,sold3], трима момчета под тези имена послушно ще излязат от колата :-)
Трета грешка:
Тази грешка я има и при доста опитни сценаристи. Често можете да видите нещо като този тип проверка на условие в скрипт
Какво ни дава? Няма значение. Добре. Какво не е наред?
На всеки половин секунда скриптът ще се връща в началото и ще проверява отново дали условието е изпълнено (което може изобщо да не се случи по време на мисията). Това изисква процесорът да преоцени състоянието и да изведе резултатите. Ако има няколко такива скрипта, изпълнявани едновременно и вместополовин секунда има нещо по-микроскопично като 0.0001, слаба машина може и да увисне! Имаме ли нужда от такава загуба на процесорно време? И ако е онлайн мисия, какво бихте направили с нейния създател?
Извод: Всичко е просто като морков. Горната тромава конструкция ще бъде идеално заменена от следния ред @ Peremennaya
Всичко! Докато Peremennaya не е вярна, сценарият няма да продължи. Дългите скриптови конструкции не само водят до забавяне, но просто са неудобни за писане и разбиране.
Четвърта грешка:
И принадлежи на много хора. В сценариите на диалози и анимационни филми те пишат нещо като заглавен текст ["Вася - Петя, край!", "просто надолу"]. А сега нека помислим до какво води, или по-скоро какво губим в този случай.
Губим възможността да направим кампания \ мисия \ добавка, или каквото имате, на няколко езика веднъж (и в почти всички добавки те забравят и родния си език). В замяна получаваме ужасно разхвърляни скриптове. Имаме ли нужда от него?
Разбира се, че не! Ние използвамеstringtable за това! Това ще ни даде възможност да изведем низове за различни езици, разделени със запетаи. Няма да навлизам в подробности за компилирането на tryngtables, по-лесно е да го прочетете тук, но нека обърнем внимание на разликата в използването на низове в различни източници.
Така че, ако в скрипт трябва да напишете нещо подобно:
titletext [localize "STR_string","plain down"], тогава в описанието, addon config и main.cpp трябва да напишете следното: OnLoadMission = $STR_string;
Това е всичко за сега. Надявам се, че тези съвети ще ви помогнат да избегнете досадни грешки и недостатъци и в крайна сметка ще доведат до факта, че скоро ще видим вашите страхотни мисии и добавки!
И забележете, тук не отварям нещо супер сложно или ново - сложни ръководстваи tueva справочници, както се казва, майната им на OFPEC. Опитах се само да споделя основните трикове, които отличават мисиите, направени "според ръководството" от тези, направени "самостоятелно". Винаги помнете, че бъдещият бригадир, comrefs и уроците са само инструмент и вие работите с главата си.
Да, и аз говорих за не бог знае какви сложни неща. И затова, според многобройни искания от работници, скоро ще публикувам втората част на статията, почти изцяло посветена на създаването на висококачествени карикатури.