0

Как сменить материал фабриката

Это статья об игре Boundless от DamTerrion
383 0 14 июня 2017 г. Редакция
Как вы, возможно, знаете, я долго мурыжил фабрикат "Зендикарские Эдры". Эдры это такие летающие куски камня октаэрической формы. В процессе работы над ними возникли некоторые трудности, которые удалось решить не совсем обычным способом.

Каквы,возможно,знаете,ядолгомурыжилфабрикат"ЗендикарскиеЭдры".Эдрыэтотакиелетающиекускикамняоктаэрическойформы.Впроцессеработынаднимивозниклинекоторыетрудности,которыеудалосьрешитьнесовсемобычнымспособом.Эдрыдолжнывисетьввоздухенаразнойвысоте,иначебудуточеньскучными.Ионидолжныбытьизразногокамня,хотякаждыйэдрпомоейидеесостоиттолькоизоднойпороды.Такчтоуменявовремяработывозниклитакиепроблемы:•Каксделатькопиисложногообъектанаразнойвысоте?•Каксделатькопиисложногообъектаизразныхматериалов?Можнобылобыпростоперерисоватькаждыйэкземплярнесколькораз-этопотребовалобывсеголишьводиннадцатьразбольшевременидлякаждоготипаэдра.АМиропостроительбылдовольнозабагованнойпрограммой,такчтотакаязадачаоказаласьневозможной-требовалосьбесконечноевремя,чтобысделатьэто.Кромеэтого,теэдры,чтобылипобольше,требовализначительныхусилийдлявоссоздания.Такчтопришлосьнайтиболеепростойспособ,лежащийвнеМиропостроителя.Любыевещи,скоторымиработаетМиропостроитель,сохраняютсяв.jsonфайлахвтекстовомвиде.Поэтомуярешилподправитьзаднимчисломтекстовоесодержимоефабриката.Чтобыпроиллюстрироватьдейственностьметода,воткартинка,составленнаяизснимковдереваNyuudles'адоипослепреобразования:Нижеприведёнснимокпростенького.jsonфайласмоимиэдрамивтекстовомредактореAkelPad.Вэтомфайлепредставлены:1.Метаданные2.Данныестроенияобъекта3.Размеробъекта4.НачальнаяточкаобъектаПойдёмразбиратьсяснизувверх.РазмериначальнаяточкаРазмерменятьврядликому-топонадобится.Почемунерекомендуюэтогоделать,ярасскажуниже.Еслижевыизменитеначальнуюточку,весьэкземплярфабрикатасместитсявсоответствующееместо.Этооченьполезно,есливыделаетеодинаковыеобъектынаразнойвысоте.Здесьихможносместитьоднойцифрой,анеперерисовыватьзаново.ДанныестроенияобъектаЗдесьразобратьсясложнее.Данныепредставленывформате"блоковтакого-томатериаластолько-то".Посутиэтооднастрока,ичтобыизнеёполучилсяобъект,необходимегоразмер.Какяпонимаю,Миропостроительраскладываетданныеврядблоков,азатемэтотрядначинаетделитьдоуказанногоразмера.СначалаМиропостроительвыкладываетснизувверхстолбецпокоординатам(0,0),затем,достигнувпотолка,такжевыкладываетсоседнийстолбецпокоординатам(1,0).Когдадостигнуташиринаобъекта,следующийстолбецпоявитсяв(0,1)ипроцесспродолжитсядозаполнениявсегообъёмаобъекта.Изменитеразмерфабриката-развёрткавобъёмнуюструктуруслетит.Этибуквыицифрыидутгруппамипо4знака.Каждаягруппакодируетрядблоков.Хотяэтонесовсемверно,прощевсеговосприниматьэтотак:первыетризнакаозначаютматериал,последний-количество.Прощевсегосколичеством,ноздесьестьоднахитрость.A=1,B=2,C=3,...Z=26,a=27,b=28,c=29,...z=52,0=53,1=54,...9=62,+=63,/=64.Авотесликоличествоблоковстановитсябольше64,тотогдаменяетсяпредпоследнийзнакнаследующийпопорядку:kA=1,lA=65,mA=129,nA=193.Этоправилоперестаётдействоватьпосле256блоков.Вероятно,послеэтогопростоначинаетсяноваяпоследовательность,хотяпроверитьнедовелось.Обратитевнимание,чтопредпоследнийзнакможетотличаться:"k"дляблоков,"o"дляобъектов.Дляпустогоблока-воздуха-итрёхбазовыхблоковстравойиспользуютсядругиесимволы.AAA-ПустотаBAA-VerdantGrassBlockBAM-BarbedGrassBlockBAY-GnarledGrassBlockoQk-AncientCorruptionmwk-AshmQk-Gleam1Ak-GleamLanternGgo-RefinedGleamGwo-RefinedGleam...DQo-NaturalCrystal0gk-DarkGlassdwk-DarkGlass.../z8-DEBUGDELETECHUNK8gk-DoorPiece9Ak-TrapdoorPiece8wk-WindowedDoorPieceCQo-Flower1Cgo-Flower2Cwo-Flower3DAo-Flower4Bwo-FibrousPlantCAo-InkyPlantMwo-AmantiaFungusNAo-BracketFungusNQo-CoralFungusNwo-DrippingFungusOAo-GlowingFungusNgo-ScatterFungus+wk-Chair+gk-TabletAk-CompactAmetyst...tQk-CompactDiamond...tgk-CompactEmerald...uAk-CompactRuby...uQk-CompactSapphire...twk-CompactTopaz...0Qk-Glassjgk-GraveloAk-GrowthmAk-IceBwk-GlacierBQo-Ladder0wk-LanternFAo-AmethystTorch9wk-BasicTorchFQo-DiamondTorchFgo-EmeraldTorchEwo-TorchGAo-RubyTorchGQo-SapphireTorchFwo-TopazTorchcgk-CompactCopper...bQk-RefinedCopper...dQk-CompactGoldAlloy...cAk-RefinedGoldAlloy...cwk-CompactIron...bgk-RefinedIron...dAk-CompactSilverAlloy...bwk-RefinedSilverAlloy...dgk-CompactTitaniumAlloy...cQk-RefinedTitaniumAlloy...nwk-Mouldmgk-Mud1wk-Slide1gk-TrampolineKgo-AloePlantKQo-CactusPlantLAo-FiddleheadPlantJwo-LotusPlantKwo-SnowdropPlantKAo-YuccaPlantLQo-Boulderggk-AlphabetBrickqwk-GlyphBrickBQk-IgneousRockYgk-IgneousRock...gQk-IgneousBrick...iAk-DecorativeIgneousRock1iwk-DecorativeIgneousRock2hQk-RefinedIgneousRockZQk-RefinedIgneousRock...fQk-IgneousStoneEAo-IgneousStone...BAk-MetamorphicRockYQk-MetamorphicRock...gAk-MetamorphicBrick...hwk-DecorativeMetamorphicRock1igk-DecorativeMetamorphicRock2hAk-RefinedMetamorphicRockZAk-RefinedMetamorphicRock...fAk-MetamorphicStoneDwo-MetamorphicStone...MAo-RockRingBgk-SedimentaryRockYwk-SedimentaryRock...fwk-SedimentaryBrick...iQk-DecorativeSedimentaryRock1jAk-DecorativeSedimentaryRock2hgk-RefinedSedimentaryRockZgk-RefinedSedimentaryRock...fgk-SedimentaryStoneEQo-SedimentaryStone...MQo-RockShardLwo-RockStackMgo-StalagmiteLgo-TallRockjQk-SandAgA-ClaySoilegk-CompactClayAwA-PeatySoilewk-CompactPeatAQA-SiltySoileQk-CompactSiltwwk-CompactBlink...xAk-CompactDarkMatter...xQk-CompactOortStone...wgk-CompactRift...nAk-SpongenQk-Tanglengk-Thornslgk-AncientWoodTimberawk-AncientWoodTimber...kgk-AncientWoodTrunkaAk-AncientWoodTrunk...kAk-ExoticLeavesjwk-LushLeaveslwk-LustrousWoodTimberbAk-LustrousWoodTimber...lAk-LustrousWoodTrunkaQk-LustrousWoodTrunk...lQk-TwistedWoodTimberagk-TwistedWoodTimber...kwk-TwistedWoodTrunkZwk-TwistedWoodTrunk...Теперьвызнаете,что"mAkT"-этодвадцатьблоковльда.Еслиаккуратнозаменитьвданныхфабрикатакодыодногоматериаланакодыдругого,товысможетебуквальнопревратитьсвинецвзолото!Ну,развечтовБезграничностинетсвинца:)Воткаквыглядитфабрикат,текстовоеописаниекоторогобылоприведеновыше:МетаданныеСметаданнымивсёзначительносложнее.Восновномониописываютскошенныеблоки,нонетолько.Там,гдевспискекодовстоит"..."этоозначает,чтокодируетсянесамблок,аегопроизводные-ступени,плитыилистены.Конфигурацияконкретногоблокаописываетсяметаданными.Вотпримерыметаданныхнецелыхблоков:•BAA-Slab(нижнийполублок)•DAA-Slabx2(дваполублока)•UAA-Step(ступени)•IAA-Wall(стенка)•yAA-фрагментдвери•QAA-фрагментлюкаОстальныевариантыещёпредстоитизучитьподробнее.Однако,кромескосовинецелыхблоковметаданныекодируютещёориентациюблоков,наличиетравыибогвестьчтоещё.Уменявозниклоощущение,чтоихнадосчитыватьгруппамипотри,анепочетыре.Ноэтугипотезуещёпредстоитпроверять,посколькуструктураметаданныхзначительносложнееструктурыблокови,возможно,попростунелинейна.ЗаключениеРазбираясьсдеревомнакартинкевначалестатьи,ястолкнулсясомножествомсложностей.Будьтепредельноосторожны,меняяматериалывтекстовомредакторе.Помните,что:•невсематериалыподдерживаютскосы;•невсеимеютнецелыепроизводныевродеступеней;•заменяемыепоследовательностисимволовмогутобнаружитьсявнегруппы,особенноесливнихестьповторяющиесясимволывроде"kQk";•всегданужнооставлятьзапаснуюкопиюфайла.Ковсемупрочему,ситуациюосложняетто,чтоунескашиваемыхблоковнецелыепроизводныемогуткодироватьсятемжекодом,аускашиваемых-другим.Ноесливамнеобходимопростосменитьгорнуюпороду,типдревесиныилилиствы,тоэтотметоддолженотличносработать.Мойадреспочты:damterrion@yandex.ru

Комментарии редакции и автора поста

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


Комментариев пока нет.


Добавлять комменты могут только редакторы и автор поста.