<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[irpg Community - Others]]></title>
		<link>https://irpg.in.th/</link>
		<description><![CDATA[irpg Community - https://irpg.in.th]]></description>
		<pubDate>Thu, 30 Apr 2026 14:33:46 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[วิธีเขียน C# Script ใน Bakin]]></title>
			<link>https://irpg.in.th/thread-3660.html</link>
			<pubDate>Wed, 19 Oct 2022 14:51:49 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=101">XthemeCore</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3660.html</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size">เราสามารถเขียน Script ลงใน RPG Developer Bakin ได้ โดยมี 2 วิธี ดังนี้</span><br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1.เพิ่มจากใน Event</span></span><br />
<img src="https://i.imgur.com/P0XZb6s.png" loading="lazy"  alt="[Image: P0XZb6s.png]" class="mycode_img" /><br />
<br />
<span style="font-size: large;" class="mycode_size">เป็นวิธีที่ง่ายที่สุด โดยการเปิดหน้า Event ขึ้นมา จากนั้นดูมุมล่างซ้ายสุดที่เขียนว่า C# Program Assignment ให้คลิกที่ปุ่มลูกศรลง</span><br />
<span style="font-size: large;" class="mycode_size">จะปรากฎหน้าต่างดังภาพด้านล่าง ให้คลิกที่ Create New จากนั้นใส่ชื่อ Script ที่ต้องการ แล้วกดโอเค</span><br />
<br />
<img src="https://i.imgur.com/HcPFlR2.jpg" loading="lazy"  alt="[Image: HcPFlR2.jpg]" class="mycode_img" /><br />
<br />
<span style="font-size: large;" class="mycode_size">Bakin จะสร้างไฟล์ C# Script (ไฟล์นามสกุล .cs) ขึ้นมา ไว้ในโฟลเดอร์ Scripts ในโฟลเดอร์โปรเจคของเรา</span><br />
<span style="font-size: large;" class="mycode_size">หน้าตาของ Script จะเป็นตามภาพด้านล่าง โครงสร้างคล้าย C# ใน Unity</span><br />
<br />
<span style="font-size: large;" class="mycode_size">สำหรับรายละเอียดและคำสั่ง API ณ ปัจจุบัน ยังไม่มีข้อมูลอย่างเป็นทางการเนื่องจาก Bakin ยังเป็น Early Access </span><br />
<span style="font-size: large;" class="mycode_size">API สามารถแอบดูได้จากไฟล์ DLL ของ Bakin (ระดับ Advance)</span><br />
<span style="font-size: large;" class="mycode_size">จากข้อมูลใน Discord ตัว BakinObject สามารถใช้คลาส MapScene MapCharacter และ Catalog ได้ </span><br />
<br />
<span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/azkYCGK.png" loading="lazy"  alt="[Image: azkYCGK.png]" class="mycode_img" /></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">2.สร้าง Plugin (Advance)</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="color: #cc3333;" class="mycode_color"><span style="font-size: large;" class="mycode_size">**จนกว่าจะมีการประกาศ API และวิธีการอย่างเป็นทางการ ให้ถือว่าการสร้าง Plugin เหมาะสำหรับผู้ที่คุ้นเคยกับ Visual Studio และ C# </span></span><span style="font-size: large;" class="mycode_size"><span style="color: #cc3333;" class="mycode_color">มาก่อนเท่านั้น</span></span></span></span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">2.1 หา PluginSample มาใช้เป็นตัวอย่าง</span></span></span><br />
<span style="font-size: large;" class="mycode_size">ให้คลิกขวาที่ไอคอน RPG Developer Bakin ใน Steam จากนั้นเลือก Manage -&gt; Browse local files เพื่อเปิดโฟลเดอร์ที่ติดตั้ง Bakin ไว้<br />
จากนั้นให้ไปที่โฟลเดอร์ sdk จะมีไฟล์ plugin ตัวอย่างอยู่ </span><br />
<img src="https://i.imgur.com/PJCt9iM.png" loading="lazy"  alt="[Image: PJCt9iM.png]" class="mycode_img" /><br />
<span style="font-size: large;" class="mycode_size">ให้แตกไฟล์ (unzip/uncompress) PluginSample.zip ไว้ในตำแหน่งที่ต้องการ จะได้โปรเจค PluginSample ไว้เป็นตัวอย่างให้การพัฒนา</span><br />
<span style="font-size: large;" class="mycode_size">ต้องใช้ Visual Studio และ C# .NET SDK</span><br />
<span style="font-size: large;" class="mycode_size"><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">2.2 แก้ปัญหา References</span></span></span><br />
<span style="font-size: large;" class="mycode_size">เมื่อเปิดตัวโปรเจคขึ้นมา จะไม่สามารถ compile ได้เนื่องจากขาด References ที่ถูกต้อง</span><br />
<img src="https://i.imgur.com/iI81NeN.png" loading="lazy"  alt="[Image: iI81NeN.png]" class="mycode_img" /><br />
<span style="font-size: large;" class="mycode_size">ให้เพิ่ม Reference เข้าไปโดยตำแหน่งของไฟล์จะอยู่ในโฟลเดอร์ lib ในโฟลเดอร์ที่ติดตั้งเอนจิ้น มีชื่อดังต่อไปนี้</span><br />
<span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/x3o7R04.png" loading="lazy"  alt="[Image: x3o7R04.png]" class="mycode_img" /></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">อย่างไรก็ตามตัว Yukar Editor ที่อยู่ในไฟล์ bakin.resource.dll และ rpgbuilder.resource.dll นั้น ผู้เขียนยังไม่สามารถเข้าถึงได้จากใส่ references</span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">จึงแจ้งให้ทราบว่ายังไม่สามารถใช้งาน Yukar.Tool ได้ (แต่ไม่จำเป็นสำหรับ PluginSample) หากมีอัพเดทเพิ่มเติมจะมาใส่ในภายหลัง</span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">เมื่อเพิ่ม references แล้วสามารถกด build ได้เลย จะได้ไฟล์ PluginSample.dll และไฟล์ PluginSample.resource.dll (ในโฟลเดอร์ en) </span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">(หากมันยังแจ้งว่าหา references ไม่เจออยู่ ให้ลบ reference เก่าที่ขึ้นเครื่องหมาย ! แล้วค่อยเพิ่ม reference เข้าไป)</span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">2.3 นำ Plugin ที่สร้างเสร็จไปใช้</span></span></span></span><br />
<span style="font-size: large;" class="mycode_size">ให้ก็อปมาไฟล์ DLL ทั้งสองมา </span><span style="font-size: large;" class="mycode_size">ใส่ในโฟลเดอร์ Plugin ในโฟลเดอร์ที่ติดตั้งเอนจิ้นก็จะสามารถใช้งานได้</span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/lKa96DQ.png" loading="lazy"  alt="[Image: lKa96DQ.png]" class="mycode_img" /><br />
</span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/MD2dHg5.png" loading="lazy"  alt="[Image: MD2dHg5.png]" class="mycode_img" /></span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">หมายเหตุ:</span>  </span><span style="font-size: large;" class="mycode_size">การ build ตัว PluginSample แล้วเอามาใส่ จะเป็นการทับ PluginSample ตัวเดิม (เพราะมันมีอยู่แล้ว) ในภาพเป็นการสร้าง Plugin ใหม่ที่ไม่ใช่ชื่อ PluginSample วิธีการคือต้องแก้ไข namespace ของคลาส และแก้ไขข้อมูลใน AssemblyInfo.cs ซึ่งผู้เขียนคาดหวังว่าผู้ใช้ระดับ Advance สามารถทำได้</span><br />
<br />
<span style="font-size: large;" class="mycode_size"> </span>]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size">เราสามารถเขียน Script ลงใน RPG Developer Bakin ได้ โดยมี 2 วิธี ดังนี้</span><br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1.เพิ่มจากใน Event</span></span><br />
<img src="https://i.imgur.com/P0XZb6s.png" loading="lazy"  alt="[Image: P0XZb6s.png]" class="mycode_img" /><br />
<br />
<span style="font-size: large;" class="mycode_size">เป็นวิธีที่ง่ายที่สุด โดยการเปิดหน้า Event ขึ้นมา จากนั้นดูมุมล่างซ้ายสุดที่เขียนว่า C# Program Assignment ให้คลิกที่ปุ่มลูกศรลง</span><br />
<span style="font-size: large;" class="mycode_size">จะปรากฎหน้าต่างดังภาพด้านล่าง ให้คลิกที่ Create New จากนั้นใส่ชื่อ Script ที่ต้องการ แล้วกดโอเค</span><br />
<br />
<img src="https://i.imgur.com/HcPFlR2.jpg" loading="lazy"  alt="[Image: HcPFlR2.jpg]" class="mycode_img" /><br />
<br />
<span style="font-size: large;" class="mycode_size">Bakin จะสร้างไฟล์ C# Script (ไฟล์นามสกุล .cs) ขึ้นมา ไว้ในโฟลเดอร์ Scripts ในโฟลเดอร์โปรเจคของเรา</span><br />
<span style="font-size: large;" class="mycode_size">หน้าตาของ Script จะเป็นตามภาพด้านล่าง โครงสร้างคล้าย C# ใน Unity</span><br />
<br />
<span style="font-size: large;" class="mycode_size">สำหรับรายละเอียดและคำสั่ง API ณ ปัจจุบัน ยังไม่มีข้อมูลอย่างเป็นทางการเนื่องจาก Bakin ยังเป็น Early Access </span><br />
<span style="font-size: large;" class="mycode_size">API สามารถแอบดูได้จากไฟล์ DLL ของ Bakin (ระดับ Advance)</span><br />
<span style="font-size: large;" class="mycode_size">จากข้อมูลใน Discord ตัว BakinObject สามารถใช้คลาส MapScene MapCharacter และ Catalog ได้ </span><br />
<br />
<span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/azkYCGK.png" loading="lazy"  alt="[Image: azkYCGK.png]" class="mycode_img" /></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">2.สร้าง Plugin (Advance)</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="color: #cc3333;" class="mycode_color"><span style="font-size: large;" class="mycode_size">**จนกว่าจะมีการประกาศ API และวิธีการอย่างเป็นทางการ ให้ถือว่าการสร้าง Plugin เหมาะสำหรับผู้ที่คุ้นเคยกับ Visual Studio และ C# </span></span><span style="font-size: large;" class="mycode_size"><span style="color: #cc3333;" class="mycode_color">มาก่อนเท่านั้น</span></span></span></span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">2.1 หา PluginSample มาใช้เป็นตัวอย่าง</span></span></span><br />
<span style="font-size: large;" class="mycode_size">ให้คลิกขวาที่ไอคอน RPG Developer Bakin ใน Steam จากนั้นเลือก Manage -&gt; Browse local files เพื่อเปิดโฟลเดอร์ที่ติดตั้ง Bakin ไว้<br />
จากนั้นให้ไปที่โฟลเดอร์ sdk จะมีไฟล์ plugin ตัวอย่างอยู่ </span><br />
<img src="https://i.imgur.com/PJCt9iM.png" loading="lazy"  alt="[Image: PJCt9iM.png]" class="mycode_img" /><br />
<span style="font-size: large;" class="mycode_size">ให้แตกไฟล์ (unzip/uncompress) PluginSample.zip ไว้ในตำแหน่งที่ต้องการ จะได้โปรเจค PluginSample ไว้เป็นตัวอย่างให้การพัฒนา</span><br />
<span style="font-size: large;" class="mycode_size">ต้องใช้ Visual Studio และ C# .NET SDK</span><br />
<span style="font-size: large;" class="mycode_size"><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">2.2 แก้ปัญหา References</span></span></span><br />
<span style="font-size: large;" class="mycode_size">เมื่อเปิดตัวโปรเจคขึ้นมา จะไม่สามารถ compile ได้เนื่องจากขาด References ที่ถูกต้อง</span><br />
<img src="https://i.imgur.com/iI81NeN.png" loading="lazy"  alt="[Image: iI81NeN.png]" class="mycode_img" /><br />
<span style="font-size: large;" class="mycode_size">ให้เพิ่ม Reference เข้าไปโดยตำแหน่งของไฟล์จะอยู่ในโฟลเดอร์ lib ในโฟลเดอร์ที่ติดตั้งเอนจิ้น มีชื่อดังต่อไปนี้</span><br />
<span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/x3o7R04.png" loading="lazy"  alt="[Image: x3o7R04.png]" class="mycode_img" /></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">อย่างไรก็ตามตัว Yukar Editor ที่อยู่ในไฟล์ bakin.resource.dll และ rpgbuilder.resource.dll นั้น ผู้เขียนยังไม่สามารถเข้าถึงได้จากใส่ references</span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">จึงแจ้งให้ทราบว่ายังไม่สามารถใช้งาน Yukar.Tool ได้ (แต่ไม่จำเป็นสำหรับ PluginSample) หากมีอัพเดทเพิ่มเติมจะมาใส่ในภายหลัง</span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">เมื่อเพิ่ม references แล้วสามารถกด build ได้เลย จะได้ไฟล์ PluginSample.dll และไฟล์ PluginSample.resource.dll (ในโฟลเดอร์ en) </span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size">(หากมันยังแจ้งว่าหา references ไม่เจออยู่ ให้ลบ reference เก่าที่ขึ้นเครื่องหมาย ! แล้วค่อยเพิ่ม reference เข้าไป)</span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">2.3 นำ Plugin ที่สร้างเสร็จไปใช้</span></span></span></span><br />
<span style="font-size: large;" class="mycode_size">ให้ก็อปมาไฟล์ DLL ทั้งสองมา </span><span style="font-size: large;" class="mycode_size">ใส่ในโฟลเดอร์ Plugin ในโฟลเดอร์ที่ติดตั้งเอนจิ้นก็จะสามารถใช้งานได้</span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/lKa96DQ.png" loading="lazy"  alt="[Image: lKa96DQ.png]" class="mycode_img" /><br />
</span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><img src="https://i.imgur.com/MD2dHg5.png" loading="lazy"  alt="[Image: MD2dHg5.png]" class="mycode_img" /></span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">หมายเหตุ:</span>  </span><span style="font-size: large;" class="mycode_size">การ build ตัว PluginSample แล้วเอามาใส่ จะเป็นการทับ PluginSample ตัวเดิม (เพราะมันมีอยู่แล้ว) ในภาพเป็นการสร้าง Plugin ใหม่ที่ไม่ใช่ชื่อ PluginSample วิธีการคือต้องแก้ไข namespace ของคลาส และแก้ไขข้อมูลใน AssemblyInfo.cs ซึ่งผู้เขียนคาดหวังว่าผู้ใช้ระดับ Advance สามารถทำได้</span><br />
<br />
<span style="font-size: large;" class="mycode_size"> </span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[การหมุุนมุมกล้องของ bakin โดยไม่ต้องคลิกซ้าย]]></title>
			<link>https://irpg.in.th/thread-3659.html</link>
			<pubDate>Wed, 19 Oct 2022 12:31:46 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=1529">redcrow</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3659.html</guid>
			<description><![CDATA[<img src="http://irpg.in.th/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAAAiCAYAAACEPZHaAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARlSURBVHhe7Zu/buJKFMa/3AdIeAbvSkSUFHSr3AZSpFi54Bap6ALNFQ0FT0DhJtoG0lGloaBKEajSUlCiRNr1Mzh5gdxzxnOMl+v/kMTRzk8aMR57zkw835xzbMVHnue9wmCI4Pv3f/CXrhsMkcR6kKOjI/V7fHysfg/Ny8uL+n19NQ6srMR6EBYHC+OtxMGIfRGioZyYEGNIJDLEnJyc6JrP1dWVrm25ubnRtd/Jc63w/Pysa4YykSlJjVpwJqo9z7WGz0GiBwkv7OXlJc7OzlT94eEBt7e3qh6FeIxdYcR5EuNByknmx1wRBy84F65zWxwsIC6Gz08mgYg4BBHJLuwhWDjsXbhwPS3/MJQb8xRjSCRTDhIOMQx7haQ8RMJPUp7CiHcxOUg5yZyD8EKzIHhB08TBsJiiQlAR3HEfrUoFFVVa6I9dfeYjWKIfzEWXFs1pmX1Oy35L9esv2VafLKYRd13W/vuR+SnmEIjHCHsiJs6DLPsVtDcjzCY9NC1qcJcYd9sY1mbwrpv+Re8KL4qD6nqBHs+HoTn1aU4be41F0BiDO0ar/oSBd41Cs9+3f06+ffu7xDkI3Qxn2sFsocXBWE30JiM0pndvvnMyQ3O6pjlh+KM8czog5RXIryesOhf/3ylWD4tgB9HubYVdfigE8W4jFzwOhagWnQuHLD4W3OVOKMsRNmCdw25McacVEmlL7f4hVpiiTW1j9jwSImLm6iPXueQ9pT8fh/oTsfNPtJ1OYYFIPiLsHu+L+3Ojaxr1h8oN4BjOjbR7Fx4oTPplbe/s5CnmuMCEz806dK6OrhyvQ7uebHedKgZrsTNA1anrMXISZ+sXCZvGbIC8ohcKUQGhuaq5dUlE+pTC8r2n6r8TYnjM9gZ2MKaNTTvcP812PIUEkiSEQ4nE+lrTNY3yHHwD1hg1dBuhPIJ4EdqhU2zwM/jjOxj0mnRrieYFauFj6ysd+9e693OsVkO062KH8pwVsNkaykxxW7tzy44aszPYio7u1aCzwvxexixuO1EgUYudRQBF+/3Gl2p6rkFutT4HBhO9c7wZ3YqCdCjxVTa2JTXpFNx7zFcdXMi23sdWyUj1IOGFzbPIRfsFqF1A8bY1xjYdcEkTdbUj1RGHoVoVX/S9d5d35BPyY53bJEYH4yBu+7lNphCjnmKGwOhf5fb3slWQYEy5TxRynGkD9vn+oswUYniBiyxy0X5C89rD2n6CI+66UoeDGUbaTVi9CUYUXevqXAXdO789NyTGyczGnHIFPyw4oICO6CfpFaUyMh8qXbp2EHrEzWUrJxQeOBn2k1zdxqgxa5gHYW2O2mwSkefkJ9P/gySx+04jirj3KdLHvEktJ+V+D2IoBR8mkH1Cj+H9+BCBGHF8Hg6Wg2QlShwmBykn756DGM/x+Yj0IPJdzHvAH1CZj6fKiXmKMaQSKRDe0byz5fPIt0DsG+9RbiJDjMHAmBBjSCXwII+Pj6rB8Odyenqqaz7GgxhSAP4DHGZ9KX3S1QMAAAAASUVORK5CYII=" loading="lazy"  alt="[Image: x+Yj0IPJdzHvAH1CZj6fKiXmKMaQSKRDe0byz5fP...VORK5CYII=]" class="mycode_img" /><img src="https://scontent.fcnx4-1.fna.fbcdn.net/v/t1.15752-9/306707873_657670095975905_3393450148721323209_n.png?_nc_cat=108&amp;ccb=1-7&amp;_nc_sid=ae9488&amp;_nc_ohc=LY7DKfWg-UcAX_3h4bm&amp;_nc_ht=scontent.fcnx4-1.fna&amp;oh=03_AdQht3BVnnL_VlftbLeGyVrB1pG_djHb_BksTDS7n0f2jw&amp;oe=63764C37" loading="lazy"  alt="[Image: 306707873_657670095975905_33934501487213...e=63764C37]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[<img src="http://irpg.in.th/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAAAiCAYAAACEPZHaAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARlSURBVHhe7Zu/buJKFMa/3AdIeAbvSkSUFHSr3AZSpFi54Bap6ALNFQ0FT0DhJtoG0lGloaBKEajSUlCiRNr1Mzh5gdxzxnOMl+v/kMTRzk8aMR57zkw835xzbMVHnue9wmCI4Pv3f/CXrhsMkcR6kKOjI/V7fHysfg/Ny8uL+n19NQ6srMR6EBYHC+OtxMGIfRGioZyYEGNIJDLEnJyc6JrP1dWVrm25ubnRtd/Jc63w/Pysa4YykSlJjVpwJqo9z7WGz0GiBwkv7OXlJc7OzlT94eEBt7e3qh6FeIxdYcR5EuNByknmx1wRBy84F65zWxwsIC6Gz08mgYg4BBHJLuwhWDjsXbhwPS3/MJQb8xRjSCRTDhIOMQx7haQ8RMJPUp7CiHcxOUg5yZyD8EKzIHhB08TBsJiiQlAR3HEfrUoFFVVa6I9dfeYjWKIfzEWXFs1pmX1Oy35L9esv2VafLKYRd13W/vuR+SnmEIjHCHsiJs6DLPsVtDcjzCY9NC1qcJcYd9sY1mbwrpv+Re8KL4qD6nqBHs+HoTn1aU4be41F0BiDO0ar/oSBd41Cs9+3f06+ffu7xDkI3Qxn2sFsocXBWE30JiM0pndvvnMyQ3O6pjlh+KM8czog5RXIryesOhf/3ylWD4tgB9HubYVdfigE8W4jFzwOhagWnQuHLD4W3OVOKMsRNmCdw25McacVEmlL7f4hVpiiTW1j9jwSImLm6iPXueQ9pT8fh/oTsfNPtJ1OYYFIPiLsHu+L+3Ojaxr1h8oN4BjOjbR7Fx4oTPplbe/s5CnmuMCEz806dK6OrhyvQ7uebHedKgZrsTNA1anrMXISZ+sXCZvGbIC8ohcKUQGhuaq5dUlE+pTC8r2n6r8TYnjM9gZ2MKaNTTvcP812PIUEkiSEQ4nE+lrTNY3yHHwD1hg1dBuhPIJ4EdqhU2zwM/jjOxj0mnRrieYFauFj6ysd+9e693OsVkO062KH8pwVsNkaykxxW7tzy44aszPYio7u1aCzwvxexixuO1EgUYudRQBF+/3Gl2p6rkFutT4HBhO9c7wZ3YqCdCjxVTa2JTXpFNx7zFcdXMi23sdWyUj1IOGFzbPIRfsFqF1A8bY1xjYdcEkTdbUj1RGHoVoVX/S9d5d35BPyY53bJEYH4yBu+7lNphCjnmKGwOhf5fb3slWQYEy5TxRynGkD9vn+oswUYniBiyxy0X5C89rD2n6CI+66UoeDGUbaTVi9CUYUXevqXAXdO789NyTGyczGnHIFPyw4oICO6CfpFaUyMh8qXbp2EHrEzWUrJxQeOBn2k1zdxqgxa5gHYW2O2mwSkefkJ9P/gySx+04jirj3KdLHvEktJ+V+D2IoBR8mkH1Cj+H9+BCBGHF8Hg6Wg2QlShwmBykn756DGM/x+Yj0IPJdzHvAH1CZj6fKiXmKMaQSKRDe0byz5fPIt0DsG+9RbiJDjMHAmBBjSCXwII+Pj6rB8Odyenqqaz7GgxhSAP4DHGZ9KX3S1QMAAAAASUVORK5CYII=" loading="lazy"  alt="[Image: x+Yj0IPJdzHvAH1CZj6fKiXmKMaQSKRDe0byz5fP...VORK5CYII=]" class="mycode_img" /><img src="https://scontent.fcnx4-1.fna.fbcdn.net/v/t1.15752-9/306707873_657670095975905_3393450148721323209_n.png?_nc_cat=108&amp;ccb=1-7&amp;_nc_sid=ae9488&amp;_nc_ohc=LY7DKfWg-UcAX_3h4bm&amp;_nc_ht=scontent.fcnx4-1.fna&amp;oh=03_AdQht3BVnnL_VlftbLeGyVrB1pG_djHb_BksTDS7n0f2jw&amp;oe=63764C37" loading="lazy"  alt="[Image: 306707873_657670095975905_33934501487213...e=63764C37]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[การใช้ (และแก้ปัญหา) ภาษาไทยในโปรแกรม 001 Game Creator]]></title>
			<link>https://irpg.in.th/thread-3605.html</link>
			<pubDate>Tue, 09 Nov 2021 20:39:48 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=17">OP_Jum_RPG</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3605.html</guid>
			<description><![CDATA[โปรแกรม 001 Game Creator สามารถใช้ภาษาไทยได้<br />
แต่ยังใช้กับกล่องข้อความประเภทพิมพ์ (เช่น แชท หรือหน้ login ในโหมด MMORPG) ไม่ได้นะครับ น่าจะต้องไปแก้ตัว input ด้วย<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">(ยังพบปัญหาอยู่ กรุณาอ่านปัญหาและวิธีแก้ให้ครบด้วยนะครับ)</span></span><br />
<img src="https://i.imgur.com/mYdH5u6l.png" loading="lazy"  alt="[Image: mYdH5u6l.png]" class="mycode_img" /><br />
<br />
<br />
โดยการตั้งค่า Fonts ให้เป็นฟอนต์ที่รองรับภาษาไทย<br />
ในส่วนของ Fonts ดังรูป<br />
<br />
<img src="https://i.imgur.com/gWfLnEjl.png" loading="lazy"  alt="[Image: gWfLnEjl.png]" class="mycode_img" /><br />
โดยเลือกประเภทของข้อความที่ต้องการ <br />
โดยกรอบข้อความจะอยู่ในหมวด Main Fonts<br />
และเลือกฟอนต์ที่ต้องการรวมถึงตั้งค่าต่างๆให้เรียบร้อย<br />
และในช่อง Available Characters ถ้าในช่อง Thai ยังไม่มีเครื่องหมายถูก ก็ให้เลือกด้วยนะครับ<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: xx-large;" class="mycode_size">แต่</span></span><br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Font จำนวนมาก(เท่าที่สุ่มๆดู) มีปัญหากับสระลอยในภาษาไทย</span></span></span><br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">และอาการหนักกว่า RPG Maker เยอะครับ บางอันนี่ซ้อนกันจนอ่านไม่รู้เรื่องเลย</span></span><br />
<br />
โดยฟอนต์ที่ทดสอบแล้วว่า มีปัญหากับภาษาไทยน้อยที่สุด คือ<br />
- THSarabunPSK <a href="https://www.mbu.ac.th/index.php/downloads/category/79-font-th-sarabun-psk#.YYp1prpteUk" target="_blank" rel="noopener" class="mycode_url">ดาวน์โหลดได้ที่นี่</a><br />
** THSarabunNew ใช้ไม่ได้นะครับ  **<br />
<br />
<br />
- มีอีกตัว แต่ลืมไปแล้ว ขอหาก่อนนะครับ<br />
<br />
แต่ก็ยังมีปัญหากรณีสระซ้อนสองชั้น เช่น ที่ นี้ (ตามรูปบนสุด)<br />
<br />
ให้ใช้ฟอนต์นี้ไปก่อนนะครับ<br />
หรือถ้าเจอฟอนต์ที่ใช้ได้ สามารถแจ้งเพิ่มได้เลยครับ เดี๋ยวผมอัพเดทให้<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: xx-large;" class="mycode_size">ยัง มันยังไม่จบแค่นั้น</span></span><br />
<br />
พบปัญหาที่ตัวอกษรสามตัว ได้แก่<br />
<span style="font-size: x-large;" class="mycode_size">ช ซ ฌ</span><br />
จะทำให้การแสดงผลข้อความผิดพลาดไป และเป็นทุกฟอนต์เท่าที่ลองมา<br />
ที่พบคือ ข้อความบางส่วนหาย ขึ้นบรรทัดใหม่เอง เปลี่ยนสีเอง หรือข้อความหยุดรอการกด enter<br />
<br />
<br />
จากการสอบถามผู้พัฒนา คาดว่าเป็นปัญหาทาง Unicode ของตัวอักษรไทยครับ<br />
<br />
<br />
ระหว่างรอวิธีแก้ไขที่ถูกต้อง หรือการแก้ไขของตัวโปรแกรม<br />
ผมได้ทำการทดลองทำฟอนต์พิเศษขึ้นมา เพื่อให้สามารถใช้ตัวอักษรสามตัวนี้ได้<br />
โดยการนำไปฝากไว้กับตัวอักษรที่เราไม่ได้ใช้กัน<br />
ผลก็เป็นตามรูปแรกครับ<br />
<a href="https://drive.google.com/file/d/1OtuaaZ4Q35yT0CTu1JWR2TQV208NFfA7/view?usp=sharing" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">DOWNLOAD</span></span></a><br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">ช ให้พิมพ์ ฃ แทน</span><br />
<span style="font-size: x-large;" class="mycode_size">ซ ให้พิมพ์ ฅ แทน</span><br />
<span style="font-size: x-large;" class="mycode_size">ฌ ให้พิมพ์ ฦ แทน</span><br />
<br />
<img src="https://i.imgur.com/t9VeknXl.png" loading="lazy"  alt="[Image: t9VeknXl.png]" class="mycode_img" /><br />
<br />
<span style="color: #6633ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">โดยฟอนต์นี้ใช้ THSarabunPSK เป็น Base นะครับ</span></span><br />
<br />
<span style="color: #6633ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">ขอบคุณ ฟอนต์ ฒ.ผู้เฒ่า ที่ทำให้ผมคิดวิธีนี้ออกครับ</span></span><br />
<span style="color: #6633ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">(ฟอนต์ ฒ.ผู้เฒ่า ใช้วิธีเอาภาษาไทยไปแทนที่ภาษาอังกฤษ)</span></span>]]></description>
			<content:encoded><![CDATA[โปรแกรม 001 Game Creator สามารถใช้ภาษาไทยได้<br />
แต่ยังใช้กับกล่องข้อความประเภทพิมพ์ (เช่น แชท หรือหน้ login ในโหมด MMORPG) ไม่ได้นะครับ น่าจะต้องไปแก้ตัว input ด้วย<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">(ยังพบปัญหาอยู่ กรุณาอ่านปัญหาและวิธีแก้ให้ครบด้วยนะครับ)</span></span><br />
<img src="https://i.imgur.com/mYdH5u6l.png" loading="lazy"  alt="[Image: mYdH5u6l.png]" class="mycode_img" /><br />
<br />
<br />
โดยการตั้งค่า Fonts ให้เป็นฟอนต์ที่รองรับภาษาไทย<br />
ในส่วนของ Fonts ดังรูป<br />
<br />
<img src="https://i.imgur.com/gWfLnEjl.png" loading="lazy"  alt="[Image: gWfLnEjl.png]" class="mycode_img" /><br />
โดยเลือกประเภทของข้อความที่ต้องการ <br />
โดยกรอบข้อความจะอยู่ในหมวด Main Fonts<br />
และเลือกฟอนต์ที่ต้องการรวมถึงตั้งค่าต่างๆให้เรียบร้อย<br />
และในช่อง Available Characters ถ้าในช่อง Thai ยังไม่มีเครื่องหมายถูก ก็ให้เลือกด้วยนะครับ<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: xx-large;" class="mycode_size">แต่</span></span><br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Font จำนวนมาก(เท่าที่สุ่มๆดู) มีปัญหากับสระลอยในภาษาไทย</span></span></span><br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">และอาการหนักกว่า RPG Maker เยอะครับ บางอันนี่ซ้อนกันจนอ่านไม่รู้เรื่องเลย</span></span><br />
<br />
โดยฟอนต์ที่ทดสอบแล้วว่า มีปัญหากับภาษาไทยน้อยที่สุด คือ<br />
- THSarabunPSK <a href="https://www.mbu.ac.th/index.php/downloads/category/79-font-th-sarabun-psk#.YYp1prpteUk" target="_blank" rel="noopener" class="mycode_url">ดาวน์โหลดได้ที่นี่</a><br />
** THSarabunNew ใช้ไม่ได้นะครับ  **<br />
<br />
<br />
- มีอีกตัว แต่ลืมไปแล้ว ขอหาก่อนนะครับ<br />
<br />
แต่ก็ยังมีปัญหากรณีสระซ้อนสองชั้น เช่น ที่ นี้ (ตามรูปบนสุด)<br />
<br />
ให้ใช้ฟอนต์นี้ไปก่อนนะครับ<br />
หรือถ้าเจอฟอนต์ที่ใช้ได้ สามารถแจ้งเพิ่มได้เลยครับ เดี๋ยวผมอัพเดทให้<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: xx-large;" class="mycode_size">ยัง มันยังไม่จบแค่นั้น</span></span><br />
<br />
พบปัญหาที่ตัวอกษรสามตัว ได้แก่<br />
<span style="font-size: x-large;" class="mycode_size">ช ซ ฌ</span><br />
จะทำให้การแสดงผลข้อความผิดพลาดไป และเป็นทุกฟอนต์เท่าที่ลองมา<br />
ที่พบคือ ข้อความบางส่วนหาย ขึ้นบรรทัดใหม่เอง เปลี่ยนสีเอง หรือข้อความหยุดรอการกด enter<br />
<br />
<br />
จากการสอบถามผู้พัฒนา คาดว่าเป็นปัญหาทาง Unicode ของตัวอักษรไทยครับ<br />
<br />
<br />
ระหว่างรอวิธีแก้ไขที่ถูกต้อง หรือการแก้ไขของตัวโปรแกรม<br />
ผมได้ทำการทดลองทำฟอนต์พิเศษขึ้นมา เพื่อให้สามารถใช้ตัวอักษรสามตัวนี้ได้<br />
โดยการนำไปฝากไว้กับตัวอักษรที่เราไม่ได้ใช้กัน<br />
ผลก็เป็นตามรูปแรกครับ<br />
<a href="https://drive.google.com/file/d/1OtuaaZ4Q35yT0CTu1JWR2TQV208NFfA7/view?usp=sharing" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">DOWNLOAD</span></span></a><br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">ช ให้พิมพ์ ฃ แทน</span><br />
<span style="font-size: x-large;" class="mycode_size">ซ ให้พิมพ์ ฅ แทน</span><br />
<span style="font-size: x-large;" class="mycode_size">ฌ ให้พิมพ์ ฦ แทน</span><br />
<br />
<img src="https://i.imgur.com/t9VeknXl.png" loading="lazy"  alt="[Image: t9VeknXl.png]" class="mycode_img" /><br />
<br />
<span style="color: #6633ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">โดยฟอนต์นี้ใช้ THSarabunPSK เป็น Base นะครับ</span></span><br />
<br />
<span style="color: #6633ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">ขอบคุณ ฟอนต์ ฒ.ผู้เฒ่า ที่ทำให้ผมคิดวิธีนี้ออกครับ</span></span><br />
<span style="color: #6633ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">(ฟอนต์ ฒ.ผู้เฒ่า ใช้วิธีเอาภาษาไทยไปแทนที่ภาษาอังกฤษ)</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[สร้างเกม MMORPG ด้วยโปรแกรม 001 Game Creator (เบื้องต้น)]]></title>
			<link>https://irpg.in.th/thread-3592.html</link>
			<pubDate>Sun, 24 Oct 2021 23:01:23 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=17">OP_Jum_RPG</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3592.html</guid>
			<description><![CDATA[ดูตัวอย่างเกมได้ที่กระทู้นี้ <a href="http://irpg.in.th/thread-3589.html" target="_blank" rel="noopener" class="mycode_url">Project IRPG Online (ชื่อชั่วคราว)</a><br />
<br />
*****************************************************************************<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">สร้างเกม MMORPG ง่ายๆ ด้วยโปรแกรม 001 Game Creator</span></span><br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">สิ่งที่ต้องมี</span></span><br />
- โปรแกรม 001 Game Creator (รายละเอียดโปรแกรมเบื้องต้น อ่านได้ที่  <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">กระทู้นี้)</a><br />
<a href="https://store.steampowered.com/app/347400/001_Game_Creator/" target="_blank" rel="noopener" class="mycode_url">https://store.steampowered.com/app/34740...e_Creator/</a><br />
- DLC MMORPG Kit ของ 001 Game Creator<br />
<a href="https://store.steampowered.com/app/564680/001_Game_Creator__MMORPG_Kit/" target="_blank" rel="noopener" class="mycode_url">https://store.steampowered.com/app/56468...MORPG_Kit/</a><br />
........................................................................................................................................<br />
<br />
<br />
อย่างที่กล่าวไปในกระทู้รีวิวโปรแกรม ว่าโปรแกรมนี้ได้สร้างระบบ Action-RPG พื้นฐานไว้ให้เราแล้ว<br />
ดังนั้นในบทความนี้จะไม่ขอลงลึกในส่วนพื้นฐานการใช้งานโปรแกรม แต่จะยกไปเขียนรวมกับโปมด Offline อีกทีนะครับ<br />
(ยกเว้นคำสั่งบางตัวที่ Offline กับ Online ต่างกันแล้วถ้าเราทำแบบ Offline มันจะเล่นไม่ได้)<br />
<br />
สารบัญ<br />
1. สร้างโปรเจ็คต์ใหม่ และโฟลเดอร์ที่เกี่ยวข้อง<br />
2. การสร้าง / วาดแผนที่<br />
3. การสร้าง NPC / มอนสเตอร์<br />
<br />
4. การสร้างจุดเก็บไอเทม<br />
5. การ Build เกม / Server<br />
6. การทดสอบเกม / การเล่นแบบ Local / การเปิด Server<br />
7. ข้อมูล Log และข้อมูลผู้เล่น<br />
<br />
******************************************************************************<br />
******************************************************************************<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">สร้างโปรเจ็คต์ใหม่ และโฟลเดอร์ที่เกี่ยวข้อง</span></span></span><br />
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
เมื่อเปิดโปรแกรมขึ้นมา จะพบหน้าต่าง New / Open Game ให้เลือก Create New Game<br />
(หรือหากเลือกที่เมนู File &gt;&gt; New Game จะข้ามไปหน้า New Game เลย<br />
ถ้าต้องการให้ขึ้นหน้าต่าง New / Open Game ก่อน ให้เลือกที่ Load Game)<br />
<br />
จะได้หน้าต่างนี้ขึ้นมา<br />
<img src="https://i.imgur.com/daYjSwal.png" loading="lazy"  alt="[Image: daYjSwal.png]" class="mycode_img" /><br />
หากต้องการตั้ง Directory ที่จะเก็บโฟลเดอร์เกมให้ตั้งในหน้านี้้ลย<br />
และโปรแกรมจะแสดงเกมทั้งหมดที่อยู่ในโฟลเดอร์นั้นๆให้<br />
<br />
<br />
ให้เลือก Create New Game หรือสามารถเลือกที่เมนู File &gt;&gt; New Game จะได้หน้าต่างนี้ขึ้นมา<br />
<img src="https://i.imgur.com/PIJmECql.png" loading="lazy"  alt="[Image: PIJmECql.png]" class="mycode_img" /><br />
ถ้าเป็นเกมออฟไลน์ เกมจะมีแค่โฟลเดอร์นี้โฟลเดอร์เดียว<br />
แต่สำหรับเกม MMORPG จะมีโฟลเดอร์สำหรับเก็บ Log File / Player Data ด้วย<br />
โดยปกติจะถูกเก็บไว้ที่ Documents\001\Games\โฟลเดอร์ชื่อเดียวกับโฟลเดอร์เกม<br />
<br />
ซึ่งเกมที่รันผ่านตัวโปรแกรม ก็จะได้โฟลเดอร์นี้แยกออกมาอีก 1 โฟลเดอร์แน่นอน ซึ่งอาจเป็นไฟล์เซฟแยกจากตัว Online 0ริง (ถ้าชื่อโฟลเดอร์ไม่ตรงกัน)<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การสร้าง / วาดแผนที่</span></span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
การสร้างแผนที่ใหม่ ให้คลิกที่ (1) จะได้แผนที่ใหม่อยู่เป็นแผนที่ย่อยของแผนที่ที่เลืออยู่ในขณะนั้น<br />
<img src="https://i.imgur.com/LpcWHqJl.png" loading="lazy"  alt="[Image: LpcWHqJl.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">ในส่วนของ Map Properties</span><br />
2. Display Name (ชื่อแผนที่) และ Scripting ID (ID สคริปต์ของแผนที่)<br />
ปกติ Scripting ID จะตั้งตาม Display Name โดยอัตโนมัติ (ถ้าเราไม่ไปแก้) แต่ Display Name จะซ้ำกันไม่ได้<br />
3. ขนาดของแผนที่ กว้าง ยาว สูง<br />
ส่วนสูงต้องใส่ด้วย ไม่อย่างนั้นจะสร้างกำแพงไม่ได้ / ตัวละครจะกระโดดไม่ได้<br />
4. View มุมมองของแผนที่<br />
  Standard 45 องศา: มุมมองมาตรฐาน <br />
  Front *ไม่ใช่ Side*: เป็นการหมุนมุมกล้องเป็นด้านหน้า เพื่อทำเกมแนว Side Scrolling หรือปรับกำแพงมาเป็นพื้นแทน <br />
  3D: โหมด 3 มิติ<br />
5. Trigger: สำหรับใส่คำสั่งเมื่อผู้เล่นเข้ามาในแผนที่<br />
6. สร้างตัวแปรเฉพาะของแผนที่นั้นๆ<br />
7. ตั้งค่าการเชื่อมต่อแผนที่ เมื่อตั้งค่านี้ไว้แล้วผู้เล่นเดินไปจนสุดขอบแผนที่ด้านนั้นๆ ก็จะเทเลพอร์ทไปยังแผนที่ที่กำหนด ในตำแหน่งเดียวกัน (แต่คนละฝั่ง) ทันที <br />
ซึ่งจะส่งผลทั้งหมดทุกช่อง ไม่สามารถเลือกเฉพาะช่องได้ หากจะให้มีผลเฉพาะช่อง ให้ใช้คำสะ่งอีเวนท์ตามปกติ<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">การกำหนดจุดเริ่มต้นของผู้เล่นใหม่</span></span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
ให้เข้าที่ Game &gt;&gt; Game Setting หรือคลิกตามรูป<br />
จะสามารถเลือกแผนที่เริ่มต้น (Starting Map) พร้อมทั้งเลือกตำแหน่งจุดเกิด (Starting Location) ได้<br />
<img src="https://i.imgur.com/HH62dQn.png" loading="lazy"  alt="[Image: HH62dQn.png]" class="mycode_img" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การสร้าง NPC/Monster</span></span></span><br />
<br />
การสร้าง NPC และมอนสเตอร์ในโหมด Online นั้นจะแตกต่างจากโหมด Offline อยู่หลายจุด <br />
ในตอนนี้ยังไม่พบวิธีที่ถูกต้อง ก็ให้ใช้วิธีก็อปจากที่มีอยู่ไปก่อนนะครับ<br />
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">สำหรับ NPC</span></span><br />
การตั้งค่าจะคล้ายๆกับของโหมด Offline<br />
แต่คำสั่งต่างๆที่ต้องอ้างอิงค่าจาก Server เช่น NPC รับของ / รับเควส ต้องมีคำสั่งรับค่าจาก Server ด้วย<br />
ให้ดูจากเกมตัวอย่างก็ด้ครับ เดี๋ยวมาลงรายละเอียดให้อีกที<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">สำหรับ Monster</span></span><br />
อันนี้สำคัญมาก เนื่องจากค่อนข้างต่างจากโหมด Offline พอสมควรเลย<br />
หากพลาดตรงจุดนี้ มอนดสเตอร์จะไม่ทำงาน จะกลายเป็น NPC แทน<br />
<br />
หลังกดวาง Actor แล้ว หากขึ้นแค่นี้ เราจะไม่สามารถกด Detach Template เพื่อทำการแก้ไขข้อมูล แบบโหมด Offline ได้<br />
หากกด จะทำให้ Template ของมอนสเตอร์หายไป และมอนสเตอร์ก็จะไม่ทำงาน<br />
<img src="https://i.imgur.com/qjH9Itdm.png" loading="lazy"  alt="[Image: qjH9Itdm.png]" class="mycode_img" /><br />
<br />
ให้เราไปที่ Resource &gt; Actor Template<br />
เลือก Temlate ที่เราต้องการ หรือ Copy จากที่มีอยู่มาเพิ่มได้<br />
และเลือกที่ Allow Change in Place Actor ด้วย<br />
<br />
เมื่อเราเลือก Template นั้นๆ ก็จะปรากฎหน้าต่างที่สามารถแก้ไขได้ตามปกติ ดังรูป<br />
<img src="https://i.imgur.com/lHTSMgdm.png" loading="lazy"  alt="[Image: lHTSMgdm.png]" class="mycode_img" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">การ Build เกม / Server</span></span></span><br />
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
ก่อนทำการ Build Game ให้เราทำการตั้งค่าต่างๆ โดยเฉพาะ IP / Port ให้เรียบร้อยก่อน<br />
ที่นี่<br />
<br />
<img src="https://i.imgur.com/J8XPceG.png" loading="lazy"  alt="[Image: J8XPceG.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">ทั้งนี้ 001 ยังไม่อนุญาตให้แก้ไข IP / Port ที่ตัว Client ได้ ต้อง Build ใหม่อย่างเดียว</span></span><br />
ให้ใช้วิธีผูกกับ Dynamic DNS เช่น No-ip เอานะครับ<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Startup Menu Setting </span></span><br />
ให้เรากำหนดเมนูเริ่มเกมว่าจะใส่คำว่าอะไร<br />
ส่วนปุ่มไหนไม่ต้องการ ให้ใส่ # ลงไปแทน<br />
<img src="https://i.imgur.com/A2rqBAT.png" loading="lazy"  alt="[Image: A2rqBAT.png]" class="mycode_img" /><br />
<br />
ในโหมด MMORPG นี้ เราต้อง Build Game เป็น 2 ส่วน คือ Server และ Client<br />
<br />
โดยไปที่ Game &gt;&gt; Build Game<br />
<img src="https://i.imgur.com/RbHTDbh.png" loading="lazy"  alt="[Image: RbHTDbh.png]" class="mycode_img" /><br />
<br />
Window Installer กับ Plain Files จะไม่ต่างกัน ต่างแค่จะมาเป็นตัว install หรือมาเป็นไฟล์เลย<br />
หากใช้ Window Installer แล้วช้า สามารถใช้ Plain Files ก็ได้ครับ<br />
<br />
สำหรับ Client ให้ Build ตามปกติ<br />
สำหรับ Server ให้ติ๊กที่ Dedicated Online Multiplayer Server<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การทดสอบเกม / การเล่นแบบ Local / การเปิด Server</span></span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การทดสอบในโปรแกรม</span></span> <br />
ไม่ต้องเซ็ต ip สามารถรันเกมได้เลย<br />
ตัวโปรแกรมจะรัน Server ขึ้นมาให้ทันที<br />
<img src="https://i.imgur.com/olVhvcNm.png" loading="lazy"  alt="[Image: olVhvcNm.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">การ Build เพื่อทดสอบแบบ Local</span></span><br />
ให้ทำการเซ็ต ip เป็น 127.0.0.1 แทน<br />
แล้วทำการ Build ตามปกติ<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">การเปิด Server</span></span><br />
ให้เข้าไปในโฟลเดอร์ Server และรัน Server ผ่านไฟล์ exe <br />
เลือก Start Game เหมือนเกมปกติ<br />
<br />
<br />
ไฟล์ข้อมูลผู้เล่น จะอยู่ที่ Doccument/001/Games/โฟลเดอร์ชื่อเดียวกับ<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">โฟลเดอร์เซิฟเวอร์</span></span><br />
โฟลเดอร์ที่เก็บ Log ต่างๆ จะอยู่ที่ Doccument/001/Games/โฟลเดอร์ชื่อเดียวกับ<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">โฟลเดอร์เกม</span></span><br />
<br />
ถ้าเปลี่ยนชื่อโฟลเดอร์ Server หรือ Game ก็จะได้โฟลเดอร์นี้เพิ่มขึ้นมา <br />
จะทำให้เกมหาเซฟไม่เจอ ถ้าจะย้ายเซฟก็สามารถนำโฟลเดอร์ Player Data ไปใส่ที่ใหม่เลยก็ได้<br />
<br />
<br />
<br />
<br />
</div>
	</div>]]></description>
			<content:encoded><![CDATA[ดูตัวอย่างเกมได้ที่กระทู้นี้ <a href="http://irpg.in.th/thread-3589.html" target="_blank" rel="noopener" class="mycode_url">Project IRPG Online (ชื่อชั่วคราว)</a><br />
<br />
*****************************************************************************<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">สร้างเกม MMORPG ง่ายๆ ด้วยโปรแกรม 001 Game Creator</span></span><br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">สิ่งที่ต้องมี</span></span><br />
- โปรแกรม 001 Game Creator (รายละเอียดโปรแกรมเบื้องต้น อ่านได้ที่  <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">กระทู้นี้)</a><br />
<a href="https://store.steampowered.com/app/347400/001_Game_Creator/" target="_blank" rel="noopener" class="mycode_url">https://store.steampowered.com/app/34740...e_Creator/</a><br />
- DLC MMORPG Kit ของ 001 Game Creator<br />
<a href="https://store.steampowered.com/app/564680/001_Game_Creator__MMORPG_Kit/" target="_blank" rel="noopener" class="mycode_url">https://store.steampowered.com/app/56468...MORPG_Kit/</a><br />
........................................................................................................................................<br />
<br />
<br />
อย่างที่กล่าวไปในกระทู้รีวิวโปรแกรม ว่าโปรแกรมนี้ได้สร้างระบบ Action-RPG พื้นฐานไว้ให้เราแล้ว<br />
ดังนั้นในบทความนี้จะไม่ขอลงลึกในส่วนพื้นฐานการใช้งานโปรแกรม แต่จะยกไปเขียนรวมกับโปมด Offline อีกทีนะครับ<br />
(ยกเว้นคำสั่งบางตัวที่ Offline กับ Online ต่างกันแล้วถ้าเราทำแบบ Offline มันจะเล่นไม่ได้)<br />
<br />
สารบัญ<br />
1. สร้างโปรเจ็คต์ใหม่ และโฟลเดอร์ที่เกี่ยวข้อง<br />
2. การสร้าง / วาดแผนที่<br />
3. การสร้าง NPC / มอนสเตอร์<br />
<br />
4. การสร้างจุดเก็บไอเทม<br />
5. การ Build เกม / Server<br />
6. การทดสอบเกม / การเล่นแบบ Local / การเปิด Server<br />
7. ข้อมูล Log และข้อมูลผู้เล่น<br />
<br />
******************************************************************************<br />
******************************************************************************<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">สร้างโปรเจ็คต์ใหม่ และโฟลเดอร์ที่เกี่ยวข้อง</span></span></span><br />
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
เมื่อเปิดโปรแกรมขึ้นมา จะพบหน้าต่าง New / Open Game ให้เลือก Create New Game<br />
(หรือหากเลือกที่เมนู File &gt;&gt; New Game จะข้ามไปหน้า New Game เลย<br />
ถ้าต้องการให้ขึ้นหน้าต่าง New / Open Game ก่อน ให้เลือกที่ Load Game)<br />
<br />
จะได้หน้าต่างนี้ขึ้นมา<br />
<img src="https://i.imgur.com/daYjSwal.png" loading="lazy"  alt="[Image: daYjSwal.png]" class="mycode_img" /><br />
หากต้องการตั้ง Directory ที่จะเก็บโฟลเดอร์เกมให้ตั้งในหน้านี้้ลย<br />
และโปรแกรมจะแสดงเกมทั้งหมดที่อยู่ในโฟลเดอร์นั้นๆให้<br />
<br />
<br />
ให้เลือก Create New Game หรือสามารถเลือกที่เมนู File &gt;&gt; New Game จะได้หน้าต่างนี้ขึ้นมา<br />
<img src="https://i.imgur.com/PIJmECql.png" loading="lazy"  alt="[Image: PIJmECql.png]" class="mycode_img" /><br />
ถ้าเป็นเกมออฟไลน์ เกมจะมีแค่โฟลเดอร์นี้โฟลเดอร์เดียว<br />
แต่สำหรับเกม MMORPG จะมีโฟลเดอร์สำหรับเก็บ Log File / Player Data ด้วย<br />
โดยปกติจะถูกเก็บไว้ที่ Documents\001\Games\โฟลเดอร์ชื่อเดียวกับโฟลเดอร์เกม<br />
<br />
ซึ่งเกมที่รันผ่านตัวโปรแกรม ก็จะได้โฟลเดอร์นี้แยกออกมาอีก 1 โฟลเดอร์แน่นอน ซึ่งอาจเป็นไฟล์เซฟแยกจากตัว Online 0ริง (ถ้าชื่อโฟลเดอร์ไม่ตรงกัน)<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การสร้าง / วาดแผนที่</span></span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
การสร้างแผนที่ใหม่ ให้คลิกที่ (1) จะได้แผนที่ใหม่อยู่เป็นแผนที่ย่อยของแผนที่ที่เลืออยู่ในขณะนั้น<br />
<img src="https://i.imgur.com/LpcWHqJl.png" loading="lazy"  alt="[Image: LpcWHqJl.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">ในส่วนของ Map Properties</span><br />
2. Display Name (ชื่อแผนที่) และ Scripting ID (ID สคริปต์ของแผนที่)<br />
ปกติ Scripting ID จะตั้งตาม Display Name โดยอัตโนมัติ (ถ้าเราไม่ไปแก้) แต่ Display Name จะซ้ำกันไม่ได้<br />
3. ขนาดของแผนที่ กว้าง ยาว สูง<br />
ส่วนสูงต้องใส่ด้วย ไม่อย่างนั้นจะสร้างกำแพงไม่ได้ / ตัวละครจะกระโดดไม่ได้<br />
4. View มุมมองของแผนที่<br />
  Standard 45 องศา: มุมมองมาตรฐาน <br />
  Front *ไม่ใช่ Side*: เป็นการหมุนมุมกล้องเป็นด้านหน้า เพื่อทำเกมแนว Side Scrolling หรือปรับกำแพงมาเป็นพื้นแทน <br />
  3D: โหมด 3 มิติ<br />
5. Trigger: สำหรับใส่คำสั่งเมื่อผู้เล่นเข้ามาในแผนที่<br />
6. สร้างตัวแปรเฉพาะของแผนที่นั้นๆ<br />
7. ตั้งค่าการเชื่อมต่อแผนที่ เมื่อตั้งค่านี้ไว้แล้วผู้เล่นเดินไปจนสุดขอบแผนที่ด้านนั้นๆ ก็จะเทเลพอร์ทไปยังแผนที่ที่กำหนด ในตำแหน่งเดียวกัน (แต่คนละฝั่ง) ทันที <br />
ซึ่งจะส่งผลทั้งหมดทุกช่อง ไม่สามารถเลือกเฉพาะช่องได้ หากจะให้มีผลเฉพาะช่อง ให้ใช้คำสะ่งอีเวนท์ตามปกติ<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">การกำหนดจุดเริ่มต้นของผู้เล่นใหม่</span></span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
ให้เข้าที่ Game &gt;&gt; Game Setting หรือคลิกตามรูป<br />
จะสามารถเลือกแผนที่เริ่มต้น (Starting Map) พร้อมทั้งเลือกตำแหน่งจุดเกิด (Starting Location) ได้<br />
<img src="https://i.imgur.com/HH62dQn.png" loading="lazy"  alt="[Image: HH62dQn.png]" class="mycode_img" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การสร้าง NPC/Monster</span></span></span><br />
<br />
การสร้าง NPC และมอนสเตอร์ในโหมด Online นั้นจะแตกต่างจากโหมด Offline อยู่หลายจุด <br />
ในตอนนี้ยังไม่พบวิธีที่ถูกต้อง ก็ให้ใช้วิธีก็อปจากที่มีอยู่ไปก่อนนะครับ<br />
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">สำหรับ NPC</span></span><br />
การตั้งค่าจะคล้ายๆกับของโหมด Offline<br />
แต่คำสั่งต่างๆที่ต้องอ้างอิงค่าจาก Server เช่น NPC รับของ / รับเควส ต้องมีคำสั่งรับค่าจาก Server ด้วย<br />
ให้ดูจากเกมตัวอย่างก็ด้ครับ เดี๋ยวมาลงรายละเอียดให้อีกที<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">สำหรับ Monster</span></span><br />
อันนี้สำคัญมาก เนื่องจากค่อนข้างต่างจากโหมด Offline พอสมควรเลย<br />
หากพลาดตรงจุดนี้ มอนดสเตอร์จะไม่ทำงาน จะกลายเป็น NPC แทน<br />
<br />
หลังกดวาง Actor แล้ว หากขึ้นแค่นี้ เราจะไม่สามารถกด Detach Template เพื่อทำการแก้ไขข้อมูล แบบโหมด Offline ได้<br />
หากกด จะทำให้ Template ของมอนสเตอร์หายไป และมอนสเตอร์ก็จะไม่ทำงาน<br />
<img src="https://i.imgur.com/qjH9Itdm.png" loading="lazy"  alt="[Image: qjH9Itdm.png]" class="mycode_img" /><br />
<br />
ให้เราไปที่ Resource &gt; Actor Template<br />
เลือก Temlate ที่เราต้องการ หรือ Copy จากที่มีอยู่มาเพิ่มได้<br />
และเลือกที่ Allow Change in Place Actor ด้วย<br />
<br />
เมื่อเราเลือก Template นั้นๆ ก็จะปรากฎหน้าต่างที่สามารถแก้ไขได้ตามปกติ ดังรูป<br />
<img src="https://i.imgur.com/lHTSMgdm.png" loading="lazy"  alt="[Image: lHTSMgdm.png]" class="mycode_img" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">การ Build เกม / Server</span></span></span><br />
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
ก่อนทำการ Build Game ให้เราทำการตั้งค่าต่างๆ โดยเฉพาะ IP / Port ให้เรียบร้อยก่อน<br />
ที่นี่<br />
<br />
<img src="https://i.imgur.com/J8XPceG.png" loading="lazy"  alt="[Image: J8XPceG.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">ทั้งนี้ 001 ยังไม่อนุญาตให้แก้ไข IP / Port ที่ตัว Client ได้ ต้อง Build ใหม่อย่างเดียว</span></span><br />
ให้ใช้วิธีผูกกับ Dynamic DNS เช่น No-ip เอานะครับ<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Startup Menu Setting </span></span><br />
ให้เรากำหนดเมนูเริ่มเกมว่าจะใส่คำว่าอะไร<br />
ส่วนปุ่มไหนไม่ต้องการ ให้ใส่ # ลงไปแทน<br />
<img src="https://i.imgur.com/A2rqBAT.png" loading="lazy"  alt="[Image: A2rqBAT.png]" class="mycode_img" /><br />
<br />
ในโหมด MMORPG นี้ เราต้อง Build Game เป็น 2 ส่วน คือ Server และ Client<br />
<br />
โดยไปที่ Game &gt;&gt; Build Game<br />
<img src="https://i.imgur.com/RbHTDbh.png" loading="lazy"  alt="[Image: RbHTDbh.png]" class="mycode_img" /><br />
<br />
Window Installer กับ Plain Files จะไม่ต่างกัน ต่างแค่จะมาเป็นตัว install หรือมาเป็นไฟล์เลย<br />
หากใช้ Window Installer แล้วช้า สามารถใช้ Plain Files ก็ได้ครับ<br />
<br />
สำหรับ Client ให้ Build ตามปกติ<br />
สำหรับ Server ให้ติ๊กที่ Dedicated Online Multiplayer Server<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การทดสอบเกม / การเล่นแบบ Local / การเปิด Server</span></span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>Spoiler:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">การทดสอบในโปรแกรม</span></span> <br />
ไม่ต้องเซ็ต ip สามารถรันเกมได้เลย<br />
ตัวโปรแกรมจะรัน Server ขึ้นมาให้ทันที<br />
<img src="https://i.imgur.com/olVhvcNm.png" loading="lazy"  alt="[Image: olVhvcNm.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">การ Build เพื่อทดสอบแบบ Local</span></span><br />
ให้ทำการเซ็ต ip เป็น 127.0.0.1 แทน<br />
แล้วทำการ Build ตามปกติ<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">การเปิด Server</span></span><br />
ให้เข้าไปในโฟลเดอร์ Server และรัน Server ผ่านไฟล์ exe <br />
เลือก Start Game เหมือนเกมปกติ<br />
<br />
<br />
ไฟล์ข้อมูลผู้เล่น จะอยู่ที่ Doccument/001/Games/โฟลเดอร์ชื่อเดียวกับ<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">โฟลเดอร์เซิฟเวอร์</span></span><br />
โฟลเดอร์ที่เก็บ Log ต่างๆ จะอยู่ที่ Doccument/001/Games/โฟลเดอร์ชื่อเดียวกับ<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">โฟลเดอร์เกม</span></span><br />
<br />
ถ้าเปลี่ยนชื่อโฟลเดอร์ Server หรือ Game ก็จะได้โฟลเดอร์นี้เพิ่มขึ้นมา <br />
จะทำให้เกมหาเซฟไม่เจอ ถ้าจะย้ายเซฟก็สามารถนำโฟลเดอร์ Player Data ไปใส่ที่ใหม่เลยก็ได้<br />
<br />
<br />
<br />
<br />
</div>
	</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[คัมภีร์ สร้างเกมด้วย Unity ฉบับกระจิ๊ดริด]]></title>
			<link>https://irpg.in.th/thread-3575.html</link>
			<pubDate>Thu, 20 May 2021 16:48:09 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=101">XthemeCore</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3575.html</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="color: #339966;" class="mycode_color">กระทู้นี้จะใช้เป็นสารบัญของวิดีโอ คัมภีร์ Unity ฉบับกระจิ๊ดริด</span></span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size">แต่ละวิดีโอ มีความยาว 0 ถึง 5 นาที (ช่วงหลังอาจยาวขึ้น แล้วแต่เนื้อหา)<br />
ทุกวิดีโอจะรวมในกระทู้เดียวไปก่อน แต่<span style="font-size: medium;" class="mycode_size">เมื่อมีวิดีโอมากขึ้น อาจจะ</span>แยกเป็นหัวข้อต่าง ๆ เพื่อให้หาดูได้ง่าย </span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #cc3366;" class="mycode_color">เป้าหมาย:</span> ใช้เป็นวิดีโอสำหรับอ้างอิงได้ หากต้องการรู้หัวข้อไหนก็กดดูได้ทันที</span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size">ลิงค์ไปช่อง Youtube: <a href="https://www.youtube.com/xthemecore" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/xthemecore</a> </span><br />
<br />
<span style="font-size: medium;" class="mycode_size">ลิงค์ไป Playlist: <a href="https://www.youtube.com/watch?v=_cZpV2KBHVE&amp;list=PLN6eibzlJxBVQyB4zlU2MtBrwFm55SS2u&amp;index=1" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=_cZpV2KB...2u&amp;index=1</a></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">สารบัญ</span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>การติดตั้งและพื้นฐานการใช้งาน Unity:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=_cZpV2KBHVE" target="_blank" rel="noopener" class="mycode_url">1. การติดตั้ง Unity และ สร้างโปรเจคใหม่</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=KufClBnzhaU" target="_blank" rel="noopener" class="mycode_url">2. เวอร์ชั่นของ Unity</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=okuCfpdkSDY" target="_blank" rel="noopener" class="mycode_url">3. รู้จัก Layout ใน Unity Editor</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=iEkPiZIJDUo" target="_blank" rel="noopener" class="mycode_url">4. รู้จัก Scene, Game Object และ Component ใน Unity</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=UPoVVnHaqIA" target="_blank" rel="noopener" class="mycode_url">5. รู้จัก Transform ใน Unity</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=Dd8kJwgAG9Q" target="_blank" rel="noopener" class="mycode_url">6. รู้จักเครื่องมือจัดการ Transform ใน Unity</a></span><br />
<br />
<br />
<br />
</div>
	</div>
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>พื้นฐาน Visual Scripting:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>การใช้งาน ProBuilder:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="color: #339966;" class="mycode_color">กระทู้นี้จะใช้เป็นสารบัญของวิดีโอ คัมภีร์ Unity ฉบับกระจิ๊ดริด</span></span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size">แต่ละวิดีโอ มีความยาว 0 ถึง 5 นาที (ช่วงหลังอาจยาวขึ้น แล้วแต่เนื้อหา)<br />
ทุกวิดีโอจะรวมในกระทู้เดียวไปก่อน แต่<span style="font-size: medium;" class="mycode_size">เมื่อมีวิดีโอมากขึ้น อาจจะ</span>แยกเป็นหัวข้อต่าง ๆ เพื่อให้หาดูได้ง่าย </span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #cc3366;" class="mycode_color">เป้าหมาย:</span> ใช้เป็นวิดีโอสำหรับอ้างอิงได้ หากต้องการรู้หัวข้อไหนก็กดดูได้ทันที</span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size">ลิงค์ไปช่อง Youtube: <a href="https://www.youtube.com/xthemecore" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/xthemecore</a> </span><br />
<br />
<span style="font-size: medium;" class="mycode_size">ลิงค์ไป Playlist: <a href="https://www.youtube.com/watch?v=_cZpV2KBHVE&amp;list=PLN6eibzlJxBVQyB4zlU2MtBrwFm55SS2u&amp;index=1" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=_cZpV2KB...2u&amp;index=1</a></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">สารบัญ</span></span><br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>การติดตั้งและพื้นฐานการใช้งาน Unity:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=_cZpV2KBHVE" target="_blank" rel="noopener" class="mycode_url">1. การติดตั้ง Unity และ สร้างโปรเจคใหม่</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=KufClBnzhaU" target="_blank" rel="noopener" class="mycode_url">2. เวอร์ชั่นของ Unity</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=okuCfpdkSDY" target="_blank" rel="noopener" class="mycode_url">3. รู้จัก Layout ใน Unity Editor</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=iEkPiZIJDUo" target="_blank" rel="noopener" class="mycode_url">4. รู้จัก Scene, Game Object และ Component ใน Unity</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=UPoVVnHaqIA" target="_blank" rel="noopener" class="mycode_url">5. รู้จัก Transform ใน Unity</a></span><br />
<span style="font-size: medium;" class="mycode_size"><a href="https://www.youtube.com/watch?v=Dd8kJwgAG9Q" target="_blank" rel="noopener" class="mycode_url">6. รู้จักเครื่องมือจัดการ Transform ใน Unity</a></span><br />
<br />
<br />
<br />
</div>
	</div>
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>พื้นฐาน Visual Scripting:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>
<br />
<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName('div')[1].style.display == 'block'){ parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.innerHTML='Show Content'; } else { parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'block'; this.innerHTML='Hide Content'; }">Show Content</span>การใช้งาน ProBuilder:</div>
		<div class="spoiler_content" style="display: none;">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
	</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Unity แจก Bolt สำหรับสร้างเกมแบบลากวาง พร้อมตัวอย่างเกม]]></title>
			<link>https://irpg.in.th/thread-3504.html</link>
			<pubDate>Sat, 01 Aug 2020 09:46:06 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=101">XthemeCore</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3504.html</guid>
			<description><![CDATA[<img src="https://i.imgur.com/yaFkZYf.jpg" loading="lazy"  width="400" height="267" alt="[Image: yaFkZYf.jpg]" class="mycode_img" /><br />
<br />
เมื่อวันที่ 22 กรกฎาคมที่ผ่านมา Unity ได้ประกาศอย่างเป็นทางการแล้วว่า <br />
จะใช้ Bolt สำหรับระบบ visual scripting และจะมีการพัฒนาต่อไปเป็น Bolt 2 (ในเร็วๆนี้)<br />
<br />
Bolt เป็นระบบที่ทำให้สามารถสร้างเกมใน Unity ได้โดยไม่ต้องเขียนโค้ด แต่ใช้วิธีวางลากบล็อคมาต่อกันแทน<br />
<br />
สามารถกดรับ Bolt ได้แล้วที่ Asset store ของ Unity เลย<br />
<a href="https://assetstore.unity.com/packages/tools/visual-scripting/bolt-163802" target="_blank" rel="noopener" class="mycode_url">https://assetstore.unity.com/packages/to...olt-163802</a><br />
<br />
นอกจากนี้ Unity ยังแจก Bolt Kit ซึ่งเป็นตัวอย่างเกมแนวต่างๆที่สร้างจาก Bolt ล้วนๆ<br />
สามารถกดรับได้ที่นี่ <a href="https://assetstore.unity.com/publishers/1?q=bolt%20kit" target="_blank" rel="noopener" class="mycode_url">https://assetstore.unity.com/publishers/1?q=bolt kit</a><br />
<img src="https://i.imgur.com/Pa5i6EV.png" loading="lazy"  width="946" height="547" alt="[Image: Pa5i6EV.png]" class="mycode_img" /><br />
ก็หวังว่า Bolt จะช่วยให้เพื่อนๆสร้างเกมใน Unity ได้ง่ายขึ้นนะครับ <img src="https://www.gameworldth.com/forum/static/image/smiley/wanwan/10.gif" loading="lazy"  alt="[Image: 10.gif]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[<img src="https://i.imgur.com/yaFkZYf.jpg" loading="lazy"  width="400" height="267" alt="[Image: yaFkZYf.jpg]" class="mycode_img" /><br />
<br />
เมื่อวันที่ 22 กรกฎาคมที่ผ่านมา Unity ได้ประกาศอย่างเป็นทางการแล้วว่า <br />
จะใช้ Bolt สำหรับระบบ visual scripting และจะมีการพัฒนาต่อไปเป็น Bolt 2 (ในเร็วๆนี้)<br />
<br />
Bolt เป็นระบบที่ทำให้สามารถสร้างเกมใน Unity ได้โดยไม่ต้องเขียนโค้ด แต่ใช้วิธีวางลากบล็อคมาต่อกันแทน<br />
<br />
สามารถกดรับ Bolt ได้แล้วที่ Asset store ของ Unity เลย<br />
<a href="https://assetstore.unity.com/packages/tools/visual-scripting/bolt-163802" target="_blank" rel="noopener" class="mycode_url">https://assetstore.unity.com/packages/to...olt-163802</a><br />
<br />
นอกจากนี้ Unity ยังแจก Bolt Kit ซึ่งเป็นตัวอย่างเกมแนวต่างๆที่สร้างจาก Bolt ล้วนๆ<br />
สามารถกดรับได้ที่นี่ <a href="https://assetstore.unity.com/publishers/1?q=bolt%20kit" target="_blank" rel="noopener" class="mycode_url">https://assetstore.unity.com/publishers/1?q=bolt kit</a><br />
<img src="https://i.imgur.com/Pa5i6EV.png" loading="lazy"  width="946" height="547" alt="[Image: Pa5i6EV.png]" class="mycode_img" /><br />
ก็หวังว่า Bolt จะช่วยให้เพื่อนๆสร้างเกมใน Unity ได้ง่ายขึ้นนะครับ <img src="https://www.gameworldth.com/forum/static/image/smiley/wanwan/10.gif" loading="lazy"  alt="[Image: 10.gif]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ต้องหาไกด์การทำ/สอนการใช้งาน SRPG]]></title>
			<link>https://irpg.in.th/thread-3477.html</link>
			<pubDate>Sat, 23 May 2020 22:00:46 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=48">Toney2j5</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3477.html</guid>
			<description><![CDATA[พึ่งซื้อมาดอง + ศึกษาการทำงานอยู่ แต่รู้สึกหาไกด์ที่พอเข้าใจง่ายไม่ค่อยเจอ <br />
เลยลองมาถามดูว่าพอมีขั้นตอนการเริ่มอย่างไงบ้าง]]></description>
			<content:encoded><![CDATA[พึ่งซื้อมาดอง + ศึกษาการทำงานอยู่ แต่รู้สึกหาไกด์ที่พอเข้าใจง่ายไม่ค่อยเจอ <br />
เลยลองมาถามดูว่าพอมีขั้นตอนการเริ่มอย่างไงบ้าง]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Tutorial ของ Engine001 ที่เคยเขียนไว้ แต่ยังไม่สมบูรณ์ (1.006 ถึง 1.007)]]></title>
			<link>https://irpg.in.th/thread-3454.html</link>
			<pubDate>Thu, 09 Apr 2020 19:12:09 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=17">OP_Jum_RPG</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3454.html</guid>
			<description><![CDATA[อันนี้เป็น Tutorial ที่เคยเขียนไว้<br />
สมัยบอร์ด Kidmaioak<br />
และแบคอัพออกมาทันก่อนบอร์ด Kidmaioak ล่ม<br />
(ยังไม่เสร็จสมบูรณฺ แต่เอากลับมาอัพไว้เผื่อเป็นแนวทางครับ)<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">ในไฟล์นี้จะเป๊น Tutorial ของรุ่น 1.006 กับ 1.007 (หรือรุ่นที่ 6 กับ 7)</span></span><br />
ถึงจะเก่าแต่ก็ยังพอใช้กับรุ่นปัจจุบันได้บ้าง<br />
เพราะ Engine001 แต่ละเวอร์ชั่น พื้นฐานจะคล้ายๆกัน<br />
ยังเขียนไม่เสร็จ แต่ก็น่าจะพอใช้เป็นพื้นฐานได้<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Download ที่นี่</span></span><br />
แบบ PDF (1.007)<br />
<a href="https://drive.google.com/open?id=1YdGALn5nmuEAz_DkLwJ579dCh-j2O34i" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1YdGALn...dCh-j2O34i</a><br />
<br />
<br />
แบบ Notepad )1.006 และ 1.007)<br />
<a href="https://drive.google.com/open?id=12_QhxCZIgXjX2n8ixKc3B48e_3D1O4WG" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=12_QhxC...8e_3D1O4WG</a><br />
<br />
<br />
แบบ PDF จะมีรูปพร้อมการจัดหน้า เพราะทำเป็น E-Book ไปแล้ว<br />
แบบ Notepad จะมีข้อมูลเยอะกว่า แต่จะไม่มีรูป เพราะเป็นการก็อบ bb code มาจากบอร์ด kidmaioak เลย<br />
<br />
<br />
ชื่อไฟล์ก็จะงงๆหน่อย<br />
เช่น<br />
<span style="font-weight: bold;" class="mycode_b">[Tutorial <span style="color: #3333ff;" class="mycode_color">6</span>-<span style="color: #ff3333;" class="mycode_color">1</span>] </span><br />
<span style="font-weight: bold;" class="mycode_b">คือ บทที่ <span style="color: #ff3333;" class="mycode_color">1</span> ของ 1.00<span style="color: #3333ff;" class="mycode_color">6</span> นะครับ ไม่ใช่บทที่ 6</span><br />
<br />
<br />
...........................................................................................................................<br />
หน้าตาโปรแกรมประมาณนี้<br />
<br />
<img src="https://i.imgur.com/k8TFo8c.png" loading="lazy"  width="508" height="284" alt="[Image: k8TFo8c.png]" class="mycode_img" /><br />
<br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/uh4rOTzycpc" frameborder="0" allowfullscreen="true"></iframe><br />
หรืออ่านรีวิวฉบับเต็มได้ที่กระทู้นี้ <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">http://irpg.in.th/thread-3228.html</a><br />
<br />
----------------------------------------------------------------------------------------------------------------------------------]]></description>
			<content:encoded><![CDATA[อันนี้เป็น Tutorial ที่เคยเขียนไว้<br />
สมัยบอร์ด Kidmaioak<br />
และแบคอัพออกมาทันก่อนบอร์ด Kidmaioak ล่ม<br />
(ยังไม่เสร็จสมบูรณฺ แต่เอากลับมาอัพไว้เผื่อเป็นแนวทางครับ)<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">ในไฟล์นี้จะเป๊น Tutorial ของรุ่น 1.006 กับ 1.007 (หรือรุ่นที่ 6 กับ 7)</span></span><br />
ถึงจะเก่าแต่ก็ยังพอใช้กับรุ่นปัจจุบันได้บ้าง<br />
เพราะ Engine001 แต่ละเวอร์ชั่น พื้นฐานจะคล้ายๆกัน<br />
ยังเขียนไม่เสร็จ แต่ก็น่าจะพอใช้เป็นพื้นฐานได้<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Download ที่นี่</span></span><br />
แบบ PDF (1.007)<br />
<a href="https://drive.google.com/open?id=1YdGALn5nmuEAz_DkLwJ579dCh-j2O34i" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1YdGALn...dCh-j2O34i</a><br />
<br />
<br />
แบบ Notepad )1.006 และ 1.007)<br />
<a href="https://drive.google.com/open?id=12_QhxCZIgXjX2n8ixKc3B48e_3D1O4WG" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=12_QhxC...8e_3D1O4WG</a><br />
<br />
<br />
แบบ PDF จะมีรูปพร้อมการจัดหน้า เพราะทำเป็น E-Book ไปแล้ว<br />
แบบ Notepad จะมีข้อมูลเยอะกว่า แต่จะไม่มีรูป เพราะเป็นการก็อบ bb code มาจากบอร์ด kidmaioak เลย<br />
<br />
<br />
ชื่อไฟล์ก็จะงงๆหน่อย<br />
เช่น<br />
<span style="font-weight: bold;" class="mycode_b">[Tutorial <span style="color: #3333ff;" class="mycode_color">6</span>-<span style="color: #ff3333;" class="mycode_color">1</span>] </span><br />
<span style="font-weight: bold;" class="mycode_b">คือ บทที่ <span style="color: #ff3333;" class="mycode_color">1</span> ของ 1.00<span style="color: #3333ff;" class="mycode_color">6</span> นะครับ ไม่ใช่บทที่ 6</span><br />
<br />
<br />
...........................................................................................................................<br />
หน้าตาโปรแกรมประมาณนี้<br />
<br />
<img src="https://i.imgur.com/k8TFo8c.png" loading="lazy"  width="508" height="284" alt="[Image: k8TFo8c.png]" class="mycode_img" /><br />
<br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/uh4rOTzycpc" frameborder="0" allowfullscreen="true"></iframe><br />
หรืออ่านรีวิวฉบับเต็มได้ที่กระทู้นี้ <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">http://irpg.in.th/thread-3228.html</a><br />
<br />
----------------------------------------------------------------------------------------------------------------------------------]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[วิเคราะห์] ไฟล์ข้อมูลที่ได้จาก SGB Exporter for Unity #1]]></title>
			<link>https://irpg.in.th/thread-3294.html</link>
			<pubDate>Sat, 23 Jun 2018 02:20:52 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=101">XthemeCore</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3294.html</guid>
			<description><![CDATA[<span style="font-size: medium;" class="mycode_size">SMILE GAME BUILDER Exporter for Unity เป็น  DLC ของโปรแกรมสร้างเกมสำเร็จรูป Smile Game Builder (SGB)<br />
ใช้ในการแปลงไฟล์เกมเพื่อนำไปพัฒนาต่อบน Unity<br />
<br />
บทความนี้จะวิเคราะห์ไฟล์ข้อมูลต่างๆที่ถูกแปลงมาลงใน Unity ว่าพอมีแนวทางในการที่จะอ่าน/เแก้ไข ไฟล์เหล่านั้นได้อย่างไร<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">หมายเหตุ: บทความนี้ เหมาะสำหรับผู้ที่มีพื้นฐาน Unity และโปรแกรมมิ่งในระดับหนึ่ง</span></span><br />
<br />
เมื่อทำการกด export โปรเจคจาก SGB ไปเป็นโปรเจคบน Unity แล้ว<br />
จะได้โฟลเดอร์โปรเจคของ Unity มา ซึ่งจะมาพร้อมด้วยโฟลเดอร์ Assets เสมอ<br />
ภายในจะมีโฟลเดอร์ที่น่าสนใจอยู่ 3 โฟลเดอร์มีรายละเอียดดังนี้</span><br />
<ol type="1" class="mycode_list"><li>map : เก็บไฟล์ scene ของแผนที่ในเกม ตรงนี้ใช้ในการตกแต่งหรือเพิ่มแสงเงาให้ฉากแผนที่ได้<br />
</li>
<li>Resource: เก็บไฟล์ข้อมูลทั้งหมดของเกม<br />
</li>
<li>src: เก็บโค้ดของเอนจิ้นที่จะรันบน Unity (C#)<br />
</li>
</ol>
<span style="font-size: medium;" class="mycode_size"><br />
<img src="https://i.imgur.com/fAvHBE7.png" loading="lazy"  alt="[Image: fAvHBE7.png]" class="mycode_img" /><br />
<br />
สำหรับบทความนี้เราจะมาวิเคราะห์สิ่งที่อยู่ในโฟลเดอร์ Resource กัน<br />
ภายใน Resource นั้นจะมีโฟลเดอร์อีก 2 โฟลเดอร์ ได้แก่</span><br />
<ol type="1" class="mycode_list"><li>map : เก็บไฟล์ข้อมูลของแผนที่ในเกม (ไม่ใช่ไฟล์ scene ที่ใช้กับ Unity ได้โดยตรง)<br />
</li>
<li>samples: เก็บไฟล์ทรัพยากรในเกม เช่นไฟล์รูปภาพ ไฟล์เพลง <br />
</li>
</ol>
<span style="font-size: medium;" class="mycode_size"><br />
<img src="https://i.imgur.com/0f8XfIG.png" loading="lazy"  alt="[Image: 0f8XfIG.png]" class="mycode_img" /><br />
<br />
เราจะไม่สนใจสิ่งที่อยู่ในโฟลเดอร์ samples เพราะเป็นไฟล์ที่สามารถเปิดมาแก้ไขได้โดยตรงอยู่แล้ว<br />
สิ่งที่น่าสนใจคือไฟล์นามสกุล .sgr.bytes จริงๆแล้วไฟล์นี้คือ binary file นั่นแหละ<br />
ซึ่งการอ่านหรือเขียนไฟล์เหล่านี้ จะต้องรู้ pattern ของมันว่ามีวิธีการอ่านหรือเขียนอย่างไร<br />
<br />
<span style="color: #336699;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">วิเคราะห์จากโค้ดของเอนจิ้น</span></span><br />
ในโฟลเดอร์ src มีไฟล์โค้ดที่น่าสนใจอยู่ 2 ไฟล์คือ FileUtil.cs และ common\Catalog.cs<br />
<br />
FileUtil.cs<br />
เป็นคลาสที่รวบรวมฟังก์ชั่นในการจัดการไฟล์ มี method ที่น่าสนใจคือ getFileStream<br />
ซึ่งจะอ่านไฟล์นามสกุล .bytes ที่ลงท้ายด้วย .sgr (.sgr.bytes) มาเป็น byte data<br />
TextAsset: <a href="https://docs.unity3d.com/ScriptReference/TextAsset-bytes.html" target="_blank" rel="noopener" class="mycode_url">https://docs.unity3d.com/ScriptReference...bytes.html</a><br />
<img src="https://i.imgur.com/o8DHKk3.png" loading="lazy"  alt="[Image: o8DHKk3.png]" class="mycode_img" /><br />
<br />
common\Catalog.cs<br />
เป็นคลาสที่สำคัญอย่างมาก เพราะเป็นส่วนที่นำ byte data มาแปลงให้เป็นไฟล์ที่สามารถอ่านได้<br />
หลังจากวิเคราะห์วิเคราะห์ดูสรุปได้ดังนี้<br />
<br />
1.ทุกไฟล์ข้อมูลจะมีหัว header ขึ้นต้นด้วย YUKAR เสมอ ดังภาพด้านล่าง<br />
<img src="https://i.imgur.com/nqevVtD.png" loading="lazy"  alt="[Image: nqevVtD.png]" class="mycode_img" /><br />
<br />
ในคลาสมีอ้างอิงถึง YUKAR ให้เป็นตัวแปร ROM_HEADER<br />
<img src="https://i.imgur.com/B3jDHln.png" loading="lazy"  alt="[Image: B3jDHln.png]" class="mycode_img" /><br />
<br />
มีการตรวจว่าไฟล์ต้องขึ้นต้นด้วย Header นี้เสมอ <br />
<img src="https://i.imgur.com/cOh7s04.png" loading="lazy"  alt="[Image: cOh7s04.png]" class="mycode_img" /><br />
<br />
<br />
2.ถัดจากนั้นจะเป็นขนาด chunk และ signature โดยเป็นตัวแปร Int32 และ Int16 ตามลำดับ<br />
<img src="https://i.imgur.com/P33LWkx.png" loading="lazy"  alt="[Image: P33LWkx.png]" class="mycode_img" /><br />
<br />
<br />
3.Signature ดูเหมือนจะเป็น byte data ที่ระบุว่าข้อมูลนี้เป็นข้อมูลชนิดใด ดังภาพด้านล่าง<br />
<img src="https://i.imgur.com/DJZKwsR.png" loading="lazy"  alt="[Image: DJZKwsR.png]" class="mycode_img" /><br />
<br />
นอกเหนือจากนี้มีการจับคู่ signature กับ object type ด้วย โดยใส่ไว้ในตัวแปร dictionary<br />
<img src="https://i.imgur.com/HGaovCh.png" loading="lazy"  alt="[Image: HGaovCh.png]" class="mycode_img" /><br />
<br />
4.มี method ชื่อ load มีการเรียกใช้ฟังก์ชั่น createItem โดยใช้ dictionary<br />
<img src="https://i.imgur.com/dchi4gi.png" loading="lazy"  alt="[Image: dchi4gi.png]" class="mycode_img" /><br />
ฟังก์ชั่น createItem จะให้ผลลัพธ์เป็น Object RomItem<br />
<img src="https://i.imgur.com/BUSMIVh.png" loading="lazy"  alt="[Image: BUSMIVh.png]" class="mycode_img" /><br />
<br />
5.object Hero มี base class เป็น RomItem เช่นกัน<br />
<img src="https://i.imgur.com/Ojl4bFf.png" loading="lazy"  alt="[Image: Ojl4bFf.png]" class="mycode_img" /><br />
<br />
<br />
<span style="color: #336699;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">แล้วยังไงต่อ?</span></span><br />
จากที่กล่าวมาข้างต้น ทำให้มีความเป็นไปได้ที่เราจะแปลงไฟล์ข้อมูลมาอยู่ในรูปที่เราเข้าใจได้ โดยการแปลงมันเป็น object ตาม signature ของมัน<br />
ส่วนวิธีการแก้ไขข้อมูล ก็ให้แก้ไขที่ตัว object นั้นเลย แล้วแปลงกลับไปเป็น byte data<br />
<br />
อย่างไรก็นี่เป็นการวิเคราะห์จากการมองโค้ดแบบผ่านๆ ที่เหลือคงต้องไปศึกษาในเชิงลึกดูอีกที<br />
<br />
ครั้งหน้าอาจจะวิเคราะห์การทำงานของเอนจิ้นหลังแปลงมาอยู่บน Unity ยังไงก็ติดตามละกันครับ</span>]]></description>
			<content:encoded><![CDATA[<span style="font-size: medium;" class="mycode_size">SMILE GAME BUILDER Exporter for Unity เป็น  DLC ของโปรแกรมสร้างเกมสำเร็จรูป Smile Game Builder (SGB)<br />
ใช้ในการแปลงไฟล์เกมเพื่อนำไปพัฒนาต่อบน Unity<br />
<br />
บทความนี้จะวิเคราะห์ไฟล์ข้อมูลต่างๆที่ถูกแปลงมาลงใน Unity ว่าพอมีแนวทางในการที่จะอ่าน/เแก้ไข ไฟล์เหล่านั้นได้อย่างไร<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">หมายเหตุ: บทความนี้ เหมาะสำหรับผู้ที่มีพื้นฐาน Unity และโปรแกรมมิ่งในระดับหนึ่ง</span></span><br />
<br />
เมื่อทำการกด export โปรเจคจาก SGB ไปเป็นโปรเจคบน Unity แล้ว<br />
จะได้โฟลเดอร์โปรเจคของ Unity มา ซึ่งจะมาพร้อมด้วยโฟลเดอร์ Assets เสมอ<br />
ภายในจะมีโฟลเดอร์ที่น่าสนใจอยู่ 3 โฟลเดอร์มีรายละเอียดดังนี้</span><br />
<ol type="1" class="mycode_list"><li>map : เก็บไฟล์ scene ของแผนที่ในเกม ตรงนี้ใช้ในการตกแต่งหรือเพิ่มแสงเงาให้ฉากแผนที่ได้<br />
</li>
<li>Resource: เก็บไฟล์ข้อมูลทั้งหมดของเกม<br />
</li>
<li>src: เก็บโค้ดของเอนจิ้นที่จะรันบน Unity (C#)<br />
</li>
</ol>
<span style="font-size: medium;" class="mycode_size"><br />
<img src="https://i.imgur.com/fAvHBE7.png" loading="lazy"  alt="[Image: fAvHBE7.png]" class="mycode_img" /><br />
<br />
สำหรับบทความนี้เราจะมาวิเคราะห์สิ่งที่อยู่ในโฟลเดอร์ Resource กัน<br />
ภายใน Resource นั้นจะมีโฟลเดอร์อีก 2 โฟลเดอร์ ได้แก่</span><br />
<ol type="1" class="mycode_list"><li>map : เก็บไฟล์ข้อมูลของแผนที่ในเกม (ไม่ใช่ไฟล์ scene ที่ใช้กับ Unity ได้โดยตรง)<br />
</li>
<li>samples: เก็บไฟล์ทรัพยากรในเกม เช่นไฟล์รูปภาพ ไฟล์เพลง <br />
</li>
</ol>
<span style="font-size: medium;" class="mycode_size"><br />
<img src="https://i.imgur.com/0f8XfIG.png" loading="lazy"  alt="[Image: 0f8XfIG.png]" class="mycode_img" /><br />
<br />
เราจะไม่สนใจสิ่งที่อยู่ในโฟลเดอร์ samples เพราะเป็นไฟล์ที่สามารถเปิดมาแก้ไขได้โดยตรงอยู่แล้ว<br />
สิ่งที่น่าสนใจคือไฟล์นามสกุล .sgr.bytes จริงๆแล้วไฟล์นี้คือ binary file นั่นแหละ<br />
ซึ่งการอ่านหรือเขียนไฟล์เหล่านี้ จะต้องรู้ pattern ของมันว่ามีวิธีการอ่านหรือเขียนอย่างไร<br />
<br />
<span style="color: #336699;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">วิเคราะห์จากโค้ดของเอนจิ้น</span></span><br />
ในโฟลเดอร์ src มีไฟล์โค้ดที่น่าสนใจอยู่ 2 ไฟล์คือ FileUtil.cs และ common\Catalog.cs<br />
<br />
FileUtil.cs<br />
เป็นคลาสที่รวบรวมฟังก์ชั่นในการจัดการไฟล์ มี method ที่น่าสนใจคือ getFileStream<br />
ซึ่งจะอ่านไฟล์นามสกุล .bytes ที่ลงท้ายด้วย .sgr (.sgr.bytes) มาเป็น byte data<br />
TextAsset: <a href="https://docs.unity3d.com/ScriptReference/TextAsset-bytes.html" target="_blank" rel="noopener" class="mycode_url">https://docs.unity3d.com/ScriptReference...bytes.html</a><br />
<img src="https://i.imgur.com/o8DHKk3.png" loading="lazy"  alt="[Image: o8DHKk3.png]" class="mycode_img" /><br />
<br />
common\Catalog.cs<br />
เป็นคลาสที่สำคัญอย่างมาก เพราะเป็นส่วนที่นำ byte data มาแปลงให้เป็นไฟล์ที่สามารถอ่านได้<br />
หลังจากวิเคราะห์วิเคราะห์ดูสรุปได้ดังนี้<br />
<br />
1.ทุกไฟล์ข้อมูลจะมีหัว header ขึ้นต้นด้วย YUKAR เสมอ ดังภาพด้านล่าง<br />
<img src="https://i.imgur.com/nqevVtD.png" loading="lazy"  alt="[Image: nqevVtD.png]" class="mycode_img" /><br />
<br />
ในคลาสมีอ้างอิงถึง YUKAR ให้เป็นตัวแปร ROM_HEADER<br />
<img src="https://i.imgur.com/B3jDHln.png" loading="lazy"  alt="[Image: B3jDHln.png]" class="mycode_img" /><br />
<br />
มีการตรวจว่าไฟล์ต้องขึ้นต้นด้วย Header นี้เสมอ <br />
<img src="https://i.imgur.com/cOh7s04.png" loading="lazy"  alt="[Image: cOh7s04.png]" class="mycode_img" /><br />
<br />
<br />
2.ถัดจากนั้นจะเป็นขนาด chunk และ signature โดยเป็นตัวแปร Int32 และ Int16 ตามลำดับ<br />
<img src="https://i.imgur.com/P33LWkx.png" loading="lazy"  alt="[Image: P33LWkx.png]" class="mycode_img" /><br />
<br />
<br />
3.Signature ดูเหมือนจะเป็น byte data ที่ระบุว่าข้อมูลนี้เป็นข้อมูลชนิดใด ดังภาพด้านล่าง<br />
<img src="https://i.imgur.com/DJZKwsR.png" loading="lazy"  alt="[Image: DJZKwsR.png]" class="mycode_img" /><br />
<br />
นอกเหนือจากนี้มีการจับคู่ signature กับ object type ด้วย โดยใส่ไว้ในตัวแปร dictionary<br />
<img src="https://i.imgur.com/HGaovCh.png" loading="lazy"  alt="[Image: HGaovCh.png]" class="mycode_img" /><br />
<br />
4.มี method ชื่อ load มีการเรียกใช้ฟังก์ชั่น createItem โดยใช้ dictionary<br />
<img src="https://i.imgur.com/dchi4gi.png" loading="lazy"  alt="[Image: dchi4gi.png]" class="mycode_img" /><br />
ฟังก์ชั่น createItem จะให้ผลลัพธ์เป็น Object RomItem<br />
<img src="https://i.imgur.com/BUSMIVh.png" loading="lazy"  alt="[Image: BUSMIVh.png]" class="mycode_img" /><br />
<br />
5.object Hero มี base class เป็น RomItem เช่นกัน<br />
<img src="https://i.imgur.com/Ojl4bFf.png" loading="lazy"  alt="[Image: Ojl4bFf.png]" class="mycode_img" /><br />
<br />
<br />
<span style="color: #336699;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">แล้วยังไงต่อ?</span></span><br />
จากที่กล่าวมาข้างต้น ทำให้มีความเป็นไปได้ที่เราจะแปลงไฟล์ข้อมูลมาอยู่ในรูปที่เราเข้าใจได้ โดยการแปลงมันเป็น object ตาม signature ของมัน<br />
ส่วนวิธีการแก้ไขข้อมูล ก็ให้แก้ไขที่ตัว object นั้นเลย แล้วแปลงกลับไปเป็น byte data<br />
<br />
อย่างไรก็นี่เป็นการวิเคราะห์จากการมองโค้ดแบบผ่านๆ ที่เหลือคงต้องไปศึกษาในเชิงลึกดูอีกที<br />
<br />
ครั้งหน้าอาจจะวิเคราะห์การทำงานของเอนจิ้นหลังแปลงมาอยู่บน Unity ยังไงก็ติดตามละกันครับ</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[แนะนำโปรแกรม Smile Game Builder (3D RPG)]]></title>
			<link>https://irpg.in.th/thread-3253.html</link>
			<pubDate>Tue, 06 Mar 2018 11:28:42 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=17">OP_Jum_RPG</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3253.html</guid>
			<description><![CDATA[เว็บของผู้พัฒนา<br />
<a href="http://smilegamebuilder.com/en/" target="_blank" rel="noopener" class="mycode_url">http://smilegamebuilder.com/en/</a><br />
<br />
สามารถดาวน์โหลดรุ่นทดลองได้ในสตรีม (ใช้ได้ 30 วัน)<br />
หรือโหลดที่ <a href="http://smilegamebuilder.com/en/trial/" target="_blank" rel="noopener" class="mycode_url">http://smilegamebuilder.com/en/trial/</a><br />
สามารถซื้อเวอร์ชั่นเต็มได้ในในสตรีม ราคา 819 บาท<br />
*<span style="color: #ffffff;" class="mycode_color">ผมมีเวอร์ชั่นยาแก้ไอของ 1.8.0.7 (พร้อม DLC 3D Character Editor) ขอหลังไมค์ได้*</span><br />
<img src="https://i.imgur.com/lcPxjuc.png" loading="lazy"  alt="[Image: lcPxjuc.png]" class="mycode_img" /><br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">โปรแกรมนี้คืออะไร</span></span></span><br />
<br />
Smile Game Builder เป็นโปรแกรมสำหรับสร้างเกมแนว RPG<br />
ด้วยระบบ<span style="font-weight: bold;" class="mycode_b"> Full Drag and Drop</span><br />
อารมณ์ประมาณ RPG Maker 2000-2003 <br />
แต่ความยืดหยุ่นและความหลากหลายในคำสั่งยังน้อยกว่า RPG Maker มาก<br />
<br />
<img src="https://i.imgur.com/wusFIjP.png" loading="lazy"  width="544" height="306" alt="[Image: wusFIjP.png]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><br />
จุดเด่นของโปรแกรมนี้</span></span></span><br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">1. *** สำคัญมาก *** </span></span></span><br />
มี DLC (ที่ราคาแพงกว่าโปรแกรมหลัก)<br />
ที่<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">สามารถ Export ไปลง Unity ได้ทันที </span></span><br />
<br />
2. ใช้ภาษาไทยได้ แต่ต้องไปแก้ Font ก่อนนะ<br />
(จะกล่าวถึงในบทสอนอีกที)<br />
** อยู่ระหว่างตรวจสอบ ดูเหมือนจะมีความผิดพลาด **<br />
<br />
3. การวาดแผนที่<br />
ด้วยระบบ Full Drag and Drop <br />
โปรแกรมนี้จะมองทุกอย่างเป็น Block เอาไปวางเรียงกัน และใช้การปรับความสูงเอา<br />
<img src="https://i.imgur.com/UvortGD.png" loading="lazy"  width="511" height="287" alt="[Image: UvortGD.png]" class="mycode_img" /><br />
<br />
แต่ยังไม่สมบูรณ์เท่าโปรแกรม Full 3D Drag and Drop อย่าง <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">Engine001</a> หรือ FPS Creator<br />
<br />
4. ระบบอีเวนท์ คล้ายกับ RPG Maker <br />
แต่เงื่อนไขของอีเวนท์แต่ละหน้า สามารถเพิ่มได้อย่างอิสระ<br />
รวมถึงมีอีเวนท์ตัวอย่างให้เลือกใช้ได้อย่างมากมาย<br />
<br />
<img src="https://i.imgur.com/g4FtOaw.png" loading="lazy"  width="529" height="322" alt="[Image: g4FtOaw.png]" class="mycode_img" /><br />
<br />
5. มุมกล้องที่อิสระ สามารถหมุน/ซูม/ก้ม/เงย ได้อย่างอิสระ<br />
และสามารถสลับระหว่าง Third Person / First Person ได้ตลอดเวลา<br />
<br />
<img src="https://i.imgur.com/U6Om9ig.png" loading="lazy"  width="543" height="324" alt="[Image: U6Om9ig.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/5xv2vMX.png" loading="lazy"  width="581" height="327" alt="[Image: 5xv2vMX.png]" class="mycode_img" /><br />
6. รีซอร์ซตั้งต้นที่มีให้อย่างมากมาย<br />
และยังรองรับรีซอร์ซทั้ง 3D และ 2D<br />
<img src="https://i.imgur.com/0zKXbYe.png" loading="lazy"  width="549" height="395" alt="[Image: 0zKXbYe.png]" class="mycode_img" /><br />
<br />
7. มี 3D Character Editor (เป็น DLC)<br />
<img src="https://i.imgur.com/FEblyxt.png" loading="lazy"  width="596" height="406" alt="[Image: FEblyxt.png]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><br />
จุดด้อยของโปรแกรมนี้</span></span></span><br />
<br />
1. ไม่สามารถวาดสี่เหลี่ยมหรือวงกลมได้ แต่ยังเลือกเป็นสี่เหลี่ยมได้<br />
2. ระบบการเลือก Object ยังสับสนอยู่ โดยเฉพาะเวลาจะ Edit Object ต่างๆ<br />
3. โปรแกรมนี้มีเพียง 3 เลเยอร์ คือ พื้น (Terrain) / Object / อีเวนท์ (Event) เท่านั้น<br />
หรือก็คือ Layer เทียบเท่า RPG Maker 2003 / VX ขึ้นไป เท่านั้น<br />
ไม่ได้อิสระเหมือนโปรแกรม Full 3D Drag and Drop อย่าง <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">Engine001</a> หรือ FPS Creator<br />
แม้จะสามารถปรับความสูงของพื้นได้ ก็ไม่สามารถทำพื้นที่ลอยอยู่ หรือเพดานได้<br />
ไม่สามารถเอาของในเลเยอร์เดียวกันซ้อนกันได้<br />
จึงขอแสดงความเสียใจกับท่านที่วางแผนจะสร้างแผนที่อลังการด้วยครับ<br />
4. คำสั่งอีเวนท์ยังน้อยอยู่<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">ว่าด้วยเรื่องข้อจำกัดการใช้งาน</span></span></span><br />
<img src="https://i.imgur.com/UIogGXl.png" loading="lazy"  alt="[Image: UIogGXl.png]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[เว็บของผู้พัฒนา<br />
<a href="http://smilegamebuilder.com/en/" target="_blank" rel="noopener" class="mycode_url">http://smilegamebuilder.com/en/</a><br />
<br />
สามารถดาวน์โหลดรุ่นทดลองได้ในสตรีม (ใช้ได้ 30 วัน)<br />
หรือโหลดที่ <a href="http://smilegamebuilder.com/en/trial/" target="_blank" rel="noopener" class="mycode_url">http://smilegamebuilder.com/en/trial/</a><br />
สามารถซื้อเวอร์ชั่นเต็มได้ในในสตรีม ราคา 819 บาท<br />
*<span style="color: #ffffff;" class="mycode_color">ผมมีเวอร์ชั่นยาแก้ไอของ 1.8.0.7 (พร้อม DLC 3D Character Editor) ขอหลังไมค์ได้*</span><br />
<img src="https://i.imgur.com/lcPxjuc.png" loading="lazy"  alt="[Image: lcPxjuc.png]" class="mycode_img" /><br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">โปรแกรมนี้คืออะไร</span></span></span><br />
<br />
Smile Game Builder เป็นโปรแกรมสำหรับสร้างเกมแนว RPG<br />
ด้วยระบบ<span style="font-weight: bold;" class="mycode_b"> Full Drag and Drop</span><br />
อารมณ์ประมาณ RPG Maker 2000-2003 <br />
แต่ความยืดหยุ่นและความหลากหลายในคำสั่งยังน้อยกว่า RPG Maker มาก<br />
<br />
<img src="https://i.imgur.com/wusFIjP.png" loading="lazy"  width="544" height="306" alt="[Image: wusFIjP.png]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><br />
จุดเด่นของโปรแกรมนี้</span></span></span><br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">1. *** สำคัญมาก *** </span></span></span><br />
มี DLC (ที่ราคาแพงกว่าโปรแกรมหลัก)<br />
ที่<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">สามารถ Export ไปลง Unity ได้ทันที </span></span><br />
<br />
2. ใช้ภาษาไทยได้ แต่ต้องไปแก้ Font ก่อนนะ<br />
(จะกล่าวถึงในบทสอนอีกที)<br />
** อยู่ระหว่างตรวจสอบ ดูเหมือนจะมีความผิดพลาด **<br />
<br />
3. การวาดแผนที่<br />
ด้วยระบบ Full Drag and Drop <br />
โปรแกรมนี้จะมองทุกอย่างเป็น Block เอาไปวางเรียงกัน และใช้การปรับความสูงเอา<br />
<img src="https://i.imgur.com/UvortGD.png" loading="lazy"  width="511" height="287" alt="[Image: UvortGD.png]" class="mycode_img" /><br />
<br />
แต่ยังไม่สมบูรณ์เท่าโปรแกรม Full 3D Drag and Drop อย่าง <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">Engine001</a> หรือ FPS Creator<br />
<br />
4. ระบบอีเวนท์ คล้ายกับ RPG Maker <br />
แต่เงื่อนไขของอีเวนท์แต่ละหน้า สามารถเพิ่มได้อย่างอิสระ<br />
รวมถึงมีอีเวนท์ตัวอย่างให้เลือกใช้ได้อย่างมากมาย<br />
<br />
<img src="https://i.imgur.com/g4FtOaw.png" loading="lazy"  width="529" height="322" alt="[Image: g4FtOaw.png]" class="mycode_img" /><br />
<br />
5. มุมกล้องที่อิสระ สามารถหมุน/ซูม/ก้ม/เงย ได้อย่างอิสระ<br />
และสามารถสลับระหว่าง Third Person / First Person ได้ตลอดเวลา<br />
<br />
<img src="https://i.imgur.com/U6Om9ig.png" loading="lazy"  width="543" height="324" alt="[Image: U6Om9ig.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/5xv2vMX.png" loading="lazy"  width="581" height="327" alt="[Image: 5xv2vMX.png]" class="mycode_img" /><br />
6. รีซอร์ซตั้งต้นที่มีให้อย่างมากมาย<br />
และยังรองรับรีซอร์ซทั้ง 3D และ 2D<br />
<img src="https://i.imgur.com/0zKXbYe.png" loading="lazy"  width="549" height="395" alt="[Image: 0zKXbYe.png]" class="mycode_img" /><br />
<br />
7. มี 3D Character Editor (เป็น DLC)<br />
<img src="https://i.imgur.com/FEblyxt.png" loading="lazy"  width="596" height="406" alt="[Image: FEblyxt.png]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><br />
จุดด้อยของโปรแกรมนี้</span></span></span><br />
<br />
1. ไม่สามารถวาดสี่เหลี่ยมหรือวงกลมได้ แต่ยังเลือกเป็นสี่เหลี่ยมได้<br />
2. ระบบการเลือก Object ยังสับสนอยู่ โดยเฉพาะเวลาจะ Edit Object ต่างๆ<br />
3. โปรแกรมนี้มีเพียง 3 เลเยอร์ คือ พื้น (Terrain) / Object / อีเวนท์ (Event) เท่านั้น<br />
หรือก็คือ Layer เทียบเท่า RPG Maker 2003 / VX ขึ้นไป เท่านั้น<br />
ไม่ได้อิสระเหมือนโปรแกรม Full 3D Drag and Drop อย่าง <a href="http://irpg.in.th/thread-3228.html" target="_blank" rel="noopener" class="mycode_url">Engine001</a> หรือ FPS Creator<br />
แม้จะสามารถปรับความสูงของพื้นได้ ก็ไม่สามารถทำพื้นที่ลอยอยู่ หรือเพดานได้<br />
ไม่สามารถเอาของในเลเยอร์เดียวกันซ้อนกันได้<br />
จึงขอแสดงความเสียใจกับท่านที่วางแผนจะสร้างแผนที่อลังการด้วยครับ<br />
4. คำสั่งอีเวนท์ยังน้อยอยู่<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">ว่าด้วยเรื่องข้อจำกัดการใช้งาน</span></span></span><br />
<img src="https://i.imgur.com/UIogGXl.png" loading="lazy"  alt="[Image: UIogGXl.png]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[แนะนำโปรแกรม 001 Game Creator (Engine001 Action-RPG Maker)]]></title>
			<link>https://irpg.in.th/thread-3228.html</link>
			<pubDate>Sat, 30 Dec 2017 19:35:12 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=17">OP_Jum_RPG</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3228.html</guid>
			<description><![CDATA[เว็บไซต์ของผู้พัฒนา<br />
<a href="http://www.engine001.com/" target="_blank" rel="noopener" class="mycode_url">http://www.engine001.com/</a><br />
ตอนนี้เปลี่ยนเป็น <br />
<a href="https://001gamecreator.com/" target="_blank" rel="noopener" class="mycode_url">https://001gamecreator.com/</a><br />
<br />
ถ้าใครอยากเข้าเว็บเก่า ให้เข้าได้ที่ <br />
<a href="https://archive.engine001.com" target="_blank" rel="noopener" class="mycode_url">https://archive.engine001.com</a><br />
(พวกรีซอร์ซยังโหลดได้นะ)<br />
<br />
เวอร์ชั่นฟรีเก่าๆ ช่วง 1.016 ลงไป ยังสามารถหาโหลดได้ทั่วไปอยู่<br />
สูงที่สุดเท่าที่หาเจอในตอนนี้คือ 1.016.014 ดาวน์โหลดได้ที่ <a href="http://www.mediafire.com/file/jqoel7os2uentjb/Engine001%20V.1.016.014.rar" target="_blank" rel="noopener" class="mycode_url">Link 1</a> หรือ <a href="https://www.dropbox.com/s/u217pijw4b07ixv/Engine001%20V.1.016.014.rar?dl=0" target="_blank" rel="noopener" class="mycode_url">Link 2</a> (ผมอัพเองทั้งสองลิงค์)<br />
<br />
<img src="https://i.imgur.com/k8TFo8c.png" loading="lazy"  width="508" height="284" alt="[Image: k8TFo8c.png]" class="mycode_img" /><br />
<img src="https://i.imgur.com/KVJkFIu.png" loading="lazy"  width="506" height="282" alt="[Image: KVJkFIu.png]" class="mycode_img" /><br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">โปรแกรมนี้คืออะไร</span></span></span><br />
Engine001 จัดได้ว่าเป็นโปรแกรมสร้างเกมแนว Action-RPG ที่ง่ายและสมบูรณ์ที่สุดโปรแกรมหนึ่ง<br />
ด้วยรูปแบบที่คล้ายกับโปรแกรมตระกูล RPG Maker แต่ลูกเล่นเยอะกว่า RPG Maker มาก<br />
<br />
ตัวโปรแกรมได้เขียนระบบ Action พื้นฐานมาให้เราแล้วตั้งแต่ต้น<br />
ไม่ว่าจะเป็นตัวละครผู้เล่น อาวุธ แผนที่รวมถึงการเขียนค่าพลังและ AI ศัตรูที่เป้นระบบ Drag and Drop ทั้งหมด  <br />
แม้ไม่สร้างอะไรเพิ่มหรือเขียนคำสั่งใดๆเพิ่ม แค่เอาตัวละคร เอาอาวุธมาวาง ตัวละครก็ฟันกันแบบง่ายๆได้แล้ว<br />
<br />
<img src="https://i.imgur.com/c8jBsZd.png" loading="lazy"  width="498" height="389" alt="[Image: c8jBsZd.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/POlnl1U.png" loading="lazy"  width="489" height="381" alt="[Image: POlnl1U.png]" class="mycode_img" /><br />
ตัวอย่างจากในยูทูป<br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/uh4rOTzycpc" frameborder="0" allowfullscreen="true"></iframe><br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/dodepRT-yrI" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
<br />
<br />
ตอนแรกโปรแกรมนี้ชื่อ Engine001 ต่อมาเปลี่ยนเป็น GG Maker<br />
แต่ในเวอร์ชั่นล่าสุด กลับใส่ชื่อว่า 001 Game Creator<br />
จนไม่มั่นใจว่า ตกลงปัจจุบันนี้ใช้ชื่ออะไรกันแน่<br />
<div style="text-align: left;" class="mycode_align">(เห็นว่าเปลี่ยนบริษัทที่สังกัดมั๊ง เลยต้องเปลี่ยนชื่อ แต่ทีมพัฒนายังคงเป็นชุดเดิม)</div>
<br />
<div style="text-align: left;" class="mycode_align"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">ก็ขอให้เข้าใจตรงกันว่า ทั้ง 3 ชื่อนี้ รวมถึงชื่อในตัว install อาจจะเป็น Map001.exe</span></span></div>
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">เป็นโปรแกรมเดียวกันทั้งหมด</span></span><br />
<br />
<br />
โดยดั้งเดิม โปรแกรมนี้ถูกออกแบบมาเพื่อใช้สร้างเกม Action-RPG<br />
ตั้งแต่เวอร์ชั่น 1.007 (ถ้าผมจำไม่ผิด) เป็นต้นมา<br />
ทางผู้พัฒนาได้เพิ่มระบบ Side-Scrolling หรือระบบเดินฟันมุมมองด้านข้างเข้ามาด้วย<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">เรื่องเลขของเวอร์ชั่น </span></span></span><br />
เช่น 1.019.002<br />
1 ตัวหน้า: คืออะไรไม่รู้ เดาว่าตาม 001<br />
019 คือรหัสเวอร์ชั่น หรือก็คือออกมาแล้ว 19 เวอร์ชั่น<br />
002 คือรหัสการอัพเดท หรือก็คืออัพเดทครั้งที่ 2 ของ 019 (ครั้งแรกมักจะลง .000)<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size">จุดเด่นของโปรแกรมนี้</span></span></span><br />
อย่างที่กล่าวไปแล้วว่า โปรแกรมนี้ เป็นโปรแกรมที่คล้ายๆกับ RPG Maker<br />
คือเป็นโปรแกรมสร้างเกมสำเร็จรูป ในแบบ Drag and Drop<br />
และสร้างระบบ Action พื้นฐานมาให้เราแล้ว<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Action RPG</span></span></span><br />
ระบบพื้นฐานของโปรแกรม Engine001 ตามที่กล่าวมาข้างต้น <br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">3D Mode</span></span></span><br />
จริงๆโปรแกรมมันก็เป็น 3D (มีครบแกน X-Y-Z) แต่แรกอยู่แล้ว <br />
แค่หลอกตาเราว่ามันเป็น 2D เท่านั้นเอง <br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/5mqidgU8-3A" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/81EHtk9qxBU" frameborder="0" allowfullscreen="true"></iframe><br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">ระบบ Side-Scrolling ใน Engine001</span></span></span><br />
จริงๆมันก็ไม่ใช่แนวด้านข้างโดยสมบูรณ์หรอกครับ<br />
แค่หมุนแกนออกมาเท่านั้น<br />
จากเดิมที่เป็น X กว้าง Y สูง<br />
ก็เป็น X กว้าง Z สูง<br />
<br />
ทีนี้ โปรแกรมมันใส่ระบบกระโดดไว้ให้แล้ว แค่หมุนมุมกล้องก็กลายเป็นแนวนี้ทันที<br />
ที่เห็นเป็นพื้นนั่น จริงๆก็คือกำแพง<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/WxvPvFlIi8c" frameborder="0" allowfullscreen="true"></iframe><br />
<span style="color: red;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">ตัวอย่างการใส่คำสั่งภายในโปรแกรม</span></span><br />
1. การวาดแผนที่ เหมือนๆกับโปรแกรมแนวนี้อื่นๆ<br />
แน่นอนว่า สร้างกำแพงได้เลย <br />
อีกทั้งโปรแกรมนี้ยังเป็น Full Layer Mapping <br />
จึงสามารถสร้างบนเลเยอร์ที่สูงขึ้น ของลอย เพดาน หรือเอาอะไรต่ออะไรมาวางซ้อนกันได้ทันที<br />
<br />
2. การตั้งค่าตัวละครศัตรู หรือ NPC ที่สามารถตั้งได้ที่ Object นั้นๆได้ทันที<br />
และตัวละคร สามารถเลือกได้อย่างอิสระ<br />
เท่ากับมีโปรแกรม Character Maker อยู่ในนั้นแล้ว<br />
ไม่จำเป็นต้อง Export ออกมา เหมือนกับ RPG Maker VX Ace<br />
และแน่นอนว่า รวมถึง Equipment ต่างๆ ด้วย<br />
<br />
<img src="https://i.imgur.com/geFenjy.png" loading="lazy"  width="535" height="385" alt="[Image: geFenjy.png]" class="mycode_img" /><br />
<br />
3. Item และ Magic ที่พร้อมสำหรับการทำเกมเดินยิง<br />
โดยโปรแกรมนี้จะมอง Magic เป็นเหมือนไอเทมอย่างหนึ่ง ที่ใช้แล้วไม่หมดไป (แต่ไปลด MP แทน)<br />
เทย์ประเภทยิง ก็เทียบเท่าอาวุธชนิดขว้างหรือกระสุนปืน<br />
<img src="https://i.imgur.com/WeeF7mR.png" loading="lazy"  width="531" height="279" alt="[Image: WeeF7mR.png]" class="mycode_img" /><br />
<br />
4. การเขียน Event มีลักษณะเป็น Flow Chart <br />
ทำให้ง่ายต่อการเขียนความเชื่อมต่อ<br />
<img src="https://i.imgur.com/rVyeIy0.png" loading="lazy"  width="501" height="387" alt="[Image: rVyeIy0.png]" class="mycode_img" /><br />
<br />
สามารถสลับไปเป็นโหมด Text Script ได้<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">โครงสร้างสคริปต์น่าจะเป็นภาษา Basic</span></span><br />
<img src="https://i.imgur.com/JL1DiRJ.png" loading="lazy"  width="536" height="414" alt="[Image: JL1DiRJ.png]" class="mycode_img" /><br />
<br />
5. คำสั่งที่มีอย่างมากมาย<br />
ที่สำคัญ สามารถอ้างอิงค่าต่างๆในเกมมาใช้ได้โดยตรง <br />
โดยไม่จำเป็นต้องผ่านตัวแปรอีกต่อไป<br />
<br />
มีตัวแปรและสวิตช์ เหมือน RPG Maker<br />
และสามารถสร้าง ตัวแปรเฉพาะ สำหรับแต่ละ Object ได้เลยด้วย<br />
<br />
<br />
<img src="https://i.imgur.com/fgjX72A.png" loading="lazy"  width="535" height="413" alt="[Image: fgjX72A.png]" class="mycode_img" /><br />
<br />
6. มีโปรแกรม Dot Pixel ในตัว สามารถวาดแก้ไขได้ทันที<br />
<img src="https://i.imgur.com/5cBhlnW.png" loading="lazy"  alt="[Image: 5cBhlnW.png]" class="mycode_img" /><br />
<br />
จากข้อ 2 หากเป็นตัวละครเฉพาะ ให้ดอททุกอย่างลงไปใน Part Body Part ทั้งตัวเลยก็ได้<br />
แขนกับตัวแยกชิ้นนะ เพราะมีผลกับ animation อาวุธ<br />
เนื่องจาก 001 จะไม่เก็บไฟล์ประเภทรูปภาพ แต่จะเก็บเป็น Data เฉพาะไปเลย<br />
จึงสามารถเพิ่มไฟล์ Data ดังกล่าวได้โดยไม่ต้องผ่านโปรแกรมอื่น<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: red;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">การ Import / Export Resource <span style="text-decoration: underline;" class="mycode_u">Data</span></span></span></span><br />
เนื่องจาก 001 จะไม่เก็บไฟล์ประเภทรูปภาพ แต่จะเก็บเป็น Data เฉพาะไปเลย<br />
โปรแกรมนี้ สามารถ Export ข้อมูลของ Resource ต่างๆ<br />
ไม่ว่าจะเป็น ไอเทม อาวุธ ตัวละคร ฯลฯ<br />
ออกไปในรูปแบบของไฟล์ Data เฉพาะของโปรแกรมได้ทันที<br />
โดยจะบันทึกข้อมูลทุกอย่างที่ตั้งค่าไว้ รวมถึงรูป ออกไปพร้อมกับมันด้วย<br />
<br />
และสามาร Import เข้าไปยังโปรเจ็คต์ใหม่ได้ทันที<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: red;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">Multi-Platform Support</span></span></span><br />
สามารถ Build Game ออกไปได้หลายแบบมากๆ<br />
ที่สำคัญ<br />
- ล็อคโปรเจ็คต์ได้<br />
- แปลงเป็น apk ให้เลย เอาไปเล่นได้ทันที  <br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: red;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">DLC</span></span></span><br />
ระบบเกมที่สามารถซื้อเพิ่มได้<br />
- 3D FPS<br />
- MMORPG<br />
- Point and Click<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size">จุดด้อยของโปรแกรมนี้</span></span></span><br />
1. ราคายังค่อนข้างแพงอยู่<br />
2. รีซอร์ซให้มาค่อนข้างน้อย และไม่สามารถใช้ข้ามโหมดได้<br />
3. UI ของโปรแกรมยังมีความสับสน<br />
4. การ Import 3D Model ใช้งานยากมาก<br />
5.โปรแกรมเน้นไปที่ระบบ Action ทำให้ขาดในส่วนของ RPG ไปบ้าง<br />
6. ยังใช้ภาษาไทยไม่ได้<br />
7. หน้าดาวน์โหลดรีซอร์ซจากเว็บหลักไม่มีแล้ว ต่ยังพอโหลจากเว็บ Archive ได้อยู่ (<a href="https://archive.engine001.com" target="_blank" rel="noopener" class="mycode_url">https://archive.engine001.com</a>)<br />
<br />
<span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">รูปแบบและข้อจำกัดของโปรแกรมแต่ละแบบ</span></span></span><br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">แบบ Standalone Setup</span></span></span> <br />
1. ปัจจุบัน<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">ไม่สามารถดาวน์โหลดตัวฟรี</span></span>จากเว็บผู้พัฒนาได้แล้ว<br />
นอกจากจะสมัครเป็น subscriber เพื่อโหลดแบบเต็ม เท่านั้น<br />
2. เวอร์ชั่นเก่าๆ ช่วง 1.016 ลงไป ยังสามารถหาโหลดได้ทั่วไปอยู่<br />
สูงที่สุดเท่าที่หาเจอในตอนนี้คือ 1.016.014 ดาวน์โหลดได้ที่ <a href="http://www.mediafire.com/file/jqoel7os2uentjb/Engine001%20V.1.016.014.rar" target="_blank" rel="noopener" class="mycode_url">Link 1</a> หรือ <a href="https://www.dropbox.com/s/u217pijw4b07ixv/Engine001%20V.1.016.014.rar?dl=0" target="_blank" rel="noopener" class="mycode_url">Link 2</a> (ผมอัพเอง)<br />
สามารถใช้ได้ไม่จำกัดเวลา แต่ปิดโหมด 3D และคำสั่งบางอย่างเอาไว้ <br />
3. ปัจจุบันสามารถดาวน์โหลดเวอร์ชั่น Demo จากเว็บหลักได้ <br />
โดยจะใช้ได้ 7 วัน หลังจากนั้นจะไม่สามารถเซฟได้ นอกนั้นเหมือนตัวเต็ม<br />
<br />
<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">แบบ Steam </span></span></span><br />
1. สามารถดาวน์โหลด Trial Version ได้ใน Steam<br />
ไม่มีข้อจำกัดเรื่องคำสั่งในโปรแกรม เหมือนกับเวอร์ชั่นที่โหลดจากเว็บหลัก<br />
แต่เกมที่สร้างมาเกินกว่า 24 ชั่วโมง จะไม่สามารถเซฟได้ <br />
รวมถึงเกมตัวอย่างที่โปรแกรมให้มาด้วย หากเปิดขึ้นมา ก็จะใช้ได้แค่นั้น หลังจากนั้นจะไม่สามารถเซฟเกมได้เช่นกัน <br />
นอกนั้นเหมือนตัวเต็ม<br />
 และมีการอัพเดทเทียบเท่าตัวเต็มใน Stream ทุกประการ<br />
2. สามารถซื้อตัวเต็มได้ใน Steam ราคาพันกว่าบาท <br />
และมี DLC อีก 3 ตัว จะกล่าวถึงภายหลัง<br />
<br />
<br />
<br />
**********************************************************<br />
**********************************************************<br />
หลักๆก็คงมีเท่านี้ล่ะนะ<br />
จัดว่าเป็นโปรแกรมที่น่าสนใจโปรแกรมหนึ่ง สำหรับคนที่อยากทำเกม Action-RPG<br />
แต่หลายจุด ที่เป็นเรื่องเดียวกัน ยังใช้ยากกว่า RPG Maker อยู่ <br />
ใครสนใจ สามารถมาถามได้ครับ<br />
ไฟล์โปรแกรมผมเก็บไว้ค่อนข้างเยอะ (<span style="color: #ffffff;" class="mycode_color">แน่นอนว่ารวมถึง ยาแก้ไอของ 1.016.002 ด้วย)</span><br />
สนใจก็มาขอได้ เดี๋ยวอัพให้<br />
<br />
ปล. ผมยังไม่ได้ซื้อตัว DLC นะ<br />
ไม่สมารถรีวิวได้]]></description>
			<content:encoded><![CDATA[เว็บไซต์ของผู้พัฒนา<br />
<a href="http://www.engine001.com/" target="_blank" rel="noopener" class="mycode_url">http://www.engine001.com/</a><br />
ตอนนี้เปลี่ยนเป็น <br />
<a href="https://001gamecreator.com/" target="_blank" rel="noopener" class="mycode_url">https://001gamecreator.com/</a><br />
<br />
ถ้าใครอยากเข้าเว็บเก่า ให้เข้าได้ที่ <br />
<a href="https://archive.engine001.com" target="_blank" rel="noopener" class="mycode_url">https://archive.engine001.com</a><br />
(พวกรีซอร์ซยังโหลดได้นะ)<br />
<br />
เวอร์ชั่นฟรีเก่าๆ ช่วง 1.016 ลงไป ยังสามารถหาโหลดได้ทั่วไปอยู่<br />
สูงที่สุดเท่าที่หาเจอในตอนนี้คือ 1.016.014 ดาวน์โหลดได้ที่ <a href="http://www.mediafire.com/file/jqoel7os2uentjb/Engine001%20V.1.016.014.rar" target="_blank" rel="noopener" class="mycode_url">Link 1</a> หรือ <a href="https://www.dropbox.com/s/u217pijw4b07ixv/Engine001%20V.1.016.014.rar?dl=0" target="_blank" rel="noopener" class="mycode_url">Link 2</a> (ผมอัพเองทั้งสองลิงค์)<br />
<br />
<img src="https://i.imgur.com/k8TFo8c.png" loading="lazy"  width="508" height="284" alt="[Image: k8TFo8c.png]" class="mycode_img" /><br />
<img src="https://i.imgur.com/KVJkFIu.png" loading="lazy"  width="506" height="282" alt="[Image: KVJkFIu.png]" class="mycode_img" /><br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">โปรแกรมนี้คืออะไร</span></span></span><br />
Engine001 จัดได้ว่าเป็นโปรแกรมสร้างเกมแนว Action-RPG ที่ง่ายและสมบูรณ์ที่สุดโปรแกรมหนึ่ง<br />
ด้วยรูปแบบที่คล้ายกับโปรแกรมตระกูล RPG Maker แต่ลูกเล่นเยอะกว่า RPG Maker มาก<br />
<br />
ตัวโปรแกรมได้เขียนระบบ Action พื้นฐานมาให้เราแล้วตั้งแต่ต้น<br />
ไม่ว่าจะเป็นตัวละครผู้เล่น อาวุธ แผนที่รวมถึงการเขียนค่าพลังและ AI ศัตรูที่เป้นระบบ Drag and Drop ทั้งหมด  <br />
แม้ไม่สร้างอะไรเพิ่มหรือเขียนคำสั่งใดๆเพิ่ม แค่เอาตัวละคร เอาอาวุธมาวาง ตัวละครก็ฟันกันแบบง่ายๆได้แล้ว<br />
<br />
<img src="https://i.imgur.com/c8jBsZd.png" loading="lazy"  width="498" height="389" alt="[Image: c8jBsZd.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/POlnl1U.png" loading="lazy"  width="489" height="381" alt="[Image: POlnl1U.png]" class="mycode_img" /><br />
ตัวอย่างจากในยูทูป<br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/uh4rOTzycpc" frameborder="0" allowfullscreen="true"></iframe><br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/dodepRT-yrI" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
<br />
<br />
ตอนแรกโปรแกรมนี้ชื่อ Engine001 ต่อมาเปลี่ยนเป็น GG Maker<br />
แต่ในเวอร์ชั่นล่าสุด กลับใส่ชื่อว่า 001 Game Creator<br />
จนไม่มั่นใจว่า ตกลงปัจจุบันนี้ใช้ชื่ออะไรกันแน่<br />
<div style="text-align: left;" class="mycode_align">(เห็นว่าเปลี่ยนบริษัทที่สังกัดมั๊ง เลยต้องเปลี่ยนชื่อ แต่ทีมพัฒนายังคงเป็นชุดเดิม)</div>
<br />
<div style="text-align: left;" class="mycode_align"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">ก็ขอให้เข้าใจตรงกันว่า ทั้ง 3 ชื่อนี้ รวมถึงชื่อในตัว install อาจจะเป็น Map001.exe</span></span></div>
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">เป็นโปรแกรมเดียวกันทั้งหมด</span></span><br />
<br />
<br />
โดยดั้งเดิม โปรแกรมนี้ถูกออกแบบมาเพื่อใช้สร้างเกม Action-RPG<br />
ตั้งแต่เวอร์ชั่น 1.007 (ถ้าผมจำไม่ผิด) เป็นต้นมา<br />
ทางผู้พัฒนาได้เพิ่มระบบ Side-Scrolling หรือระบบเดินฟันมุมมองด้านข้างเข้ามาด้วย<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">เรื่องเลขของเวอร์ชั่น </span></span></span><br />
เช่น 1.019.002<br />
1 ตัวหน้า: คืออะไรไม่รู้ เดาว่าตาม 001<br />
019 คือรหัสเวอร์ชั่น หรือก็คือออกมาแล้ว 19 เวอร์ชั่น<br />
002 คือรหัสการอัพเดท หรือก็คืออัพเดทครั้งที่ 2 ของ 019 (ครั้งแรกมักจะลง .000)<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size">จุดเด่นของโปรแกรมนี้</span></span></span><br />
อย่างที่กล่าวไปแล้วว่า โปรแกรมนี้ เป็นโปรแกรมที่คล้ายๆกับ RPG Maker<br />
คือเป็นโปรแกรมสร้างเกมสำเร็จรูป ในแบบ Drag and Drop<br />
และสร้างระบบ Action พื้นฐานมาให้เราแล้ว<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Action RPG</span></span></span><br />
ระบบพื้นฐานของโปรแกรม Engine001 ตามที่กล่าวมาข้างต้น <br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">3D Mode</span></span></span><br />
จริงๆโปรแกรมมันก็เป็น 3D (มีครบแกน X-Y-Z) แต่แรกอยู่แล้ว <br />
แค่หลอกตาเราว่ามันเป็น 2D เท่านั้นเอง <br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/5mqidgU8-3A" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/81EHtk9qxBU" frameborder="0" allowfullscreen="true"></iframe><br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">ระบบ Side-Scrolling ใน Engine001</span></span></span><br />
จริงๆมันก็ไม่ใช่แนวด้านข้างโดยสมบูรณ์หรอกครับ<br />
แค่หมุนแกนออกมาเท่านั้น<br />
จากเดิมที่เป็น X กว้าง Y สูง<br />
ก็เป็น X กว้าง Z สูง<br />
<br />
ทีนี้ โปรแกรมมันใส่ระบบกระโดดไว้ให้แล้ว แค่หมุนมุมกล้องก็กลายเป็นแนวนี้ทันที<br />
ที่เห็นเป็นพื้นนั่น จริงๆก็คือกำแพง<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/WxvPvFlIi8c" frameborder="0" allowfullscreen="true"></iframe><br />
<span style="color: red;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">ตัวอย่างการใส่คำสั่งภายในโปรแกรม</span></span><br />
1. การวาดแผนที่ เหมือนๆกับโปรแกรมแนวนี้อื่นๆ<br />
แน่นอนว่า สร้างกำแพงได้เลย <br />
อีกทั้งโปรแกรมนี้ยังเป็น Full Layer Mapping <br />
จึงสามารถสร้างบนเลเยอร์ที่สูงขึ้น ของลอย เพดาน หรือเอาอะไรต่ออะไรมาวางซ้อนกันได้ทันที<br />
<br />
2. การตั้งค่าตัวละครศัตรู หรือ NPC ที่สามารถตั้งได้ที่ Object นั้นๆได้ทันที<br />
และตัวละคร สามารถเลือกได้อย่างอิสระ<br />
เท่ากับมีโปรแกรม Character Maker อยู่ในนั้นแล้ว<br />
ไม่จำเป็นต้อง Export ออกมา เหมือนกับ RPG Maker VX Ace<br />
และแน่นอนว่า รวมถึง Equipment ต่างๆ ด้วย<br />
<br />
<img src="https://i.imgur.com/geFenjy.png" loading="lazy"  width="535" height="385" alt="[Image: geFenjy.png]" class="mycode_img" /><br />
<br />
3. Item และ Magic ที่พร้อมสำหรับการทำเกมเดินยิง<br />
โดยโปรแกรมนี้จะมอง Magic เป็นเหมือนไอเทมอย่างหนึ่ง ที่ใช้แล้วไม่หมดไป (แต่ไปลด MP แทน)<br />
เทย์ประเภทยิง ก็เทียบเท่าอาวุธชนิดขว้างหรือกระสุนปืน<br />
<img src="https://i.imgur.com/WeeF7mR.png" loading="lazy"  width="531" height="279" alt="[Image: WeeF7mR.png]" class="mycode_img" /><br />
<br />
4. การเขียน Event มีลักษณะเป็น Flow Chart <br />
ทำให้ง่ายต่อการเขียนความเชื่อมต่อ<br />
<img src="https://i.imgur.com/rVyeIy0.png" loading="lazy"  width="501" height="387" alt="[Image: rVyeIy0.png]" class="mycode_img" /><br />
<br />
สามารถสลับไปเป็นโหมด Text Script ได้<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">โครงสร้างสคริปต์น่าจะเป็นภาษา Basic</span></span><br />
<img src="https://i.imgur.com/JL1DiRJ.png" loading="lazy"  width="536" height="414" alt="[Image: JL1DiRJ.png]" class="mycode_img" /><br />
<br />
5. คำสั่งที่มีอย่างมากมาย<br />
ที่สำคัญ สามารถอ้างอิงค่าต่างๆในเกมมาใช้ได้โดยตรง <br />
โดยไม่จำเป็นต้องผ่านตัวแปรอีกต่อไป<br />
<br />
มีตัวแปรและสวิตช์ เหมือน RPG Maker<br />
และสามารถสร้าง ตัวแปรเฉพาะ สำหรับแต่ละ Object ได้เลยด้วย<br />
<br />
<br />
<img src="https://i.imgur.com/fgjX72A.png" loading="lazy"  width="535" height="413" alt="[Image: fgjX72A.png]" class="mycode_img" /><br />
<br />
6. มีโปรแกรม Dot Pixel ในตัว สามารถวาดแก้ไขได้ทันที<br />
<img src="https://i.imgur.com/5cBhlnW.png" loading="lazy"  alt="[Image: 5cBhlnW.png]" class="mycode_img" /><br />
<br />
จากข้อ 2 หากเป็นตัวละครเฉพาะ ให้ดอททุกอย่างลงไปใน Part Body Part ทั้งตัวเลยก็ได้<br />
แขนกับตัวแยกชิ้นนะ เพราะมีผลกับ animation อาวุธ<br />
เนื่องจาก 001 จะไม่เก็บไฟล์ประเภทรูปภาพ แต่จะเก็บเป็น Data เฉพาะไปเลย<br />
จึงสามารถเพิ่มไฟล์ Data ดังกล่าวได้โดยไม่ต้องผ่านโปรแกรมอื่น<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: red;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">การ Import / Export Resource <span style="text-decoration: underline;" class="mycode_u">Data</span></span></span></span><br />
เนื่องจาก 001 จะไม่เก็บไฟล์ประเภทรูปภาพ แต่จะเก็บเป็น Data เฉพาะไปเลย<br />
โปรแกรมนี้ สามารถ Export ข้อมูลของ Resource ต่างๆ<br />
ไม่ว่าจะเป็น ไอเทม อาวุธ ตัวละคร ฯลฯ<br />
ออกไปในรูปแบบของไฟล์ Data เฉพาะของโปรแกรมได้ทันที<br />
โดยจะบันทึกข้อมูลทุกอย่างที่ตั้งค่าไว้ รวมถึงรูป ออกไปพร้อมกับมันด้วย<br />
<br />
และสามาร Import เข้าไปยังโปรเจ็คต์ใหม่ได้ทันที<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: red;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">Multi-Platform Support</span></span></span><br />
สามารถ Build Game ออกไปได้หลายแบบมากๆ<br />
ที่สำคัญ<br />
- ล็อคโปรเจ็คต์ได้<br />
- แปลงเป็น apk ให้เลย เอาไปเล่นได้ทันที  <br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: red;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">DLC</span></span></span><br />
ระบบเกมที่สามารถซื้อเพิ่มได้<br />
- 3D FPS<br />
- MMORPG<br />
- Point and Click<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size">จุดด้อยของโปรแกรมนี้</span></span></span><br />
1. ราคายังค่อนข้างแพงอยู่<br />
2. รีซอร์ซให้มาค่อนข้างน้อย และไม่สามารถใช้ข้ามโหมดได้<br />
3. UI ของโปรแกรมยังมีความสับสน<br />
4. การ Import 3D Model ใช้งานยากมาก<br />
5.โปรแกรมเน้นไปที่ระบบ Action ทำให้ขาดในส่วนของ RPG ไปบ้าง<br />
6. ยังใช้ภาษาไทยไม่ได้<br />
7. หน้าดาวน์โหลดรีซอร์ซจากเว็บหลักไม่มีแล้ว ต่ยังพอโหลจากเว็บ Archive ได้อยู่ (<a href="https://archive.engine001.com" target="_blank" rel="noopener" class="mycode_url">https://archive.engine001.com</a>)<br />
<br />
<span style="color: #3366ff;" class="mycode_color"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">รูปแบบและข้อจำกัดของโปรแกรมแต่ละแบบ</span></span></span><br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">แบบ Standalone Setup</span></span></span> <br />
1. ปัจจุบัน<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">ไม่สามารถดาวน์โหลดตัวฟรี</span></span>จากเว็บผู้พัฒนาได้แล้ว<br />
นอกจากจะสมัครเป็น subscriber เพื่อโหลดแบบเต็ม เท่านั้น<br />
2. เวอร์ชั่นเก่าๆ ช่วง 1.016 ลงไป ยังสามารถหาโหลดได้ทั่วไปอยู่<br />
สูงที่สุดเท่าที่หาเจอในตอนนี้คือ 1.016.014 ดาวน์โหลดได้ที่ <a href="http://www.mediafire.com/file/jqoel7os2uentjb/Engine001%20V.1.016.014.rar" target="_blank" rel="noopener" class="mycode_url">Link 1</a> หรือ <a href="https://www.dropbox.com/s/u217pijw4b07ixv/Engine001%20V.1.016.014.rar?dl=0" target="_blank" rel="noopener" class="mycode_url">Link 2</a> (ผมอัพเอง)<br />
สามารถใช้ได้ไม่จำกัดเวลา แต่ปิดโหมด 3D และคำสั่งบางอย่างเอาไว้ <br />
3. ปัจจุบันสามารถดาวน์โหลดเวอร์ชั่น Demo จากเว็บหลักได้ <br />
โดยจะใช้ได้ 7 วัน หลังจากนั้นจะไม่สามารถเซฟได้ นอกนั้นเหมือนตัวเต็ม<br />
<br />
<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">แบบ Steam </span></span></span><br />
1. สามารถดาวน์โหลด Trial Version ได้ใน Steam<br />
ไม่มีข้อจำกัดเรื่องคำสั่งในโปรแกรม เหมือนกับเวอร์ชั่นที่โหลดจากเว็บหลัก<br />
แต่เกมที่สร้างมาเกินกว่า 24 ชั่วโมง จะไม่สามารถเซฟได้ <br />
รวมถึงเกมตัวอย่างที่โปรแกรมให้มาด้วย หากเปิดขึ้นมา ก็จะใช้ได้แค่นั้น หลังจากนั้นจะไม่สามารถเซฟเกมได้เช่นกัน <br />
นอกนั้นเหมือนตัวเต็ม<br />
 และมีการอัพเดทเทียบเท่าตัวเต็มใน Stream ทุกประการ<br />
2. สามารถซื้อตัวเต็มได้ใน Steam ราคาพันกว่าบาท <br />
และมี DLC อีก 3 ตัว จะกล่าวถึงภายหลัง<br />
<br />
<br />
<br />
**********************************************************<br />
**********************************************************<br />
หลักๆก็คงมีเท่านี้ล่ะนะ<br />
จัดว่าเป็นโปรแกรมที่น่าสนใจโปรแกรมหนึ่ง สำหรับคนที่อยากทำเกม Action-RPG<br />
แต่หลายจุด ที่เป็นเรื่องเดียวกัน ยังใช้ยากกว่า RPG Maker อยู่ <br />
ใครสนใจ สามารถมาถามได้ครับ<br />
ไฟล์โปรแกรมผมเก็บไว้ค่อนข้างเยอะ (<span style="color: #ffffff;" class="mycode_color">แน่นอนว่ารวมถึง ยาแก้ไอของ 1.016.002 ด้วย)</span><br />
สนใจก็มาขอได้ เดี๋ยวอัพให้<br />
<br />
ปล. ผมยังไม่ได้ซื้อตัว DLC นะ<br />
ไม่สมารถรีวิวได้]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[แนะนำโปรแกรม Visual Novel Maker]]></title>
			<link>https://irpg.in.th/thread-3210.html</link>
			<pubDate>Mon, 20 Nov 2017 22:43:02 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=101">XthemeCore</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3210.html</guid>
			<description><![CDATA[<img src="https://i.imgur.com/cwHej6F.jpg" loading="lazy"  alt="[Image: cwHej6F.jpg]" class="mycode_img" /><br />
<br />
ผู้พัฒนา: Degica<br />
วางจำหน่าย: 16 พฤศจิกายน พ.ศ. 2560<br />
ลิงค์: <a href="http://store.steampowered.com/app/495480/Visual_Novel_Maker/" target="_blank" rel="noopener" class="mycode_url">http://store.steampowered.com/app/495480...vel_Maker/</a><br />
<br />
Visual Novel Engine เป็นโปรแกรมสร้างเกม Visual Novel สำเร็จรูป จากค่ายผู้จัดจำหน่ายชุดโปรแกรม RPG Maker<br />
การใช้งานจึงมีส่วนที่คล้ายๆและส่วนที่แตกต่างไปจาก RPG Maker อยู่<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">จุดเด่น</span></span></span><br />
1.รองรับ Live2D พร้อมด้วย license พิเศษที่ทำให้ไม่ต้องจ่าย royalty fees กับทาง Live2D Inc อีก<br />
(เฉพาะเกมที่สร้างด้วย VNM เท่านั้น ไม่นับรวมการเอา Live2D ไปใช้ใน RM)<br />
2.มีการออกแบบให้ใกล้เคียงกับ RPG Maker เช่นมีระบบ common event รวมถึงการจัดเมนูต่างๆมีความคล้ายคลึงกัน<br />
3.มีทรัพยากร เช่น รูปภาพตัวละคร ฉากหลัง ดนตรีและเพลงประกอบมาให้เลย<br />
4.เปิด script ทั้งหมด ทำให้สามารถแก้ไขได้แทบจะทุกส่วนที่ต้องการ<br />
5.UI สามารถทำได้โดยใช้ Action (ระบบ Event ใน VNM) แต่จะกินทรัพยากรมากกว่าแบบ Script ซึ่งอาจไม่เหมาะหากต้องการสร้างเป็นเกมบนมือถือสมาร์ทโฟน<br />
6.สามารถนำทรัพยากรจาก RM รวมถึง DLC มาใช้ใน VNM ได้ (รวมถึงในทางกลับกัน)<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">ข้อด้อย</span></span></span><br />
1.ราคาค่อนข้างแพงเมื่อเทียบกับเอนจิ้น VN ตัวอื่นที่มีทั้งแบบฟรีและถูกกว่า (แต่ราคาในไทยก็ถือว่าอยู่ในระดับพอรับได้)<br />
2.ทรัพยากรที่ให้มาค่อนข้างน้อย ตัวละครมีเพียง 8 ท่าเท่านั้น และค่อนข้างมีแนวเฉพาะ เช่น ตัวละครแฟนตาซี ซึ่งเอามาให้ทั่วไปไม่ค่อยได้<br />
3.การสร้าง UI ส่วน Script ค่อนข้างลำบาก เนื่องจากมีแยกส่วน UI layout กับระบบออกจากกัน (ใน RM จะเป็น script แบบเดียวกันหมด) โดย UI layout จะเป็น JSON แต่ระบบจะเป็น Coffee Script (ซึ่งจะถูกแปลงเป็น JavaScript อีกทีนึง) แต่อาจจะเหมาะกับคนที่ชอบทำงานเป็นระบบก็ได้<br />
4.ค่อนข้างออกมาช้า ทำให้คอมมูนิตี้ไม่ใหญ่นัก เมื่อเทียบกับเอนจิ้นอื่นที่ออกมานานแล้ว เช่น Renpy (แต่อนาคตจะมีการขยายตัวแน่ๆ เพราะคอมมูหลัก อยู่ที่เดียวกับ RM เลย <a href="https://forums.rpgmakerweb.com/index.php?categories/162/" target="_blank" rel="noopener" class="mycode_url">https://forums.rpgmakerweb.com/index.php...ories/162/</a> )<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">เริ่มต้นการใช้งาน</span></span></span><br />
<img src="https://i.imgur.com/jVZZP6L.png" loading="lazy"  alt="[Image: jVZZP6L.png]" class="mycode_img" /><br />
เมื่อเปิดโปรแกรมขึ้นมาจะพบกับหน้าจอหลัก สามารถกดเมนู file -&gt; new project เพื่อสร้างเกมได้เลย<br />
ในที่นี้จะขออธิบายเกี่ยวกับ template เริ่มต้นในการสร้างเกมซักนิด<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Template เริ่มต้น</span></span></span><br />
<img src="https://i.imgur.com/yjeFrnV.png" loading="lazy"  alt="[Image: yjeFrnV.png]" class="mycode_img" /><br />
จากรูปด้านบนจะเห็นว่ามี 5 แบบ แต่หลักๆจะใช้กันอยู่ 4 แบบแรก ดังนี้<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">1.Empty Project</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เชี่ยวชาญ<br />
เป็น template ที่เหมาะกับผู้ที่เคยใช้ VNM มาก่อน และต้องการเริ่มโปรเจคแบบเป็นระเบียบระบบของตัวเอง<br />
template นี้จะมี UI หน้าจอต่างเป็น script ทั้งหมด และไม่มีทรัพยากรใดๆมาให้ ผู้ใช้ต้อง import เข้ามาเอง<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">2.Sample 720p (Action-based UI)</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เริ่มต้นจนถึงผู้เชี่ยวชาญ<br />
เป็น template ที่เหมาะกับผู้เริ่มต้นที่สุดแล้ว โดยจะมีทรัพยากรต่างๆมาใช้งานให้เลย<br />
อีกทั้งตัว UI หน้าจอต่างๆทำด้วย Action(ระบบ Event ใน VNM) ทั้งหมด ทำให้ผู้ใช้ปรับแต่งและเข้าใจได้ง่าย<br />
โดยมี UI หน้าจอตั้งชื่อตัวละคร และหน้าจอรับอินพุตตัวเลขมาให้ด้วย<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">3.Live2D Demo 720p</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เริ่มต้นจนถึงผู้เชี่ยวชาญ<br />
เป็น template ที่มีเฉพาะผู้ที่ซื้อ Live2D DLC เท่านั้น โดยจะมีตัวอย่างการใช้งาน Action ของ Live2D ให้<br />
แต่ตัว UI จะเป็น Script ทั้งหมด ถึงอย่างนั้นก็สามารถศึกษา Action จากตัวนี้แล้วเอาไปใช้ใน template ที่ 2 ก็ได้<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">4.Sample 720p (Script-based UI)</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เริ่มต้นจนถึงผู้เชี่ยวชาญ<br />
เป็น template ที่เหมือนกับ template ที่ 2 แต่ต่างกันตรงที่ UI เขียนด้วย Script ทั้งหมด จึงเหมาะกับผู้ที่ต้องการศึกษาการเขียน Script หรือต้องการเริ่มโปรเจคโดยใช้ template เป็นฐาน<br />
<br />
สำหรับกระทู้นี้ ขอจบเพียงเท่านี้ก่อน เข้าใจว่าหลายๆคนไม่อยากอ่านกระทู้ที่ยาวมากๆเท่าไหร่<br />
ไว้เจอกันกระทู้หน้านะครับ สวัสดี <img src="http://i.imgur.com/e7K897X.png" alt="เอ้าดื่ม" title="เอ้าดื่ม" class="smilie smilie_143" />]]></description>
			<content:encoded><![CDATA[<img src="https://i.imgur.com/cwHej6F.jpg" loading="lazy"  alt="[Image: cwHej6F.jpg]" class="mycode_img" /><br />
<br />
ผู้พัฒนา: Degica<br />
วางจำหน่าย: 16 พฤศจิกายน พ.ศ. 2560<br />
ลิงค์: <a href="http://store.steampowered.com/app/495480/Visual_Novel_Maker/" target="_blank" rel="noopener" class="mycode_url">http://store.steampowered.com/app/495480...vel_Maker/</a><br />
<br />
Visual Novel Engine เป็นโปรแกรมสร้างเกม Visual Novel สำเร็จรูป จากค่ายผู้จัดจำหน่ายชุดโปรแกรม RPG Maker<br />
การใช้งานจึงมีส่วนที่คล้ายๆและส่วนที่แตกต่างไปจาก RPG Maker อยู่<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">จุดเด่น</span></span></span><br />
1.รองรับ Live2D พร้อมด้วย license พิเศษที่ทำให้ไม่ต้องจ่าย royalty fees กับทาง Live2D Inc อีก<br />
(เฉพาะเกมที่สร้างด้วย VNM เท่านั้น ไม่นับรวมการเอา Live2D ไปใช้ใน RM)<br />
2.มีการออกแบบให้ใกล้เคียงกับ RPG Maker เช่นมีระบบ common event รวมถึงการจัดเมนูต่างๆมีความคล้ายคลึงกัน<br />
3.มีทรัพยากร เช่น รูปภาพตัวละคร ฉากหลัง ดนตรีและเพลงประกอบมาให้เลย<br />
4.เปิด script ทั้งหมด ทำให้สามารถแก้ไขได้แทบจะทุกส่วนที่ต้องการ<br />
5.UI สามารถทำได้โดยใช้ Action (ระบบ Event ใน VNM) แต่จะกินทรัพยากรมากกว่าแบบ Script ซึ่งอาจไม่เหมาะหากต้องการสร้างเป็นเกมบนมือถือสมาร์ทโฟน<br />
6.สามารถนำทรัพยากรจาก RM รวมถึง DLC มาใช้ใน VNM ได้ (รวมถึงในทางกลับกัน)<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">ข้อด้อย</span></span></span><br />
1.ราคาค่อนข้างแพงเมื่อเทียบกับเอนจิ้น VN ตัวอื่นที่มีทั้งแบบฟรีและถูกกว่า (แต่ราคาในไทยก็ถือว่าอยู่ในระดับพอรับได้)<br />
2.ทรัพยากรที่ให้มาค่อนข้างน้อย ตัวละครมีเพียง 8 ท่าเท่านั้น และค่อนข้างมีแนวเฉพาะ เช่น ตัวละครแฟนตาซี ซึ่งเอามาให้ทั่วไปไม่ค่อยได้<br />
3.การสร้าง UI ส่วน Script ค่อนข้างลำบาก เนื่องจากมีแยกส่วน UI layout กับระบบออกจากกัน (ใน RM จะเป็น script แบบเดียวกันหมด) โดย UI layout จะเป็น JSON แต่ระบบจะเป็น Coffee Script (ซึ่งจะถูกแปลงเป็น JavaScript อีกทีนึง) แต่อาจจะเหมาะกับคนที่ชอบทำงานเป็นระบบก็ได้<br />
4.ค่อนข้างออกมาช้า ทำให้คอมมูนิตี้ไม่ใหญ่นัก เมื่อเทียบกับเอนจิ้นอื่นที่ออกมานานแล้ว เช่น Renpy (แต่อนาคตจะมีการขยายตัวแน่ๆ เพราะคอมมูหลัก อยู่ที่เดียวกับ RM เลย <a href="https://forums.rpgmakerweb.com/index.php?categories/162/" target="_blank" rel="noopener" class="mycode_url">https://forums.rpgmakerweb.com/index.php...ories/162/</a> )<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">เริ่มต้นการใช้งาน</span></span></span><br />
<img src="https://i.imgur.com/jVZZP6L.png" loading="lazy"  alt="[Image: jVZZP6L.png]" class="mycode_img" /><br />
เมื่อเปิดโปรแกรมขึ้นมาจะพบกับหน้าจอหลัก สามารถกดเมนู file -&gt; new project เพื่อสร้างเกมได้เลย<br />
ในที่นี้จะขออธิบายเกี่ยวกับ template เริ่มต้นในการสร้างเกมซักนิด<br />
<br />
<span style="color: #339933;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Template เริ่มต้น</span></span></span><br />
<img src="https://i.imgur.com/yjeFrnV.png" loading="lazy"  alt="[Image: yjeFrnV.png]" class="mycode_img" /><br />
จากรูปด้านบนจะเห็นว่ามี 5 แบบ แต่หลักๆจะใช้กันอยู่ 4 แบบแรก ดังนี้<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">1.Empty Project</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เชี่ยวชาญ<br />
เป็น template ที่เหมาะกับผู้ที่เคยใช้ VNM มาก่อน และต้องการเริ่มโปรเจคแบบเป็นระเบียบระบบของตัวเอง<br />
template นี้จะมี UI หน้าจอต่างเป็น script ทั้งหมด และไม่มีทรัพยากรใดๆมาให้ ผู้ใช้ต้อง import เข้ามาเอง<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">2.Sample 720p (Action-based UI)</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เริ่มต้นจนถึงผู้เชี่ยวชาญ<br />
เป็น template ที่เหมาะกับผู้เริ่มต้นที่สุดแล้ว โดยจะมีทรัพยากรต่างๆมาใช้งานให้เลย<br />
อีกทั้งตัว UI หน้าจอต่างๆทำด้วย Action(ระบบ Event ใน VNM) ทั้งหมด ทำให้ผู้ใช้ปรับแต่งและเข้าใจได้ง่าย<br />
โดยมี UI หน้าจอตั้งชื่อตัวละคร และหน้าจอรับอินพุตตัวเลขมาให้ด้วย<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">3.Live2D Demo 720p</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เริ่มต้นจนถึงผู้เชี่ยวชาญ<br />
เป็น template ที่มีเฉพาะผู้ที่ซื้อ Live2D DLC เท่านั้น โดยจะมีตัวอย่างการใช้งาน Action ของ Live2D ให้<br />
แต่ตัว UI จะเป็น Script ทั้งหมด ถึงอย่างนั้นก็สามารถศึกษา Action จากตัวนี้แล้วเอาไปใช้ใน template ที่ 2 ก็ได้<br />
<br />
<span style="color: #3333ff;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">4.Sample 720p (Script-based UI)</span></span><br />
<span style="font-weight: bold;" class="mycode_b">ระดับ:</span> เหมาะกับผู้เริ่มต้นจนถึงผู้เชี่ยวชาญ<br />
เป็น template ที่เหมือนกับ template ที่ 2 แต่ต่างกันตรงที่ UI เขียนด้วย Script ทั้งหมด จึงเหมาะกับผู้ที่ต้องการศึกษาการเขียน Script หรือต้องการเริ่มโปรเจคโดยใช้ template เป็นฐาน<br />
<br />
สำหรับกระทู้นี้ ขอจบเพียงเท่านี้ก่อน เข้าใจว่าหลายๆคนไม่อยากอ่านกระทู้ที่ยาวมากๆเท่าไหร่<br />
ไว้เจอกันกระทู้หน้านะครับ สวัสดี <img src="http://i.imgur.com/e7K897X.png" alt="เอ้าดื่ม" title="เอ้าดื่ม" class="smilie smilie_143" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[เบื้องต้นของเอนจิ้น: Material - Common Nodes & Types]]></title>
			<link>https://irpg.in.th/thread-3092.html</link>
			<pubDate>Sat, 06 May 2017 12:08:15 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=1277">dreamknight</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3092.html</guid>
			<description><![CDATA[( ͡° ͜ʖ ͡°)<br />
<div style="text-align: center;" class="mycode_align"><img src="http://i.imgur.com/xpUGK14.png" loading="lazy"  alt="[Image: xpUGK14.png]" class="mycode_img" /></div>
<br />
<span style="font-family: Tahoma;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">บทความที่แล้ว: </span></span><a href="http://www.irpg.in.th/thread-3081.html" target="_blank" rel="noopener" class="mycode_url">http://www.irpg.in.th/thread-3081.html</a><br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Download Unreal Engine 4 Documentation:</span></span> <a href="https://drive.google.com/open?id=0BwdnMj4684J7Z3FuYTJHeUhaU0U" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=0BwdnMj...TJHeUhaU0U</a><br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Common Material Nodes</span></span> <br />
จากบทความที่แล้วเรื่องของ Material เราไปดูโหนดหรือฟังก์ชันที่มักถูกเรียกใช้จะอธิบายโหนดอื่นกันต่อเลย แต่สำหรับตัวอย่างที่ใช้ในอธิบายนั้นเป็นเพียงการแสดงให้เห็นการทำงานของโหนโดยพื้นฐานเท่านั้น ยังสามารถนำไปประยุกต์เองได้หลายวิธี<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Component Mask</span><br />
<br />
<img src="http://i.imgur.com/zk3MD0p.jpg" loading="lazy"  alt="[Image: zk3MD0p.jpg]" class="mycode_img" /><br />
<br />
โหนดที่เอาไว้ใช้ดึงที่จะกำหนดเลือกแสดงผลค่า RGBA (Red, Green, Blue, Alpha) จากอินพุตอย่างเช่นโหนด Vector ไปยัง Material ได้ ถ้าต้องการแสดงผลแค่ค่าสีเขียวจาก RGBA เราสามารถใช้ Mask นี้ได้ และยังสามารถตั้งค่าให้ Mask กำหนดชื่อ Parameter (ตัวแปร) เพื่อใช้อ้างอิงในการกำหนด Mask ใหม่ได้ด้วย โดยจากรูปภาพด้านบนคือการใช้ Mask ที่ดึงค่า Alpha เชื่อมกับ Opacity และอีกตัวดึงค่า RGB ต่อกับ Base Color <br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Linear interpolate (Lerp)</span><br />
<br />
<img src="http://i.imgur.com/vGUo8id.jpg" loading="lazy"  alt="[Image: vGUo8id.jpg]" class="mycode_img" /><br />
<br />
โหนดสำหรับผสมสีระหว่างสองสีโดยการกำหนด Alpha ถ้ามีค่าเป็น 1 จะใช้สีที่จุด B(สีฟ้า) ถ้ามีค่าเป็น 0 จะใช้สีที่จุด A(สีแดง) แต่ถ้าค่าเป็น 0.5 จะได้สีที่ผสมระหว่างสีแดงกับสีฟ้าคือสีม่วงนั่นเอง<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Power</span><br />
<br />
<img src="http://i.imgur.com/ZbFYsUT.jpg" loading="lazy"  alt="[Image: ZbFYsUT.jpg]" class="mycode_img" /><br />
<br />
สำหรับใช้เพิ่มระดับความเข้มของสี Constant ดังตัวอย่างที่เพิ่มความเข้มของสีแดงได้<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Desaturation</span><br />
<br />
<img src="http://i.imgur.com/2A2HLXr.jpg" loading="lazy"  alt="[Image: 2A2HLXr.jpg]" class="mycode_img" /><br />
<br />
สามารถปรับพื้นสีที่เชื่อมต่ออยู่ (สีฟ้าตามรูปภาพด้านบน) ให้กลายเป็นเทา โดยกำหนดค่าได้ที่ช่อง Fraction<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Fresnel</span><br />
<br />
<img src="http://i.imgur.com/fmrRgcX.jpg" loading="lazy"  alt="[Image: fmrRgcX.jpg]" class="mycode_img" /><br />
<br />
โหนดช่วยสร้างขอบแสงรอบวัตถุ ตามรูปภาพเราจะเห็นลูกทรงกลมสีแดงและตามขอบของทรงกลมเป็นสีฟ้า<br />
<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material Types</span></span><br />
ตอนนี้เรารู้ฟังก์ชันหรือโหนดพื้นฐานที่ใช้กับ Material กันไปบ้างแล้ว ทีนี้ไปดูความแตกต่างของแต่ละประเภท Material กันบ้าง ได้แก่ Material instances, Material functions, Material parameter collections และ Layered material <br />
<br />
<img src="http://i.imgur.com/5s0EdtX.jpg" loading="lazy"  alt="[Image: 5s0EdtX.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material Instances</span></span><br />
ใช้ในเปลี่ยนลักษณะของ Material ที่นอกเหนือฟังก์ชันที่ตั้งไว้ในตัวแม่แบบ ทำให้สามารถเปลี่ยนค่าต่างๆ ในแบบ Real time โดยไม่ต้องไปคอมไพล์ใหม่เลย ทั้งนี้ตัว Material instance นั้นยังถูกแบบออกเป็น 2 ประเภทอีกคือ <span style="font-weight: bold;" class="mycode_b">Material Instance Constant</span> และ <span style="font-weight: bold;" class="mycode_b">Material Instance Dynamic</span> ซึ่งจะมีเพียง Material Instance Constant เท่านั้นที่มี UI และสร้างไฟล์ที่หน้า content browser ได้ดังตัวอย่างภาพด้านบน<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material Instance User Interface</span></span><br />
<br />
<img src="http://i.imgur.com/T2cS4k5.jpg" loading="lazy"  alt="[Image: T2cS4k5.jpg]" class="mycode_img" /><br />
<br />
1. <span style="font-weight: bold;" class="mycode_b">Toolbar</span> มีเมนูต่างๆ ดังนี้<br />
Save: เซฟไฟล์ Material<br />
Find in CB: กดเพื่อค้นหาไฟล์นี้ในหน้า Content Browser <br />
Params: โชว์ตัวแปรทั้งหมดที่มาจากตัวแม่แบบของ Material<br />
Mobile Stats: ค่าของ Material สำหรับโทรศัพท์<br />
<br />
2. <span style="font-weight: bold;" class="mycode_b">Details</span> หน้าต่างแสดงตัวแปรทั้งหมดที่มาจาก Material และค่าต่างๆ ของ Material Instance <br />
3. <span style="font-weight: bold;" class="mycode_b">Instance parents</span> หน้าต่างที่ทำให้เห็น Instance ทั้งหมด และตัวแม่อบบของ Material <br />
4. <span style="font-weight: bold;" class="mycode_b">Viewport</span> หน้าโชว์ตัวอย่างรูปร่างเหมือนกับที่หน้า Material editor<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">การตั้งค่า Parameter ของ Material Instance Constant</span></span><br />
<br />
<img src="http://i.imgur.com/elq5Scc.jpg" loading="lazy"  alt="[Image: elq5Scc.jpg]" class="mycode_img" /><br />
<br />
<img src="http://i.imgur.com/KYolu10.jpg" loading="lazy"  alt="[Image: KYolu10.jpg]" class="mycode_img" /><br />
<br />
<br />
รูปภาพด้านบนคือวิธีการทำตัวแปร Parameter เพื่อใช้ใน Material Instance โดยกดคลิ๊กซ้ายที่โหนดแล้วกด <span style="font-weight: bold;" class="mycode_b">Convert to Parameter</span> จากนั้นที่หน้าต่าง Details จะมีให้กำหนดชื่อตัวแปร <span style="font-weight: bold;" class="mycode_b">Parameter Name</span> ซึ่งประเภทของตัวแปรมีอยู่ประมาณ 20 ประเภท โดยมีตัวแปรที่ใช้กันทั่วไป 3 ตัว คือ Scalar, Vector และ Texture<br />
<br />
<br />
<img src="http://i.imgur.com/JqA8feE.jpg" loading="lazy"  alt="[Image: JqA8feE.jpg]" class="mycode_img" /><br />
<br />
<br />
เพื่อที่จะเปลี่ยนค่าของ Parameter ได้นั้นต้องติ๊กถูกที่อยู่ข้างหน้าของแต่ล่ะตัวแปรเสียก่อนดังรูปด้านบน<br />
<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material functions</span></span><br />
ผู้ที่มีความรู้เรื่องการเขียนโปรแกรมหรือสร้างเกมกันมาบ้างจะเข้าใจการทำงานในเรื่องนี้ได้ไม่ยากว่าฟังก์ชันนั้นคืออะไร ฟังก์ชันคือส่วนของโปรแกรมที่ถูกเขียนขึ้นเพื่อทำหน้าที่เฉพาะของมัน ฟังก์ชันนั้นจะมีเป็นของตัวในภาษาเอง (UE ใช้ภาษา C++) และฟังก์ชันที่ผู้พัฒนา UE ได้สร้างเอาไว้ให้เราหยิบมาใช้งานอย่างเรื่องของ <span style="font-weight: bold;" class="mycode_b">Common Material Nodes</span> ที่เคยอธิบายไปจะมีการนำฟังก์ชันที่มีอยู่แล้วใน UE มาใช้สร้าง Material แต่คราวนี้เราสามารถสร้างฟังก์ชันที่ต้องการเพื่อเพิ่มปรับเปลี่ยนการทำงานของฟังก์ชันเองได้<br />
<br />
ฟังก์ชันทั่วไปที่เราใช้กันจะมีอยู่ 2 แบบคือฟังชั่นที่ส่งข้อมูลออกไปอย่างเดียว และฟังก์ชันที่มีการนำข้อมูลเข้ามาก่อนค่อยนำผลลัพธ์ส่งออกไป หากเราต้องการนำข้อมูลเข้ามายัง Material function เราจะต้องใช้โหนดที่เรียกว่า <span style="font-weight: bold;" class="mycode_b">FunctionInput</span> และถ้าเราต้องการส่งค่าที่ประมวลในฟังก์ชันเสร็จแล้วออกไปยังข้างนอก เราจะใช้โหนดที่เรียกว่า <span style="font-weight: bold;" class="mycode_b">FunctionOutput</span> ซึ่งในตัวฟังก์ชันที่เราเพิ่งสร้างไฟล์ขึ้นมาจะมีโหนด Output สร้างเอาไว้ให้อยู่แล้ว<br />
<br />
<img src="http://i.imgur.com/JX3EnjE.jpg" loading="lazy"  alt="[Image: JX3EnjE.jpg]" class="mycode_img" /><br />
<br />
<br />
UI ของ Material function ก็มีหน้าตาแบบเดียวกันกับหน้า Material แต่ที่หน้าต่าง <span style="font-weight: bold;" class="mycode_b">Details</span> จะมีส่วนให้เราตั้งค่าเอาใส่รายละเอียดของฟังก์ชัน อย่างเช่น <br />
<span style="font-weight: bold;" class="mycode_b">Description:</span> ถ้าเราใส่ข้อความเอาไว้ในช่องนี้ เราจะมองเห็นข้อความเมื่อเรานำเมาส์ไปชี้ที่โหนดฟังก์ชันตอนเราเอาไปใช้ใน Material แล้ว<br />
<span style="font-weight: bold;" class="mycode_b">Expose to Library:</span>  ถ้าติ๊กถูกเอาไว้ จะทำให้เรียกใช้ฟังก์ชันตัวนี้ได้ที่หน้า Material เมื่อเราคลิ๊กขวาในกราฟ<br />
<span style="font-weight: bold;" class="mycode_b">Library Categories:</span>  คือรายการกลุ่มของฟังก์ชัน ซึ่งเบื้องต้นจะเซ็ตเอาไว้ให้แล้วที่กลุ่ม Misc แต่เราสามารถเปลี่ยนไปอยู่กลุ่มอื่นหรือจะสร้างกลุ่มใหม่ก็ได้<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">ตัวอย่าง Material functions</span></span><br />
เราได้เข้าใจฟังก์ชันเบื้องต้นกันแล้ว ต่อไปจะมาแสดงตัวอย่างการสร้างฟังก์ชันและนำไปใช้ยัง Material เพื่อให้เข้าใจกันได้มากขึ้น โดยให้เราสร้างไฟล์ Material function ขึ้นมาตัวหนึ่งตั้งชื่อว่า <span style="font-weight: bold;" class="mycode_b">NormalMapAdjuster</span> แล้วสร้าง FunctionInput ขึ้นมา 2 ตัวคือ Texture และ Intensity เพื่อการข้อมูลเข้าประมวลผลในฟังก์ชัน <br />
<br />
<br />
<img src="http://i.imgur.com/qfgxJG5.jpg" loading="lazy"  alt="[Image: qfgxJG5.jpg]" class="mycode_img" /><br />
<br />
วิธีการสร้างนั้นจะต้องไปกดคลิ๊กขวาที่หน้ากราฟ แล้วพิมพ์หาด้วยคำว่า input จากนั้นกดเลือกที่ FunctionInput<br />
<br />
<br />
<br />
<img src="http://i.imgur.com/KhLjUXa.jpg" loading="lazy"  alt="[Image: KhLjUXa.jpg]" class="mycode_img" /><br />
<br />
จากนั้นกำหนดรายละเอียดของโหนดดังรูปภาพข้างบน<br />
<br />
<br />
<br />
<img src="http://i.imgur.com/Gwd0VrP.jpg" loading="lazy"  alt="[Image: Gwd0VrP.jpg]" class="mycode_img" /><br />
<br />
ให้เราสร้างโหนดให้เสร็จเรียบร้อยตามรูปภาพ เราจะมีส่วนของข้อมูลขาเข้าฟังก์ชันสองตัวคือ Texture และค่าตัวเลข Scalar จากกราฟจะเห็นว่าเป็นการเปิดปิดค่าของสีน้ำเงินให้แก่ Texture นั่นเอง โดยที่ค่าตัวแปรของ Intensity นั้นเราต้องการให้มีค่าอยู่ที่ระหว่าง 0 กับ 1 เท่านั้นด้วยใช้ Clamp หมายความว่าถ้าค่า Intensity เป็น 0 ค่าสีน้ำเงินใน Texture ยังแสดงผลอยู่ แต่ถ้าค่า Intensity เป็น 1 คือจะทำการปิดค่าสีน้ำเงินออกไปจาก Texture<br />
<br />
<br />
<br />
<img src="http://i.imgur.com/k8vck8A.jpg" loading="lazy"  alt="[Image: k8vck8A.jpg]" class="mycode_img" /><br />
<br />
ต่อมาคือการนำฟังก์ชันที่เราสร้างมาใช้ใน Material โดยการคลิ๊กขวาในหน้ากราฟแล้วพิมพ์หาชื่อฟังก์ชันที่เราตั้งเอาไว้ (NormalMapAdjuster) เชื่อมต่อกับโหนดต่างๆ ดังรูปภาพด้านบน จะเห็นว่าที่ NormalIntensity ได้ตั้งค่าตัวแปรเอาไว้ที่ 1 ทำให้สีน้ำเงินของ Texture ถูกตัดออกไปเหลือแต่ค่าสีแดงและสีเขียว จึงทำให้ Texture กลายเป็นสีเหลืองนั่นเอง<br />
<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Layered Material</span></span><br />
หากจะทำความเข้าใจกันแบบง่ายๆ เลย Layered Material ก็คือการตั้งค่าของ Material สำหรับใช้ใน Material ต่ออีกทีนั่นเอง โดยสร้างเอาไว้ในฟังก์ชันเพื่อให้ง่ายต่อการปรับเปลี่ยนหรือใช้งาน ซึ่งมีวิธีการสร้างดังต่อไปนี้<br />
<br />
<br />
<img src="http://i.imgur.com/SqEC67t.jpg" loading="lazy"  alt="[Image: SqEC67t.jpg]" class="mycode_img" /><br />
<br />
1. สร้างไฟล์ Material Function ขึ้นมาตั้งชื่อว่า MaterialLayerBlend <br />
2. สร้าง MakeMaterialAttributes เชื่อมต่อกับโหนด Output<br />
3. สร้างโหนด FunctionInput (Texture) และ Constant3Vector เชื่อมต่อกับ BaseColor<br />
4. สร้างตัวแปรกำหนดค่า Constant เชื่อมกับ Metallic และ Roughness ตามรูปภาพด้านบน<br />
<br />
<br />
<img src="http://i.imgur.com/3AoftIF.jpg" loading="lazy"  alt="[Image: 3AoftIF.jpg]" class="mycode_img" /><br />
<br />
ต่อมาคือการนำฟังก์ชันนั้นมาใช้โดยไปที่ไฟล์ Material เลือกเปลี่ยนโหนดของ Material ให้สามารถใช้ Attribute ได้โดยการติ๊กถูกที่ช่อง <span style="font-weight: bold;" class="mycode_b">Use Material Attributes</span> ดังรูปภาพ จากนั้นก็เชื่อมต่อโหนดฟังก์ชันเข้าไป โดยประโยชน์การใช้ Layer นี้คือเราสามารถเปลี่ยนค่าต่างๆ ของ Material ผ่านทางฟังก์ชันได้ทันทีโดยไม่ต้องเข้ามาแก้ไขตัว Material จริงนั่นเอง<br />
<br />
<br />
<br />
ตอนนี้เราน่าเข้าใจการสร้างกราฟของ Unreal Engine กันบ้างแล้ว บทความหน้าจะไปเจาะลึกเรื่อง Blueprints หรือกราฟที่เราใช้สร้างโหนดกันครับ<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">อ้างอิง</span></span><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://th.wikipedia.org/wiki/</a><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #0000CD;" class="mycode_color">แล้วพบกันใหม่ตอนหน้าครับ</span></span> <img src="http://i.imgur.com/svJQQqT.gif" alt="Derp" title="Derp" class="smilie smilie_40" /></span></span>]]></description>
			<content:encoded><![CDATA[( ͡° ͜ʖ ͡°)<br />
<div style="text-align: center;" class="mycode_align"><img src="http://i.imgur.com/xpUGK14.png" loading="lazy"  alt="[Image: xpUGK14.png]" class="mycode_img" /></div>
<br />
<span style="font-family: Tahoma;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">บทความที่แล้ว: </span></span><a href="http://www.irpg.in.th/thread-3081.html" target="_blank" rel="noopener" class="mycode_url">http://www.irpg.in.th/thread-3081.html</a><br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Download Unreal Engine 4 Documentation:</span></span> <a href="https://drive.google.com/open?id=0BwdnMj4684J7Z3FuYTJHeUhaU0U" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=0BwdnMj...TJHeUhaU0U</a><br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Common Material Nodes</span></span> <br />
จากบทความที่แล้วเรื่องของ Material เราไปดูโหนดหรือฟังก์ชันที่มักถูกเรียกใช้จะอธิบายโหนดอื่นกันต่อเลย แต่สำหรับตัวอย่างที่ใช้ในอธิบายนั้นเป็นเพียงการแสดงให้เห็นการทำงานของโหนโดยพื้นฐานเท่านั้น ยังสามารถนำไปประยุกต์เองได้หลายวิธี<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Component Mask</span><br />
<br />
<img src="http://i.imgur.com/zk3MD0p.jpg" loading="lazy"  alt="[Image: zk3MD0p.jpg]" class="mycode_img" /><br />
<br />
โหนดที่เอาไว้ใช้ดึงที่จะกำหนดเลือกแสดงผลค่า RGBA (Red, Green, Blue, Alpha) จากอินพุตอย่างเช่นโหนด Vector ไปยัง Material ได้ ถ้าต้องการแสดงผลแค่ค่าสีเขียวจาก RGBA เราสามารถใช้ Mask นี้ได้ และยังสามารถตั้งค่าให้ Mask กำหนดชื่อ Parameter (ตัวแปร) เพื่อใช้อ้างอิงในการกำหนด Mask ใหม่ได้ด้วย โดยจากรูปภาพด้านบนคือการใช้ Mask ที่ดึงค่า Alpha เชื่อมกับ Opacity และอีกตัวดึงค่า RGB ต่อกับ Base Color <br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Linear interpolate (Lerp)</span><br />
<br />
<img src="http://i.imgur.com/vGUo8id.jpg" loading="lazy"  alt="[Image: vGUo8id.jpg]" class="mycode_img" /><br />
<br />
โหนดสำหรับผสมสีระหว่างสองสีโดยการกำหนด Alpha ถ้ามีค่าเป็น 1 จะใช้สีที่จุด B(สีฟ้า) ถ้ามีค่าเป็น 0 จะใช้สีที่จุด A(สีแดง) แต่ถ้าค่าเป็น 0.5 จะได้สีที่ผสมระหว่างสีแดงกับสีฟ้าคือสีม่วงนั่นเอง<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Power</span><br />
<br />
<img src="http://i.imgur.com/ZbFYsUT.jpg" loading="lazy"  alt="[Image: ZbFYsUT.jpg]" class="mycode_img" /><br />
<br />
สำหรับใช้เพิ่มระดับความเข้มของสี Constant ดังตัวอย่างที่เพิ่มความเข้มของสีแดงได้<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Desaturation</span><br />
<br />
<img src="http://i.imgur.com/2A2HLXr.jpg" loading="lazy"  alt="[Image: 2A2HLXr.jpg]" class="mycode_img" /><br />
<br />
สามารถปรับพื้นสีที่เชื่อมต่ออยู่ (สีฟ้าตามรูปภาพด้านบน) ให้กลายเป็นเทา โดยกำหนดค่าได้ที่ช่อง Fraction<br />
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Fresnel</span><br />
<br />
<img src="http://i.imgur.com/fmrRgcX.jpg" loading="lazy"  alt="[Image: fmrRgcX.jpg]" class="mycode_img" /><br />
<br />
โหนดช่วยสร้างขอบแสงรอบวัตถุ ตามรูปภาพเราจะเห็นลูกทรงกลมสีแดงและตามขอบของทรงกลมเป็นสีฟ้า<br />
<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material Types</span></span><br />
ตอนนี้เรารู้ฟังก์ชันหรือโหนดพื้นฐานที่ใช้กับ Material กันไปบ้างแล้ว ทีนี้ไปดูความแตกต่างของแต่ละประเภท Material กันบ้าง ได้แก่ Material instances, Material functions, Material parameter collections และ Layered material <br />
<br />
<img src="http://i.imgur.com/5s0EdtX.jpg" loading="lazy"  alt="[Image: 5s0EdtX.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material Instances</span></span><br />
ใช้ในเปลี่ยนลักษณะของ Material ที่นอกเหนือฟังก์ชันที่ตั้งไว้ในตัวแม่แบบ ทำให้สามารถเปลี่ยนค่าต่างๆ ในแบบ Real time โดยไม่ต้องไปคอมไพล์ใหม่เลย ทั้งนี้ตัว Material instance นั้นยังถูกแบบออกเป็น 2 ประเภทอีกคือ <span style="font-weight: bold;" class="mycode_b">Material Instance Constant</span> และ <span style="font-weight: bold;" class="mycode_b">Material Instance Dynamic</span> ซึ่งจะมีเพียง Material Instance Constant เท่านั้นที่มี UI และสร้างไฟล์ที่หน้า content browser ได้ดังตัวอย่างภาพด้านบน<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material Instance User Interface</span></span><br />
<br />
<img src="http://i.imgur.com/T2cS4k5.jpg" loading="lazy"  alt="[Image: T2cS4k5.jpg]" class="mycode_img" /><br />
<br />
1. <span style="font-weight: bold;" class="mycode_b">Toolbar</span> มีเมนูต่างๆ ดังนี้<br />
Save: เซฟไฟล์ Material<br />
Find in CB: กดเพื่อค้นหาไฟล์นี้ในหน้า Content Browser <br />
Params: โชว์ตัวแปรทั้งหมดที่มาจากตัวแม่แบบของ Material<br />
Mobile Stats: ค่าของ Material สำหรับโทรศัพท์<br />
<br />
2. <span style="font-weight: bold;" class="mycode_b">Details</span> หน้าต่างแสดงตัวแปรทั้งหมดที่มาจาก Material และค่าต่างๆ ของ Material Instance <br />
3. <span style="font-weight: bold;" class="mycode_b">Instance parents</span> หน้าต่างที่ทำให้เห็น Instance ทั้งหมด และตัวแม่อบบของ Material <br />
4. <span style="font-weight: bold;" class="mycode_b">Viewport</span> หน้าโชว์ตัวอย่างรูปร่างเหมือนกับที่หน้า Material editor<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">การตั้งค่า Parameter ของ Material Instance Constant</span></span><br />
<br />
<img src="http://i.imgur.com/elq5Scc.jpg" loading="lazy"  alt="[Image: elq5Scc.jpg]" class="mycode_img" /><br />
<br />
<img src="http://i.imgur.com/KYolu10.jpg" loading="lazy"  alt="[Image: KYolu10.jpg]" class="mycode_img" /><br />
<br />
<br />
รูปภาพด้านบนคือวิธีการทำตัวแปร Parameter เพื่อใช้ใน Material Instance โดยกดคลิ๊กซ้ายที่โหนดแล้วกด <span style="font-weight: bold;" class="mycode_b">Convert to Parameter</span> จากนั้นที่หน้าต่าง Details จะมีให้กำหนดชื่อตัวแปร <span style="font-weight: bold;" class="mycode_b">Parameter Name</span> ซึ่งประเภทของตัวแปรมีอยู่ประมาณ 20 ประเภท โดยมีตัวแปรที่ใช้กันทั่วไป 3 ตัว คือ Scalar, Vector และ Texture<br />
<br />
<br />
<img src="http://i.imgur.com/JqA8feE.jpg" loading="lazy"  alt="[Image: JqA8feE.jpg]" class="mycode_img" /><br />
<br />
<br />
เพื่อที่จะเปลี่ยนค่าของ Parameter ได้นั้นต้องติ๊กถูกที่อยู่ข้างหน้าของแต่ล่ะตัวแปรเสียก่อนดังรูปด้านบน<br />
<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material functions</span></span><br />
ผู้ที่มีความรู้เรื่องการเขียนโปรแกรมหรือสร้างเกมกันมาบ้างจะเข้าใจการทำงานในเรื่องนี้ได้ไม่ยากว่าฟังก์ชันนั้นคืออะไร ฟังก์ชันคือส่วนของโปรแกรมที่ถูกเขียนขึ้นเพื่อทำหน้าที่เฉพาะของมัน ฟังก์ชันนั้นจะมีเป็นของตัวในภาษาเอง (UE ใช้ภาษา C++) และฟังก์ชันที่ผู้พัฒนา UE ได้สร้างเอาไว้ให้เราหยิบมาใช้งานอย่างเรื่องของ <span style="font-weight: bold;" class="mycode_b">Common Material Nodes</span> ที่เคยอธิบายไปจะมีการนำฟังก์ชันที่มีอยู่แล้วใน UE มาใช้สร้าง Material แต่คราวนี้เราสามารถสร้างฟังก์ชันที่ต้องการเพื่อเพิ่มปรับเปลี่ยนการทำงานของฟังก์ชันเองได้<br />
<br />
ฟังก์ชันทั่วไปที่เราใช้กันจะมีอยู่ 2 แบบคือฟังชั่นที่ส่งข้อมูลออกไปอย่างเดียว และฟังก์ชันที่มีการนำข้อมูลเข้ามาก่อนค่อยนำผลลัพธ์ส่งออกไป หากเราต้องการนำข้อมูลเข้ามายัง Material function เราจะต้องใช้โหนดที่เรียกว่า <span style="font-weight: bold;" class="mycode_b">FunctionInput</span> และถ้าเราต้องการส่งค่าที่ประมวลในฟังก์ชันเสร็จแล้วออกไปยังข้างนอก เราจะใช้โหนดที่เรียกว่า <span style="font-weight: bold;" class="mycode_b">FunctionOutput</span> ซึ่งในตัวฟังก์ชันที่เราเพิ่งสร้างไฟล์ขึ้นมาจะมีโหนด Output สร้างเอาไว้ให้อยู่แล้ว<br />
<br />
<img src="http://i.imgur.com/JX3EnjE.jpg" loading="lazy"  alt="[Image: JX3EnjE.jpg]" class="mycode_img" /><br />
<br />
<br />
UI ของ Material function ก็มีหน้าตาแบบเดียวกันกับหน้า Material แต่ที่หน้าต่าง <span style="font-weight: bold;" class="mycode_b">Details</span> จะมีส่วนให้เราตั้งค่าเอาใส่รายละเอียดของฟังก์ชัน อย่างเช่น <br />
<span style="font-weight: bold;" class="mycode_b">Description:</span> ถ้าเราใส่ข้อความเอาไว้ในช่องนี้ เราจะมองเห็นข้อความเมื่อเรานำเมาส์ไปชี้ที่โหนดฟังก์ชันตอนเราเอาไปใช้ใน Material แล้ว<br />
<span style="font-weight: bold;" class="mycode_b">Expose to Library:</span>  ถ้าติ๊กถูกเอาไว้ จะทำให้เรียกใช้ฟังก์ชันตัวนี้ได้ที่หน้า Material เมื่อเราคลิ๊กขวาในกราฟ<br />
<span style="font-weight: bold;" class="mycode_b">Library Categories:</span>  คือรายการกลุ่มของฟังก์ชัน ซึ่งเบื้องต้นจะเซ็ตเอาไว้ให้แล้วที่กลุ่ม Misc แต่เราสามารถเปลี่ยนไปอยู่กลุ่มอื่นหรือจะสร้างกลุ่มใหม่ก็ได้<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">ตัวอย่าง Material functions</span></span><br />
เราได้เข้าใจฟังก์ชันเบื้องต้นกันแล้ว ต่อไปจะมาแสดงตัวอย่างการสร้างฟังก์ชันและนำไปใช้ยัง Material เพื่อให้เข้าใจกันได้มากขึ้น โดยให้เราสร้างไฟล์ Material function ขึ้นมาตัวหนึ่งตั้งชื่อว่า <span style="font-weight: bold;" class="mycode_b">NormalMapAdjuster</span> แล้วสร้าง FunctionInput ขึ้นมา 2 ตัวคือ Texture และ Intensity เพื่อการข้อมูลเข้าประมวลผลในฟังก์ชัน <br />
<br />
<br />
<img src="http://i.imgur.com/qfgxJG5.jpg" loading="lazy"  alt="[Image: qfgxJG5.jpg]" class="mycode_img" /><br />
<br />
วิธีการสร้างนั้นจะต้องไปกดคลิ๊กขวาที่หน้ากราฟ แล้วพิมพ์หาด้วยคำว่า input จากนั้นกดเลือกที่ FunctionInput<br />
<br />
<br />
<br />
<img src="http://i.imgur.com/KhLjUXa.jpg" loading="lazy"  alt="[Image: KhLjUXa.jpg]" class="mycode_img" /><br />
<br />
จากนั้นกำหนดรายละเอียดของโหนดดังรูปภาพข้างบน<br />
<br />
<br />
<br />
<img src="http://i.imgur.com/Gwd0VrP.jpg" loading="lazy"  alt="[Image: Gwd0VrP.jpg]" class="mycode_img" /><br />
<br />
ให้เราสร้างโหนดให้เสร็จเรียบร้อยตามรูปภาพ เราจะมีส่วนของข้อมูลขาเข้าฟังก์ชันสองตัวคือ Texture และค่าตัวเลข Scalar จากกราฟจะเห็นว่าเป็นการเปิดปิดค่าของสีน้ำเงินให้แก่ Texture นั่นเอง โดยที่ค่าตัวแปรของ Intensity นั้นเราต้องการให้มีค่าอยู่ที่ระหว่าง 0 กับ 1 เท่านั้นด้วยใช้ Clamp หมายความว่าถ้าค่า Intensity เป็น 0 ค่าสีน้ำเงินใน Texture ยังแสดงผลอยู่ แต่ถ้าค่า Intensity เป็น 1 คือจะทำการปิดค่าสีน้ำเงินออกไปจาก Texture<br />
<br />
<br />
<br />
<img src="http://i.imgur.com/k8vck8A.jpg" loading="lazy"  alt="[Image: k8vck8A.jpg]" class="mycode_img" /><br />
<br />
ต่อมาคือการนำฟังก์ชันที่เราสร้างมาใช้ใน Material โดยการคลิ๊กขวาในหน้ากราฟแล้วพิมพ์หาชื่อฟังก์ชันที่เราตั้งเอาไว้ (NormalMapAdjuster) เชื่อมต่อกับโหนดต่างๆ ดังรูปภาพด้านบน จะเห็นว่าที่ NormalIntensity ได้ตั้งค่าตัวแปรเอาไว้ที่ 1 ทำให้สีน้ำเงินของ Texture ถูกตัดออกไปเหลือแต่ค่าสีแดงและสีเขียว จึงทำให้ Texture กลายเป็นสีเหลืองนั่นเอง<br />
<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Layered Material</span></span><br />
หากจะทำความเข้าใจกันแบบง่ายๆ เลย Layered Material ก็คือการตั้งค่าของ Material สำหรับใช้ใน Material ต่ออีกทีนั่นเอง โดยสร้างเอาไว้ในฟังก์ชันเพื่อให้ง่ายต่อการปรับเปลี่ยนหรือใช้งาน ซึ่งมีวิธีการสร้างดังต่อไปนี้<br />
<br />
<br />
<img src="http://i.imgur.com/SqEC67t.jpg" loading="lazy"  alt="[Image: SqEC67t.jpg]" class="mycode_img" /><br />
<br />
1. สร้างไฟล์ Material Function ขึ้นมาตั้งชื่อว่า MaterialLayerBlend <br />
2. สร้าง MakeMaterialAttributes เชื่อมต่อกับโหนด Output<br />
3. สร้างโหนด FunctionInput (Texture) และ Constant3Vector เชื่อมต่อกับ BaseColor<br />
4. สร้างตัวแปรกำหนดค่า Constant เชื่อมกับ Metallic และ Roughness ตามรูปภาพด้านบน<br />
<br />
<br />
<img src="http://i.imgur.com/3AoftIF.jpg" loading="lazy"  alt="[Image: 3AoftIF.jpg]" class="mycode_img" /><br />
<br />
ต่อมาคือการนำฟังก์ชันนั้นมาใช้โดยไปที่ไฟล์ Material เลือกเปลี่ยนโหนดของ Material ให้สามารถใช้ Attribute ได้โดยการติ๊กถูกที่ช่อง <span style="font-weight: bold;" class="mycode_b">Use Material Attributes</span> ดังรูปภาพ จากนั้นก็เชื่อมต่อโหนดฟังก์ชันเข้าไป โดยประโยชน์การใช้ Layer นี้คือเราสามารถเปลี่ยนค่าต่างๆ ของ Material ผ่านทางฟังก์ชันได้ทันทีโดยไม่ต้องเข้ามาแก้ไขตัว Material จริงนั่นเอง<br />
<br />
<br />
<br />
ตอนนี้เราน่าเข้าใจการสร้างกราฟของ Unreal Engine กันบ้างแล้ว บทความหน้าจะไปเจาะลึกเรื่อง Blueprints หรือกราฟที่เราใช้สร้างโหนดกันครับ<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">อ้างอิง</span></span><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://th.wikipedia.org/wiki/</a><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #0000CD;" class="mycode_color">แล้วพบกันใหม่ตอนหน้าครับ</span></span> <img src="http://i.imgur.com/svJQQqT.gif" alt="Derp" title="Derp" class="smilie smilie_40" /></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[เบื้องต้นของเอนจิ้น: LOD, Collision, Materials]]></title>
			<link>https://irpg.in.th/thread-3081.html</link>
			<pubDate>Sat, 22 Apr 2017 20:54:28 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=1277">dreamknight</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3081.html</guid>
			<description><![CDATA[( ͡° ͜ʖ ͡°)<br />
<div style="text-align: center;" class="mycode_align"><img src="http://i.imgur.com/xpUGK14.png" loading="lazy"  alt="[Image: xpUGK14.png]" class="mycode_img" /></div>
<br />
<span style="font-family: Tahoma;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">บทความที่แล้ว: </span></span><a href="http://irpg.in.th/thread-3071.html" target="_blank" rel="noopener" class="mycode_url">http://irpg.in.th/thread-3071.html</a><br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Level of Detail (LOD)</span></span> <br />
เพื่อไม่ให้ตัวเกมประมวลผลหนักเกินไป เราต้องการที่จะให้วัตถุหรือ Mesh ที่ผู้เล่นสามารถมองเห็นได้ภายในฉากเกม มีรายละเอียดของวัตถุที่น้อยเมื่อ Mesh อยู่ห่างไกลจากตัวผู้เล่น แต่เมื่อเวลาผู้เล่นเข้าไปอยู่ใกล้วัตถุหรือ Mesh ดังกล่าว เราต้องการให้ผู้เล่นเห็น Mesh นั้นได้อย่างละเอียดชัดที่สุด ในโปรแกรม UE นั้น เราสามารถทำให้ Mesh ภายในฉากสลับเปลี่ยนความละเอียดน้อยเมื่อตัวผู้เล่นอยู่ห่างไกลออกมา และเปลี่ยนเป็นความละเอียดสูงได้เมื่อผู้เลนเข้ามาอยู่ใกล้ Mesh เราจะทำวิธีการนี้ได้จากการใช้ <span style="font-weight: bold;" class="mycode_b">Level of Detail หรือ LOD</span> นั่นเอง โดยต่อไปนี้จะแสดงเป็นตัวอย่างให้เข้าใจได้ง่ายกันครับ<br />
<br />
<img src="http://i.imgur.com/YjIrbGT.jpg" loading="lazy"  alt="[Image: YjIrbGT.jpg]" class="mycode_img" /><br />
<br />
<br />
จากบทความที่แล้ว ที่ได้นำโมเดลบ้านเข้ามาในโปรเจคต์เกมของเราซึ่งมีรายละเอียดดังรูปภาพด้านบน เราจะเห็น LOD0 อยู่ทางด้านขวาหรือในหน้าต่าง Details มี Element ที่ใส่ Material เอาไว้อยู่ 2 ตัวคือผิวไม้กับผิวสีแดง LOD0 นั้นเป็น LOD หลักของ Mesh โดยต่อมาเราจะเพิ่ม LOD เข้าไปอีก 1 ตัว โดยไปที่หน้า Details &gt; LOD Settings &gt; LOD Import กดเลือก <span style="font-weight: bold;" class="mycode_b">Import LOD Level 1</span><br />
<br />
<img src="http://i.imgur.com/Km6sOX7.jpg" loading="lazy"  alt="[Image: Km6sOX7.jpg]" class="mycode_img" /><br />
<br />
<br />
แล้วก็จะได้ LOD1 มาดังภาพด้านบน เราจะเห็น Screen Size ของแต่ละ LOD นั้นมีค่าไม่เท่ากัน มันหมายความว่า LOD0 จะแสดงผลเมื่อ Mesh ดังกล่าวอยู่ในระยะการมองเห็นมากกว่า 50% และ LOD1 จะแสดงผลเมื่อ Mesh ดังกล่าวอยู่ในระยะการมองเห็นน้อยกว่า 50% ลงไป ตัวอย่างเช่นหาก Mesh มีอยู่ LOD อยู่ 3 ตัว โปรแกรมก็จะเฉลี่ยเปอร์เซ็นต์ให้ทั้ง 3 ตัวโดยอัตโนมัติ ที่นี้ผมได้ทำการเปลี่ยน <span style="font-weight: bold;" class="mycode_b">Element 0 ของ LOD1</span> เป็นพื้นผิวสีฟ้าอ่อน เพื่อแสดงให้เห็นความแตกต่างของ Mesh เวลาแสดงผลได้ง่ายขึ้น <br />
<br />
<span style="font-weight: bold;" class="mycode_b">LOD ระยะใกล้</span><br />
<br />
<img src="http://i.imgur.com/oivR5so.jpg" loading="lazy"  alt="[Image: oivR5so.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">LOD ระยะไกล</span><br />
<br />
<img src="http://i.imgur.com/WxNSHIU.jpg" loading="lazy"  alt="[Image: WxNSHIU.jpg]" class="mycode_img" /><br />
<br />
<br />
จากรูปภาพทั้ง 2 ด้านบน จะเห็นว่าเมื่อเข้าไปอยู่ใกล้โมเดลบ้านแล้วจะเห็นเป็นผิวไม้ และภาพที่ 2 เมื่ออยู่ออกห่างจากโมเดลบ้านไปได้ระยะหนึ่งเราจะเป็นพื้นผิวกลายเป็นสีฟ้าทันที อย่างไรก็ตามถ้าเราไม่ต้องการให้โปรแกรมเฉลี่ยระยะของ Screen Size เอง เราสามารถกดติ๊กถูกที่ <span style="font-weight: bold;" class="mycode_b">Auto Compute LOD Distances</span> ออกไปแล้วไปแก้ไขเอาเองได้ที่ช่อง Screen Size ของแต่ละ LOD<br />
<br />
<span style="font-weight: bold;" class="mycode_b">หมายเหตุ:</span> หากต้องการลบ LOD ออกจะต้องทำได้ด้วย UE ในเวอร์ชั่น 4.15 หรือสูงกว่าเท่านั้น และไม่สามารถลบที่เป็น LOD0 ออกได้ <br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Collision</span></span><br />
ในทุกวัตถุภายใน UE นั้นจะมีสิ่งที่เรียกว่า Collision อยู่รอบ Mesh เพื่อเอาไว้ควบคุมวัตถุนั้นๆ ให้มีฟิสิกส์อยู่ในตัว เช่น การสัมผัสกันระหว่างวัตถุ การชน การกระเด็น โดยโปรแกรมจะกำหนดทุก Mesh ให้มีการ Collision Enabled เอาไว้อยู่แล้ว ซึ่งต่อไปจะแสดงตัวอย่างโดยมี 2 วัตถุ ที่ใช้แสดง Collision กัน<br />
<br />
<img src="http://i.imgur.com/QRwOLSi.jpg" loading="lazy"  alt="[Image: QRwOLSi.jpg]" class="mycode_img" /><br />
<br />
<br />
จากภาพคือวัตถุทรงกลมที่เป็นลูกบอลสีฟ้าและสี่เหลี่ยมที่เป็นเหมือนกำแพงโดยมี Object Type ที่แตกต่างกัน ถ้าเราต้องการให้ลูกบอลไปชนกับกำแพงได้ จะต้องตั้งค่า Collision Setup ให้เป็นให้ <span style="font-weight: bold;" class="mycode_b">Block</span> ที่หน้าต่าง Details ของ Mesh ทั้งสองฝ่ายตามรูปด้านล่าง<br />
<br />
<br />
<img src="http://i.imgur.com/brant3r.jpg" loading="lazy"  alt="[Image: brant3r.jpg]" class="mycode_img" /><br />
<br />
<img src="http://i.imgur.com/KGb1V7G.jpg" loading="lazy"  alt="[Image: KGb1V7G.jpg]" class="mycode_img" /><br />
<br />
จากภาพด้านบนเมื่อทดสอบรันโปรแกรมลูกบอลจะเข้าไปชนกับกำแพงได้โดยไม่ทะลุผ่านกำแพงออกไป <br />
(เราสามารถสร้าง Event สำหรับการ Collision นี้ได้ถ้าเราทำวัตถุนี้เป็น Blueprint โดยการติ๊กถูกที่ช่อง Simulation Generates Hit Events)  <br />
<br />
<br />
<img src="http://i.imgur.com/diRauj7.jpg" loading="lazy"  alt="[Image: diRauj7.jpg]" class="mycode_img" /><br />
<br />
ถ้าเราปรับ Collision Setup ให้เป็น <span style="font-weight: bold;" class="mycode_b">Ignore</span> จะทำให้ลูกบอลที่เข้าไปชนกำแพงทะลุผ่านออกไปยังอีกด้านหนึ่งเลย<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Materials</span></span><br />
UE นั้นสามารถนำ Material และ Texture เข้ามาใช้กับ Mesh ใดๆ ที่นำเข้ามาจากโปรแกรม Digital Content Creation อย่างเช่น 3ds Max ได้ดังที่เคยแสดงเป็นตัวอย่างเอาไว้ในบทความที่แล้ว (Importing Assets) หมายความว่า <span style="font-weight: bold;" class="mycode_b">Material</span> ใน UE คือสิ่งที่ใช้กำหนดตัวพิ้นผิวหน้าตาของ Mesh โดยการใส่รูปภาพ (Textures) ได้แก่ สี ความมันวาว ความขุรขระ และยังสามารถทำให้วัตถุเคลื่อนไหวโดยการจัดการกับ Vertices ซึ่งในหลักแล้วเราจะใช้ Material กันกับ Mesh เท่านั้น แต่อันที่จริงแล้วมันยังนำไปใช้กับ Decals, Post process และ Light functions อีกด้วย (จะยังไม่กล่าวถึงในบทความนี้)<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">วิธีการสร้าง Material</span></span><br />
วิธีการสร้าง Material ใน UE นั้นก็ทำได้ง่ายมากเพียงแค่กดคลิ๊กขวาที่หน้า Content Browser กดเลือก Material แล้วตั้งชื่อให้มันแค่นี้เราก็ได้ไฟล์ Material มาแล้วครับ<br />
<br />
<img src="http://i.imgur.com/ekOCEZe.jpg" loading="lazy"  alt="[Image: ekOCEZe.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material user interface</span></span><br />
ตอนนี้เราพอจะรู้กันไปบ้างแล้วว่า Material คืออะไร ทีนี้เปิดเข้าไปดูข้างในไฟล์ Material กันว่ามี user interface อะไรกันบ้าง<br />
<br />
<img src="http://i.imgur.com/CdSwKed.jpg" loading="lazy"  alt="[Image: CdSwKed.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Toolbar</span> ตัวปุ่มต่างๆ ที่ใช้ช่วยดูตัว Material นี้ ได้แก่ <br />
Save – สำหรับบันทึกไฟล์เมื่อเราไปแก้ไขตัว Material<br />
Find in CB – ใช้ค้นหาไฟล์ Material ที่เปิดอยู่นี้ว่าอยู่ที่ไหนใน Content Browser <br />
Apply – ยืนยันการแก้ไข Material เพื่อให้แสดงผลลัพธ์การเปลี่ยนแปลง แต่ไฟล์จะยังไปถูกบันทึก<br />
Search – สำหรับพิมพ์เพื่อค้นหาคำภายใน Material<br />
Home – เมื่อกดแล้วโปรแกรมจะเลื่อนไปหาโหนดที่เป็นตัวหลักของ Material<br />
Clean Up – จะทำการลบโหนดที่ไม่ถูกเชื่อมโยงกับโหนดหลักออกไป<br />
Connectors – แสดงหรือซ่อนส่วนที่ไม่ได้เชื่อมโยง pin ของโหนดหลัก<br />
Live Preview – โชว์การแสดงผลหน้าตาของ Material ให้เห็นแบบ real-time<br />
Live Nodes – อัปเดตโหนดต่างๆ แบบ real-time<br />
Live Update – มีการอัปเดต Shader สำหรับทุกโหนดใน Material<br />
Stats – โชว์ข้อมูลของ Material ว่ามี Texture และ Shader เท่าไหร่ รวมถึงข้อมูลที่ Errors ด้วย<br />
Mobile Stats – เหมือนกันกับ Stats แต่เอาไว้ใช้กับโทรศัพท์<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Preview panel</span> หน้าต่างเอาไว้โชว์หน้าตาตัวอย่างของ Material เมื่อเราทำการสร้างและเชื่อมต่อโหนดอื่นๆ เข้ากันกับโหนดหลัก หรือสามารถแสดงตัวอย่างของโหนดใดๆ ได้ด้วยการกดคลิ๊กขวาที่โหนดนั้นแล้วเลือก Start Previewing Node <br />
<br />
<img src="http://i.imgur.com/QnF4GJ3.jpg" loading="lazy"  alt="[Image: QnF4GJ3.jpg]" class="mycode_img" /><br />
<br />
<br />
หน้าต่างนี้สามารถควบคุมได้ดังนี้<br />
Rotate – คลิ๊กซ้ายเพื่อลากดูตัวอย่าง<br />
Pan – คลิ๊กปุ่มกลางเมาส์เพื่อขยับตัวอย่าง<br />
Zoom – คลิ๊กขวาเพื่อใช้ย่อขยายขนาดของตัวอย่าง<br />
Update Light – กดปุ่ม L ค้างแล้วคลิ๊กซ้ายลากเพื่อปรับแสงสว่างของตัวอย่าง<br />
<br />
ที่มุมขวาล่างของหน้าต่างนั้นให้เราสามารถเปลี่ยนรูปทรงของตัวอย่างที่แสดงได้ ซึ่งจากภาพด้านบนจะให้รูปทรงพื้นฐานมี 4 แบบ คือรูปทรงกระบอก ทรงกลม ทรงสี่เหลี่ยมแบน และทรงสี่เหลี่ยม ส่วนที่เป็นรูปกาน้ำเอาไว้แสดงตัวอย่างด้วย Mesh ที่เราต้องการจะดู โดยให้ไปเลือก Mesh ที่หน้า Content Browser เอาไว้ก่อนแล้วค่อยกลับมากด<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Details panel</span> หน้าต่างสำหรับแสดงรายละเอียดต่างๆ ที่เราสามารถปรับแก้ไขได้ เมื่อเราเลือกโหนดที่อยู่ในกราฟ ถ้าไปยังไม่ได้กดเลือกโหนดใดๆ ทางโปรแกรมจะแสดงข้อมูลของโหนดหลักของ Material ขึ้นมาให้เห็นเอง ส่วนข้อมูลเพิ่มเติมที่เกี่ยวกับรายละเอียดต่างๆ นั้น ให้เข้าไปดูเอาในรายละเอียดของ Material ได้ที่ <a href="https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/MaterialProperties/index.html" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/latest/INT...index.html</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Graph panel</span> เรียกได้ว่าเป็นหน้าต่างหลักของที่นี้เลยก็ว่าได้ เราสามารถสร้างโหนดทั้งหมดได้ที่หน้านี้เพื่อกำหนดว่าจะให้ Material มีหน้าต่างออกมาเป็นอย่างไร โดยเริ่มต้นจากที่เราทำการสร้างไฟล์ Material ขึ้นมา ภายในหน้าต่างเราจะเห็นโหนดอยู่ตัวหนึ่งซึ่งเป็นโหนดหลักของมันนั่นเอง ซึ่งจะไม่สามารถลบโหนดตัวนี้ออกไปได้ ส่วนบาง inputs ที่สีตัวอักษรเป็นสีเทานั่นคือไม่สามารถใช้ได้ หากต้องการใช้ให้ลองเปลี่ยน Blend mode ที่หน้า Details panel ดูเอา <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Palette panel</span> หน้าต่างแสดงรายการทั้งหมดของกราฟโหนดและฟังก์ชั่นสำหรับ Material เราสามารถเลือกค้นหาแล้วกดลากใส่ลงในหน้ากราฟได้เลย<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Common Material Nodes</span></span><br />
ในการสร้าง Material ขึ้นมานั้นเราจำเป็นจะต้องเข้าใจฟังก์ชั่นต่างๆ ที่ใช้เข้ามาเชื่อมกับโหนดหลักของ Material ซึ่งจะขอเสนอโหนดหรือฟังก์ชั่นทั่วไปที่มักถูกใช้ในการสร้าง Material เป็นส่วนใหญ่<br />
<br />
<span style="font-weight: bold;" class="mycode_b">วิธีการสร้าง Nodes</span><br />
ก่อนที่จะไปรู้เรื่องฟังก์ชั่นที่ใช้กันใน Material เรามีวิธีในการสร้างโหนดหรือฟังก์ชั่นเพิ่มเข้าไปในกราฟโหนดอยู่ดังต่อไปนี้<br />
1. หาเอาจากหน้าต่าง Palette panel แล้วคลิ๊กลากลงไปในกราฟเลย<br />
2. คลิ๊กขวาในพื้นที่ว่างของกราฟแล้วเลือกหาฟังก์ชั่นที่ต้องการ<br />
3. คลิ๊กซ้ายที่ปุ่ม exec ของโหนดแล้วลากออกมาในพื้นที่ว่างของกราฟ ซึ่งจะเป็นการเชื่อมโหนดไปในตัวเลย<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Texture sample</span><br />
<br />
<img src="http://i.imgur.com/LBf82H6.jpg" loading="lazy"  alt="[Image: LBf82H6.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นกำหนด Texture ให้กับ Material โดยการเลือกไฟล์ Texture ที่อยู่ในโปรเจ็คต์ใส่ไปในโหนดนี้ได้ที่หน้าต่าง Details ดังรูปภาพด้านบน<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Constant</span><br />
<br />
<img src="http://i.imgur.com/zwzMvgQ.jpg" loading="lazy"  alt="[Image: zwzMvgQ.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นที่ใช้ในการกำหนดค่าความสว่างของ Texture โดยการใส่ตัวเลขเป็นเปอร์เซ็นต์ลงไปในช่อง Value ของโหนด (1 คือ 100%)<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Multiply</span> - โหนดที่ใช้สำหรับรวม 2 ฟังก์ชั่นให้ทำงานรวมกัน<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Constant 3Vector</span><br />
<br />
<img src="http://i.imgur.com/RnA0sDM.jpg" loading="lazy"  alt="[Image: RnA0sDM.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นที่ใช้ในการเปลี่ยนสีของ Texture ใหม่โดยการกำหนดสีที่ต้องการได้ที่ช่อง Constant ของโหนด<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Add</span><br />
<br />
<img src="http://i.imgur.com/mHuqIxK.jpg" loading="lazy"  alt="[Image: mHuqIxK.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นคณิตศาสตร์ เอาไว้ใช้บวกเพิ่มค่าต่างๆ ที่เป็นตัวเลขระหว่างฟังก์ชั่นทั้งสอง โดยจากตัวอย่างภาพด้านบนเป็นการรวมค่า Vector สีทั้ง 2 ตัวรวมกัน<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Divide</span> – ฟังก์ชั่นคณิตศาสตร์ สำหรับใช้หารค่าระหว่างสองค่า<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Subtract</span> – ฟังก์ชั่นคณิตศาสตร์ สำหรับใช้ลบค่าระหว่างสองค่า<br />
<br />
<br />
ยังมีอีกหลายฟังก์ชั่นที่มักถูกเรียกใช้ในการสร้าง Material แต่ขอเอาไว้ต่อไปในบทความหน้านะครับ<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">อ้างอิง</span></span><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://th.wikipedia.org/wiki/</a><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #0000CD;" class="mycode_color">แล้วพบกันใหม่ตอนหน้าครับ</span></span> <img src="http://i.imgur.com/svJQQqT.gif" alt="Derp" title="Derp" class="smilie smilie_40" /></span></span>]]></description>
			<content:encoded><![CDATA[( ͡° ͜ʖ ͡°)<br />
<div style="text-align: center;" class="mycode_align"><img src="http://i.imgur.com/xpUGK14.png" loading="lazy"  alt="[Image: xpUGK14.png]" class="mycode_img" /></div>
<br />
<span style="font-family: Tahoma;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">บทความที่แล้ว: </span></span><a href="http://irpg.in.th/thread-3071.html" target="_blank" rel="noopener" class="mycode_url">http://irpg.in.th/thread-3071.html</a><br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Level of Detail (LOD)</span></span> <br />
เพื่อไม่ให้ตัวเกมประมวลผลหนักเกินไป เราต้องการที่จะให้วัตถุหรือ Mesh ที่ผู้เล่นสามารถมองเห็นได้ภายในฉากเกม มีรายละเอียดของวัตถุที่น้อยเมื่อ Mesh อยู่ห่างไกลจากตัวผู้เล่น แต่เมื่อเวลาผู้เล่นเข้าไปอยู่ใกล้วัตถุหรือ Mesh ดังกล่าว เราต้องการให้ผู้เล่นเห็น Mesh นั้นได้อย่างละเอียดชัดที่สุด ในโปรแกรม UE นั้น เราสามารถทำให้ Mesh ภายในฉากสลับเปลี่ยนความละเอียดน้อยเมื่อตัวผู้เล่นอยู่ห่างไกลออกมา และเปลี่ยนเป็นความละเอียดสูงได้เมื่อผู้เลนเข้ามาอยู่ใกล้ Mesh เราจะทำวิธีการนี้ได้จากการใช้ <span style="font-weight: bold;" class="mycode_b">Level of Detail หรือ LOD</span> นั่นเอง โดยต่อไปนี้จะแสดงเป็นตัวอย่างให้เข้าใจได้ง่ายกันครับ<br />
<br />
<img src="http://i.imgur.com/YjIrbGT.jpg" loading="lazy"  alt="[Image: YjIrbGT.jpg]" class="mycode_img" /><br />
<br />
<br />
จากบทความที่แล้ว ที่ได้นำโมเดลบ้านเข้ามาในโปรเจคต์เกมของเราซึ่งมีรายละเอียดดังรูปภาพด้านบน เราจะเห็น LOD0 อยู่ทางด้านขวาหรือในหน้าต่าง Details มี Element ที่ใส่ Material เอาไว้อยู่ 2 ตัวคือผิวไม้กับผิวสีแดง LOD0 นั้นเป็น LOD หลักของ Mesh โดยต่อมาเราจะเพิ่ม LOD เข้าไปอีก 1 ตัว โดยไปที่หน้า Details &gt; LOD Settings &gt; LOD Import กดเลือก <span style="font-weight: bold;" class="mycode_b">Import LOD Level 1</span><br />
<br />
<img src="http://i.imgur.com/Km6sOX7.jpg" loading="lazy"  alt="[Image: Km6sOX7.jpg]" class="mycode_img" /><br />
<br />
<br />
แล้วก็จะได้ LOD1 มาดังภาพด้านบน เราจะเห็น Screen Size ของแต่ละ LOD นั้นมีค่าไม่เท่ากัน มันหมายความว่า LOD0 จะแสดงผลเมื่อ Mesh ดังกล่าวอยู่ในระยะการมองเห็นมากกว่า 50% และ LOD1 จะแสดงผลเมื่อ Mesh ดังกล่าวอยู่ในระยะการมองเห็นน้อยกว่า 50% ลงไป ตัวอย่างเช่นหาก Mesh มีอยู่ LOD อยู่ 3 ตัว โปรแกรมก็จะเฉลี่ยเปอร์เซ็นต์ให้ทั้ง 3 ตัวโดยอัตโนมัติ ที่นี้ผมได้ทำการเปลี่ยน <span style="font-weight: bold;" class="mycode_b">Element 0 ของ LOD1</span> เป็นพื้นผิวสีฟ้าอ่อน เพื่อแสดงให้เห็นความแตกต่างของ Mesh เวลาแสดงผลได้ง่ายขึ้น <br />
<br />
<span style="font-weight: bold;" class="mycode_b">LOD ระยะใกล้</span><br />
<br />
<img src="http://i.imgur.com/oivR5so.jpg" loading="lazy"  alt="[Image: oivR5so.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">LOD ระยะไกล</span><br />
<br />
<img src="http://i.imgur.com/WxNSHIU.jpg" loading="lazy"  alt="[Image: WxNSHIU.jpg]" class="mycode_img" /><br />
<br />
<br />
จากรูปภาพทั้ง 2 ด้านบน จะเห็นว่าเมื่อเข้าไปอยู่ใกล้โมเดลบ้านแล้วจะเห็นเป็นผิวไม้ และภาพที่ 2 เมื่ออยู่ออกห่างจากโมเดลบ้านไปได้ระยะหนึ่งเราจะเป็นพื้นผิวกลายเป็นสีฟ้าทันที อย่างไรก็ตามถ้าเราไม่ต้องการให้โปรแกรมเฉลี่ยระยะของ Screen Size เอง เราสามารถกดติ๊กถูกที่ <span style="font-weight: bold;" class="mycode_b">Auto Compute LOD Distances</span> ออกไปแล้วไปแก้ไขเอาเองได้ที่ช่อง Screen Size ของแต่ละ LOD<br />
<br />
<span style="font-weight: bold;" class="mycode_b">หมายเหตุ:</span> หากต้องการลบ LOD ออกจะต้องทำได้ด้วย UE ในเวอร์ชั่น 4.15 หรือสูงกว่าเท่านั้น และไม่สามารถลบที่เป็น LOD0 ออกได้ <br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Collision</span></span><br />
ในทุกวัตถุภายใน UE นั้นจะมีสิ่งที่เรียกว่า Collision อยู่รอบ Mesh เพื่อเอาไว้ควบคุมวัตถุนั้นๆ ให้มีฟิสิกส์อยู่ในตัว เช่น การสัมผัสกันระหว่างวัตถุ การชน การกระเด็น โดยโปรแกรมจะกำหนดทุก Mesh ให้มีการ Collision Enabled เอาไว้อยู่แล้ว ซึ่งต่อไปจะแสดงตัวอย่างโดยมี 2 วัตถุ ที่ใช้แสดง Collision กัน<br />
<br />
<img src="http://i.imgur.com/QRwOLSi.jpg" loading="lazy"  alt="[Image: QRwOLSi.jpg]" class="mycode_img" /><br />
<br />
<br />
จากภาพคือวัตถุทรงกลมที่เป็นลูกบอลสีฟ้าและสี่เหลี่ยมที่เป็นเหมือนกำแพงโดยมี Object Type ที่แตกต่างกัน ถ้าเราต้องการให้ลูกบอลไปชนกับกำแพงได้ จะต้องตั้งค่า Collision Setup ให้เป็นให้ <span style="font-weight: bold;" class="mycode_b">Block</span> ที่หน้าต่าง Details ของ Mesh ทั้งสองฝ่ายตามรูปด้านล่าง<br />
<br />
<br />
<img src="http://i.imgur.com/brant3r.jpg" loading="lazy"  alt="[Image: brant3r.jpg]" class="mycode_img" /><br />
<br />
<img src="http://i.imgur.com/KGb1V7G.jpg" loading="lazy"  alt="[Image: KGb1V7G.jpg]" class="mycode_img" /><br />
<br />
จากภาพด้านบนเมื่อทดสอบรันโปรแกรมลูกบอลจะเข้าไปชนกับกำแพงได้โดยไม่ทะลุผ่านกำแพงออกไป <br />
(เราสามารถสร้าง Event สำหรับการ Collision นี้ได้ถ้าเราทำวัตถุนี้เป็น Blueprint โดยการติ๊กถูกที่ช่อง Simulation Generates Hit Events)  <br />
<br />
<br />
<img src="http://i.imgur.com/diRauj7.jpg" loading="lazy"  alt="[Image: diRauj7.jpg]" class="mycode_img" /><br />
<br />
ถ้าเราปรับ Collision Setup ให้เป็น <span style="font-weight: bold;" class="mycode_b">Ignore</span> จะทำให้ลูกบอลที่เข้าไปชนกำแพงทะลุผ่านออกไปยังอีกด้านหนึ่งเลย<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Materials</span></span><br />
UE นั้นสามารถนำ Material และ Texture เข้ามาใช้กับ Mesh ใดๆ ที่นำเข้ามาจากโปรแกรม Digital Content Creation อย่างเช่น 3ds Max ได้ดังที่เคยแสดงเป็นตัวอย่างเอาไว้ในบทความที่แล้ว (Importing Assets) หมายความว่า <span style="font-weight: bold;" class="mycode_b">Material</span> ใน UE คือสิ่งที่ใช้กำหนดตัวพิ้นผิวหน้าตาของ Mesh โดยการใส่รูปภาพ (Textures) ได้แก่ สี ความมันวาว ความขุรขระ และยังสามารถทำให้วัตถุเคลื่อนไหวโดยการจัดการกับ Vertices ซึ่งในหลักแล้วเราจะใช้ Material กันกับ Mesh เท่านั้น แต่อันที่จริงแล้วมันยังนำไปใช้กับ Decals, Post process และ Light functions อีกด้วย (จะยังไม่กล่าวถึงในบทความนี้)<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">วิธีการสร้าง Material</span></span><br />
วิธีการสร้าง Material ใน UE นั้นก็ทำได้ง่ายมากเพียงแค่กดคลิ๊กขวาที่หน้า Content Browser กดเลือก Material แล้วตั้งชื่อให้มันแค่นี้เราก็ได้ไฟล์ Material มาแล้วครับ<br />
<br />
<img src="http://i.imgur.com/ekOCEZe.jpg" loading="lazy"  alt="[Image: ekOCEZe.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Material user interface</span></span><br />
ตอนนี้เราพอจะรู้กันไปบ้างแล้วว่า Material คืออะไร ทีนี้เปิดเข้าไปดูข้างในไฟล์ Material กันว่ามี user interface อะไรกันบ้าง<br />
<br />
<img src="http://i.imgur.com/CdSwKed.jpg" loading="lazy"  alt="[Image: CdSwKed.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Toolbar</span> ตัวปุ่มต่างๆ ที่ใช้ช่วยดูตัว Material นี้ ได้แก่ <br />
Save – สำหรับบันทึกไฟล์เมื่อเราไปแก้ไขตัว Material<br />
Find in CB – ใช้ค้นหาไฟล์ Material ที่เปิดอยู่นี้ว่าอยู่ที่ไหนใน Content Browser <br />
Apply – ยืนยันการแก้ไข Material เพื่อให้แสดงผลลัพธ์การเปลี่ยนแปลง แต่ไฟล์จะยังไปถูกบันทึก<br />
Search – สำหรับพิมพ์เพื่อค้นหาคำภายใน Material<br />
Home – เมื่อกดแล้วโปรแกรมจะเลื่อนไปหาโหนดที่เป็นตัวหลักของ Material<br />
Clean Up – จะทำการลบโหนดที่ไม่ถูกเชื่อมโยงกับโหนดหลักออกไป<br />
Connectors – แสดงหรือซ่อนส่วนที่ไม่ได้เชื่อมโยง pin ของโหนดหลัก<br />
Live Preview – โชว์การแสดงผลหน้าตาของ Material ให้เห็นแบบ real-time<br />
Live Nodes – อัปเดตโหนดต่างๆ แบบ real-time<br />
Live Update – มีการอัปเดต Shader สำหรับทุกโหนดใน Material<br />
Stats – โชว์ข้อมูลของ Material ว่ามี Texture และ Shader เท่าไหร่ รวมถึงข้อมูลที่ Errors ด้วย<br />
Mobile Stats – เหมือนกันกับ Stats แต่เอาไว้ใช้กับโทรศัพท์<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Preview panel</span> หน้าต่างเอาไว้โชว์หน้าตาตัวอย่างของ Material เมื่อเราทำการสร้างและเชื่อมต่อโหนดอื่นๆ เข้ากันกับโหนดหลัก หรือสามารถแสดงตัวอย่างของโหนดใดๆ ได้ด้วยการกดคลิ๊กขวาที่โหนดนั้นแล้วเลือก Start Previewing Node <br />
<br />
<img src="http://i.imgur.com/QnF4GJ3.jpg" loading="lazy"  alt="[Image: QnF4GJ3.jpg]" class="mycode_img" /><br />
<br />
<br />
หน้าต่างนี้สามารถควบคุมได้ดังนี้<br />
Rotate – คลิ๊กซ้ายเพื่อลากดูตัวอย่าง<br />
Pan – คลิ๊กปุ่มกลางเมาส์เพื่อขยับตัวอย่าง<br />
Zoom – คลิ๊กขวาเพื่อใช้ย่อขยายขนาดของตัวอย่าง<br />
Update Light – กดปุ่ม L ค้างแล้วคลิ๊กซ้ายลากเพื่อปรับแสงสว่างของตัวอย่าง<br />
<br />
ที่มุมขวาล่างของหน้าต่างนั้นให้เราสามารถเปลี่ยนรูปทรงของตัวอย่างที่แสดงได้ ซึ่งจากภาพด้านบนจะให้รูปทรงพื้นฐานมี 4 แบบ คือรูปทรงกระบอก ทรงกลม ทรงสี่เหลี่ยมแบน และทรงสี่เหลี่ยม ส่วนที่เป็นรูปกาน้ำเอาไว้แสดงตัวอย่างด้วย Mesh ที่เราต้องการจะดู โดยให้ไปเลือก Mesh ที่หน้า Content Browser เอาไว้ก่อนแล้วค่อยกลับมากด<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Details panel</span> หน้าต่างสำหรับแสดงรายละเอียดต่างๆ ที่เราสามารถปรับแก้ไขได้ เมื่อเราเลือกโหนดที่อยู่ในกราฟ ถ้าไปยังไม่ได้กดเลือกโหนดใดๆ ทางโปรแกรมจะแสดงข้อมูลของโหนดหลักของ Material ขึ้นมาให้เห็นเอง ส่วนข้อมูลเพิ่มเติมที่เกี่ยวกับรายละเอียดต่างๆ นั้น ให้เข้าไปดูเอาในรายละเอียดของ Material ได้ที่ <a href="https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/MaterialProperties/index.html" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/latest/INT...index.html</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Graph panel</span> เรียกได้ว่าเป็นหน้าต่างหลักของที่นี้เลยก็ว่าได้ เราสามารถสร้างโหนดทั้งหมดได้ที่หน้านี้เพื่อกำหนดว่าจะให้ Material มีหน้าต่างออกมาเป็นอย่างไร โดยเริ่มต้นจากที่เราทำการสร้างไฟล์ Material ขึ้นมา ภายในหน้าต่างเราจะเห็นโหนดอยู่ตัวหนึ่งซึ่งเป็นโหนดหลักของมันนั่นเอง ซึ่งจะไม่สามารถลบโหนดตัวนี้ออกไปได้ ส่วนบาง inputs ที่สีตัวอักษรเป็นสีเทานั่นคือไม่สามารถใช้ได้ หากต้องการใช้ให้ลองเปลี่ยน Blend mode ที่หน้า Details panel ดูเอา <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Palette panel</span> หน้าต่างแสดงรายการทั้งหมดของกราฟโหนดและฟังก์ชั่นสำหรับ Material เราสามารถเลือกค้นหาแล้วกดลากใส่ลงในหน้ากราฟได้เลย<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Common Material Nodes</span></span><br />
ในการสร้าง Material ขึ้นมานั้นเราจำเป็นจะต้องเข้าใจฟังก์ชั่นต่างๆ ที่ใช้เข้ามาเชื่อมกับโหนดหลักของ Material ซึ่งจะขอเสนอโหนดหรือฟังก์ชั่นทั่วไปที่มักถูกใช้ในการสร้าง Material เป็นส่วนใหญ่<br />
<br />
<span style="font-weight: bold;" class="mycode_b">วิธีการสร้าง Nodes</span><br />
ก่อนที่จะไปรู้เรื่องฟังก์ชั่นที่ใช้กันใน Material เรามีวิธีในการสร้างโหนดหรือฟังก์ชั่นเพิ่มเข้าไปในกราฟโหนดอยู่ดังต่อไปนี้<br />
1. หาเอาจากหน้าต่าง Palette panel แล้วคลิ๊กลากลงไปในกราฟเลย<br />
2. คลิ๊กขวาในพื้นที่ว่างของกราฟแล้วเลือกหาฟังก์ชั่นที่ต้องการ<br />
3. คลิ๊กซ้ายที่ปุ่ม exec ของโหนดแล้วลากออกมาในพื้นที่ว่างของกราฟ ซึ่งจะเป็นการเชื่อมโหนดไปในตัวเลย<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Texture sample</span><br />
<br />
<img src="http://i.imgur.com/LBf82H6.jpg" loading="lazy"  alt="[Image: LBf82H6.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นกำหนด Texture ให้กับ Material โดยการเลือกไฟล์ Texture ที่อยู่ในโปรเจ็คต์ใส่ไปในโหนดนี้ได้ที่หน้าต่าง Details ดังรูปภาพด้านบน<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Constant</span><br />
<br />
<img src="http://i.imgur.com/zwzMvgQ.jpg" loading="lazy"  alt="[Image: zwzMvgQ.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นที่ใช้ในการกำหนดค่าความสว่างของ Texture โดยการใส่ตัวเลขเป็นเปอร์เซ็นต์ลงไปในช่อง Value ของโหนด (1 คือ 100%)<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Multiply</span> - โหนดที่ใช้สำหรับรวม 2 ฟังก์ชั่นให้ทำงานรวมกัน<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Constant 3Vector</span><br />
<br />
<img src="http://i.imgur.com/RnA0sDM.jpg" loading="lazy"  alt="[Image: RnA0sDM.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นที่ใช้ในการเปลี่ยนสีของ Texture ใหม่โดยการกำหนดสีที่ต้องการได้ที่ช่อง Constant ของโหนด<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Add</span><br />
<br />
<img src="http://i.imgur.com/mHuqIxK.jpg" loading="lazy"  alt="[Image: mHuqIxK.jpg]" class="mycode_img" /><br />
<br />
ฟังก์ชั่นคณิตศาสตร์ เอาไว้ใช้บวกเพิ่มค่าต่างๆ ที่เป็นตัวเลขระหว่างฟังก์ชั่นทั้งสอง โดยจากตัวอย่างภาพด้านบนเป็นการรวมค่า Vector สีทั้ง 2 ตัวรวมกัน<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Divide</span> – ฟังก์ชั่นคณิตศาสตร์ สำหรับใช้หารค่าระหว่างสองค่า<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Subtract</span> – ฟังก์ชั่นคณิตศาสตร์ สำหรับใช้ลบค่าระหว่างสองค่า<br />
<br />
<br />
ยังมีอีกหลายฟังก์ชั่นที่มักถูกเรียกใช้ในการสร้าง Material แต่ขอเอาไว้ต่อไปในบทความหน้านะครับ<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">อ้างอิง</span></span><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://th.wikipedia.org/wiki/</a><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #0000CD;" class="mycode_color">แล้วพบกันใหม่ตอนหน้าครับ</span></span> <img src="http://i.imgur.com/svJQQqT.gif" alt="Derp" title="Derp" class="smilie smilie_40" /></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[เบื้องต้นของเอนจิ้น: Mesh & Importing Assets]]></title>
			<link>https://irpg.in.th/thread-3071.html</link>
			<pubDate>Mon, 10 Apr 2017 11:03:29 +0700</pubDate>
			<dc:creator><![CDATA[<a href="https://irpg.in.th/member.php?action=profile&uid=1277">dreamknight</a>]]></dc:creator>
			<guid isPermaLink="false">https://irpg.in.th/thread-3071.html</guid>
			<description><![CDATA[( ͡° ͜ʖ ͡°)<br />
<div style="text-align: center;" class="mycode_align"><img src="http://i.imgur.com/xpUGK14.png" loading="lazy"  alt="[Image: xpUGK14.png]" class="mycode_img" /></div>
<br />
<span style="font-family: Tahoma;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">บทความที่แล้ว: </span></span><a href="http://irpg.in.th/thread-3063.html" target="_blank" rel="noopener" class="mycode_url">http://irpg.in.th/thread-3063.html</a><br />
<br />
บทความนี้จะอธิบายวิธีการนำทรัพยากรเข้ามาในโปรเจคของเรา โดยจะขอย่อคำว่า Unreal Engine เป็น <span style="font-weight: bold;" class="mycode_b">UE</span> เพื่อความกระชับ และยกตัวอย่างเพียงแค่การนำเข้าโมเดลเข้ามาเท่านั้น ส่วนไฟล์แบบอื่นอาจจะอธิบายในบทความอื่นๆ ครับ แต่ก่อนจะเข้าเรื่องการนำโมเดลเข้ามาในโปรเจค ขอพูดถึงวิธีการตั้งค่าของโปรเจคกันนิดหนึ่งครับ<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Default starting level</span></span><br />
ไฟล์ฉากแผนที่ใน UE จะเรียกว่า <span style="font-weight: bold;" class="mycode_b">Level</span> ถ้าหากเราต้องการเปลี่ยนอย่างเช่นจะให้เปิดไปที่ฉาก Main Menu เสียก่อน ก็สามารถตั้งค่าให้โปรเจคเปลี่ยนไปเปิดฉากนั้นได้ง่ายๆ โดยไปที่เมนู <span style="font-weight: bold;" class="mycode_b">Edit</span> และเลือก <span style="font-weight: bold;" class="mycode_b">Project Settings</span> จากนั้นคลิ๊กที่เมนู <span style="font-weight: bold;" class="mycode_b">Maps &amp; Modes</span> แล้วเปลี่ยนฉากที่ต้องการได้ที่ <span style="font-weight: bold;" class="mycode_b">Default Modes</span> ตามตัวอย่างรูปด้านล่าง<br />
<br />
<img src="http://i.imgur.com/UFLjACM.jpg" loading="lazy"  alt="[Image: UFLjACM.jpg]" class="mycode_img" /><br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Splash &amp; Icon</span></span><br />
<img src="http://i.imgur.com/9j52idl.jpg" loading="lazy"  alt="[Image: 9j52idl.jpg]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Splash</span> คือรูปภาพที่ปรากฏขึ้นกลางหน้าจอเมื่อมีการเปิดตัวเกมขึ้นมา เป็นรูปภาพสำหรับรอโหลดตัวเกมขึ้นมานั่นเอง สามารถหาภาพที่อยู่ในคอมพิวเอตร์มาเปลี่ยนแทนได้เลย โดยขนาดภาพจะต้องอยู่ที่ 600 x 200 <br />
<span style="font-weight: bold;" class="mycode_b">2. Icon</span> คือรูปภาพที่จะเป็นไอคอนของเกม ขนาดภาพที่ต้องการคือ 256 x 256 และจะต้องเป็นไฟล์นามสกุล .ICO เท่านั้น<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">คำศัพท์เบื้องต้นในงานสามมิติ</span></span><br />
เมื่อเราจะเริ่มต้นสร้างเกมสามมิติขึ้นมา คงเป็นไปไม่ได้เลยที่เราจะไม่ทำความเข้าใจงานสามมิติกันเสียก่อน ฉะนั้นเราจะต้องรู้และเข้าใจคำศัพท์กันบ้างเพื่อเราจะได้นำเข้างานโมเดลสามมิติเข้ามาในโปรเจคเกมของเราและตั้งค่าได้อย่างถูกต้อง<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Digital Content Creation (DCC)</span><br />
ถึงในโปรแกรม UE จะเป็นเครื่องมือเอาไว้สร้าง mesh ได้ ถ้าหากต้องการทำเป็นตัวโมเดลที่มีรายละเอียดและมีคุณภาพกว่านี้ เราควรจะสร้างโมเดลขึ้นมาด้วยโปรแกรม Digital Content Creation (DCC) ต่างๆ เช่น 3ds Max, Maya, Blender เป็นต้น แล้วจึงนำโมเดลที่ได้เข้ามาลงในโปรเจค ซึ่งไฟล์โมเดลที่จะนำเข้า UE นั้นจะต้องเป็นนามสกุล FBX หรือ OBJ เท่านั้น แต่สำหรับ UE แนะนำให้ใช้ไฟล์ FBX ครับ<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mesh</span> เป็นคำเรียกของงานโมเดลสามมิติ อาจสร้างขึ้นด้วยรูปหลายเหลี่ยมหรือส่วนใหญ่จะสร้างกันด้วยรูปสามเหลี่ยม ซึ่งเรียกกันว่าโพลีกอนแบบ Mesh โดยมีส่วนประกอบหลัก 3 อย่างดังรูปภาพด้านล่างต่อไปนี้<br />
<br />
<img src="http://i.imgur.com/FJVf9mi.jpg" loading="lazy"  alt="[Image: FJVf9mi.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Vertex</span> คือตำแหน่งพิกัดเพื่อแสดงจุดอ้างอิงในการลากเส้นเชื่อมต่อกัน<br />
<span style="font-weight: bold;" class="mycode_b">2. Edge</span> คือเส้นเชื่อมระหว่าง vertex สองจุด<br />
<span style="font-weight: bold;" class="mycode_b">3. Face</span> คือขนาดพื้นที่ภายใน Edge เพื่อเป็นพื้นผิวของโมเดล<br />
<br />
<span style="font-weight: bold;" class="mycode_b">UV mapping</span> เป็นการสร้างแบบจำลองสามมิติโดยใช้แกน 2 มิติ (แกน U และ V) แสดงข้อมูลที่เป็น 3 มิติ (แกน X, Y และ Z) โดยทั่วไปมักใช้ในการจัดวางภาพ 2 มิติลงบนพื้นผิว 3 มิติ เช่นการทำ texture หรือการใช้วิธีระบายสีโดยตรงลงบนแบบจำลอง<br />
<br />
<img src="http://i.imgur.com/kzD3HQP.png" loading="lazy"  alt="[Image: kzD3HQP.png]" class="mycode_img" /><br />
upload.wikimedia.org<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Pivot Point</span> คือตำแหน่งที่เป็นศูนย์กลางของวัตถุหรือตำแหน่งที่ตัวเคลื่อนย้ายวัตถุจะปรากฏเวลาเรานำ mesh เข้ามาใน UE จะมองเห็น Translation Widget (ที่ใช้จับเคลื่อนย้าย / ขยาย / หมุน) <br />
<br />
<img src="http://i.imgur.com/o0fpMMD.jpg" loading="lazy"  alt="[Image: o0fpMMD.jpg]" class="mycode_img" /><br />
docs.unrealengine.com<br />
<br />
<img src="http://i.imgur.com/dV9OzGn.jpg" loading="lazy"  alt="[Image: dV9OzGn.jpg]" class="mycode_img" /><br />
<br />
จากตัวอย่างรูปภาพด้านบนคือโมเดลลูกทรงกลมที่ผมนำเข้ามาจากโปรแกรม <span style="font-weight: bold;" class="mycode_b">Blender</span> โดยตั้งค่าตำแหน่งเอาไว้ต่างกัน ทางซ้ายวางไว้ที่ (0,0,0) ส่วนทางขวาวางไว้ที่ (-1,-1,-1) จะพบปัญหาว่าตัว transform ของ UE ทางรูปด้านขวานั้นจะอยู่ไม่ตรงกับลูกทรงกลม เนื่องจาก UE จะกำหนด transform เอาไว้ที่ (0,0,0) เสมอ นี่จะทำให้เราขยับขยายลูกทรงกลมได้ลำบาก ทางที่ดีเราควรตั้งตำแหน่งเอาไว้ที่ (0,0,0) ตั้งแต่อยู่ใน Blender ก่อนจะนำเข้ามาใน UE<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Unreal Units</span> หน่วยการวัดขนาดโมเดลภายใน UE ซึ่ง 1 Unreal Unit จะมีค่าเท่ากับ 1 cm. อย่างตัวมนุษย์หุ่นที่เราได้มาใช้เล่นตอนเริ่มต้นนั้นจะมีความสูง 196 cm. <br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Importing Assets</span></span><br />
ให้หา mesh อะไรก็ได้ที่เป็นไฟล์ FBX มาทดลองดู มีอยู่หลายเว็บไซต์ที่มีแจกโหลดมาใช้ได้ หรืออาจจะเข้าไปหาโหลดได้ที่เว็บไซต์ <a href="http://tf3dm.com/" target="_blank" rel="noopener" class="mycode_url">http://tf3dm.com</a> ซึ่งการนำ mesh เข้าไปยังโปรเจคของ UE นั้นมีวิธีการที่ง่ายมาก โดยมีวิธีต่างๆ ดังต่อไปนี้<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Context Menu</span> สามารถคลิ๊กขวาใน content browser แล้วเลือก Import to &lt;โฟลเดอร์&gt;<br />
<img src="http://i.imgur.com/9hssMJy.jpg" loading="lazy"  alt="[Image: 9hssMJy.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. ลากและวาง</span> โดยนำไฟล์ FBX หรือ OBJ โมเดลจากหน้าต่าง Windows Explorer ลากใส่เข้าไปใน Content Browser โดยตรงเลย<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Content Browser Import</span> นำเข้าด้วยการกดปุ่ม <span style="font-weight: bold;" class="mycode_b">Import</span> ที่หน้าจอ Content Browser<br />
<img src="http://i.imgur.com/SqZOiL6.jpg" loading="lazy"  alt="[Image: SqZOiL6.jpg]" class="mycode_img" /><br />
<br />
<br />
เมื่อทำการนำ mesh เข้ามาในโปรเจค เราจะเห็นหน้าต่าง Import Options แสดงขึ้นมามีรายละเอียดดังภาพด้านล่าง<br />
<img src="http://i.imgur.com/5zFQWIk.jpg" loading="lazy"  alt="[Image: 5zFQWIk.jpg]" class="mycode_img" /><br />
<br />
<br />
หลังจากกดปุ่ม <span style="font-weight: bold;" class="mycode_b">Import</span> หรือ <span style="font-weight: bold;" class="mycode_b">Import All</span> กรณีนำเข้ามาหลายไฟล์ เราจะได้ไฟล์เข้ามาในโปรเจคที่เห็นอยู่ใน Content Browser ซึ่ง UE จะแยกไฟล์ mesh กับ material ออกจากกันให้อัตโนมัติดังตัวอย่างที่ผมนำเข้ามาคือ house เป็นโมเดลบ้านพอชี้ที่ไฟล์ จะขึ้นข้อมูลว่าเป็น <span style="font-weight: bold;" class="mycode_b">Static Mesh</span> ส่วนสีของโมเดลคือสีแดงกับสีฟ้าอ่อนนั้นจะเป็นไฟล์ <span style="font-weight: bold;" class="mycode_b">Material</span><br />
<br />
<img src="http://i.imgur.com/HhSJocE.jpg" loading="lazy"  alt="[Image: HhSJocE.jpg]" class="mycode_img" /><br />
<br />
<br />
ถ้าเราดับเบิ้ลคลิ๊กเข้าไปที่ไฟล์ house โปรแกรมจะเปิดหน้าต่างที่เรียกว่า <span style="font-weight: bold;" class="mycode_b">Static Mesh Editor</span> ขึ่นมาให้เราสามารถแก้ไข <span style="font-weight: bold;" class="mycode_b">LOD</span> ที่อยู่ทางด้านขวาของหน้าจอได้ดังรูปด้านล่าง<br />
<br />
<img src="http://i.imgur.com/blyXfY5.jpg" loading="lazy"  alt="[Image: blyXfY5.jpg]" class="mycode_img" /><br />
<br />
<br />
เรื่องของการนำโมเดลเข้ามายังโปรเจคของเราก็จบเพียงเท่านี้ ส่วนเรื่อง <span style="font-weight: bold;" class="mycode_b">Material</span> และ <span style="font-weight: bold;" class="mycode_b">LOD</span> จะพูดถึงในบทความถัดไปแล้วกันนะครับ<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">อ้างอิง</span></span><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://th.wikipedia.org/wiki/</a><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #0000CD;" class="mycode_color">แล้วพบกันใหม่ตอนหน้าครับ</span></span> <img src="http://i.imgur.com/svJQQqT.gif" alt="Derp" title="Derp" class="smilie smilie_40" /></span></span>]]></description>
			<content:encoded><![CDATA[( ͡° ͜ʖ ͡°)<br />
<div style="text-align: center;" class="mycode_align"><img src="http://i.imgur.com/xpUGK14.png" loading="lazy"  alt="[Image: xpUGK14.png]" class="mycode_img" /></div>
<br />
<span style="font-family: Tahoma;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">บทความที่แล้ว: </span></span><a href="http://irpg.in.th/thread-3063.html" target="_blank" rel="noopener" class="mycode_url">http://irpg.in.th/thread-3063.html</a><br />
<br />
บทความนี้จะอธิบายวิธีการนำทรัพยากรเข้ามาในโปรเจคของเรา โดยจะขอย่อคำว่า Unreal Engine เป็น <span style="font-weight: bold;" class="mycode_b">UE</span> เพื่อความกระชับ และยกตัวอย่างเพียงแค่การนำเข้าโมเดลเข้ามาเท่านั้น ส่วนไฟล์แบบอื่นอาจจะอธิบายในบทความอื่นๆ ครับ แต่ก่อนจะเข้าเรื่องการนำโมเดลเข้ามาในโปรเจค ขอพูดถึงวิธีการตั้งค่าของโปรเจคกันนิดหนึ่งครับ<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Default starting level</span></span><br />
ไฟล์ฉากแผนที่ใน UE จะเรียกว่า <span style="font-weight: bold;" class="mycode_b">Level</span> ถ้าหากเราต้องการเปลี่ยนอย่างเช่นจะให้เปิดไปที่ฉาก Main Menu เสียก่อน ก็สามารถตั้งค่าให้โปรเจคเปลี่ยนไปเปิดฉากนั้นได้ง่ายๆ โดยไปที่เมนู <span style="font-weight: bold;" class="mycode_b">Edit</span> และเลือก <span style="font-weight: bold;" class="mycode_b">Project Settings</span> จากนั้นคลิ๊กที่เมนู <span style="font-weight: bold;" class="mycode_b">Maps &amp; Modes</span> แล้วเปลี่ยนฉากที่ต้องการได้ที่ <span style="font-weight: bold;" class="mycode_b">Default Modes</span> ตามตัวอย่างรูปด้านล่าง<br />
<br />
<img src="http://i.imgur.com/UFLjACM.jpg" loading="lazy"  alt="[Image: UFLjACM.jpg]" class="mycode_img" /><br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Splash &amp; Icon</span></span><br />
<img src="http://i.imgur.com/9j52idl.jpg" loading="lazy"  alt="[Image: 9j52idl.jpg]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Splash</span> คือรูปภาพที่ปรากฏขึ้นกลางหน้าจอเมื่อมีการเปิดตัวเกมขึ้นมา เป็นรูปภาพสำหรับรอโหลดตัวเกมขึ้นมานั่นเอง สามารถหาภาพที่อยู่ในคอมพิวเอตร์มาเปลี่ยนแทนได้เลย โดยขนาดภาพจะต้องอยู่ที่ 600 x 200 <br />
<span style="font-weight: bold;" class="mycode_b">2. Icon</span> คือรูปภาพที่จะเป็นไอคอนของเกม ขนาดภาพที่ต้องการคือ 256 x 256 และจะต้องเป็นไฟล์นามสกุล .ICO เท่านั้น<br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">คำศัพท์เบื้องต้นในงานสามมิติ</span></span><br />
เมื่อเราจะเริ่มต้นสร้างเกมสามมิติขึ้นมา คงเป็นไปไม่ได้เลยที่เราจะไม่ทำความเข้าใจงานสามมิติกันเสียก่อน ฉะนั้นเราจะต้องรู้และเข้าใจคำศัพท์กันบ้างเพื่อเราจะได้นำเข้างานโมเดลสามมิติเข้ามาในโปรเจคเกมของเราและตั้งค่าได้อย่างถูกต้อง<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Digital Content Creation (DCC)</span><br />
ถึงในโปรแกรม UE จะเป็นเครื่องมือเอาไว้สร้าง mesh ได้ ถ้าหากต้องการทำเป็นตัวโมเดลที่มีรายละเอียดและมีคุณภาพกว่านี้ เราควรจะสร้างโมเดลขึ้นมาด้วยโปรแกรม Digital Content Creation (DCC) ต่างๆ เช่น 3ds Max, Maya, Blender เป็นต้น แล้วจึงนำโมเดลที่ได้เข้ามาลงในโปรเจค ซึ่งไฟล์โมเดลที่จะนำเข้า UE นั้นจะต้องเป็นนามสกุล FBX หรือ OBJ เท่านั้น แต่สำหรับ UE แนะนำให้ใช้ไฟล์ FBX ครับ<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mesh</span> เป็นคำเรียกของงานโมเดลสามมิติ อาจสร้างขึ้นด้วยรูปหลายเหลี่ยมหรือส่วนใหญ่จะสร้างกันด้วยรูปสามเหลี่ยม ซึ่งเรียกกันว่าโพลีกอนแบบ Mesh โดยมีส่วนประกอบหลัก 3 อย่างดังรูปภาพด้านล่างต่อไปนี้<br />
<br />
<img src="http://i.imgur.com/FJVf9mi.jpg" loading="lazy"  alt="[Image: FJVf9mi.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Vertex</span> คือตำแหน่งพิกัดเพื่อแสดงจุดอ้างอิงในการลากเส้นเชื่อมต่อกัน<br />
<span style="font-weight: bold;" class="mycode_b">2. Edge</span> คือเส้นเชื่อมระหว่าง vertex สองจุด<br />
<span style="font-weight: bold;" class="mycode_b">3. Face</span> คือขนาดพื้นที่ภายใน Edge เพื่อเป็นพื้นผิวของโมเดล<br />
<br />
<span style="font-weight: bold;" class="mycode_b">UV mapping</span> เป็นการสร้างแบบจำลองสามมิติโดยใช้แกน 2 มิติ (แกน U และ V) แสดงข้อมูลที่เป็น 3 มิติ (แกน X, Y และ Z) โดยทั่วไปมักใช้ในการจัดวางภาพ 2 มิติลงบนพื้นผิว 3 มิติ เช่นการทำ texture หรือการใช้วิธีระบายสีโดยตรงลงบนแบบจำลอง<br />
<br />
<img src="http://i.imgur.com/kzD3HQP.png" loading="lazy"  alt="[Image: kzD3HQP.png]" class="mycode_img" /><br />
upload.wikimedia.org<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Pivot Point</span> คือตำแหน่งที่เป็นศูนย์กลางของวัตถุหรือตำแหน่งที่ตัวเคลื่อนย้ายวัตถุจะปรากฏเวลาเรานำ mesh เข้ามาใน UE จะมองเห็น Translation Widget (ที่ใช้จับเคลื่อนย้าย / ขยาย / หมุน) <br />
<br />
<img src="http://i.imgur.com/o0fpMMD.jpg" loading="lazy"  alt="[Image: o0fpMMD.jpg]" class="mycode_img" /><br />
docs.unrealengine.com<br />
<br />
<img src="http://i.imgur.com/dV9OzGn.jpg" loading="lazy"  alt="[Image: dV9OzGn.jpg]" class="mycode_img" /><br />
<br />
จากตัวอย่างรูปภาพด้านบนคือโมเดลลูกทรงกลมที่ผมนำเข้ามาจากโปรแกรม <span style="font-weight: bold;" class="mycode_b">Blender</span> โดยตั้งค่าตำแหน่งเอาไว้ต่างกัน ทางซ้ายวางไว้ที่ (0,0,0) ส่วนทางขวาวางไว้ที่ (-1,-1,-1) จะพบปัญหาว่าตัว transform ของ UE ทางรูปด้านขวานั้นจะอยู่ไม่ตรงกับลูกทรงกลม เนื่องจาก UE จะกำหนด transform เอาไว้ที่ (0,0,0) เสมอ นี่จะทำให้เราขยับขยายลูกทรงกลมได้ลำบาก ทางที่ดีเราควรตั้งตำแหน่งเอาไว้ที่ (0,0,0) ตั้งแต่อยู่ใน Blender ก่อนจะนำเข้ามาใน UE<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Unreal Units</span> หน่วยการวัดขนาดโมเดลภายใน UE ซึ่ง 1 Unreal Unit จะมีค่าเท่ากับ 1 cm. อย่างตัวมนุษย์หุ่นที่เราได้มาใช้เล่นตอนเริ่มต้นนั้นจะมีความสูง 196 cm. <br />
<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Importing Assets</span></span><br />
ให้หา mesh อะไรก็ได้ที่เป็นไฟล์ FBX มาทดลองดู มีอยู่หลายเว็บไซต์ที่มีแจกโหลดมาใช้ได้ หรืออาจจะเข้าไปหาโหลดได้ที่เว็บไซต์ <a href="http://tf3dm.com/" target="_blank" rel="noopener" class="mycode_url">http://tf3dm.com</a> ซึ่งการนำ mesh เข้าไปยังโปรเจคของ UE นั้นมีวิธีการที่ง่ายมาก โดยมีวิธีต่างๆ ดังต่อไปนี้<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Context Menu</span> สามารถคลิ๊กขวาใน content browser แล้วเลือก Import to &lt;โฟลเดอร์&gt;<br />
<img src="http://i.imgur.com/9hssMJy.jpg" loading="lazy"  alt="[Image: 9hssMJy.jpg]" class="mycode_img" /><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. ลากและวาง</span> โดยนำไฟล์ FBX หรือ OBJ โมเดลจากหน้าต่าง Windows Explorer ลากใส่เข้าไปใน Content Browser โดยตรงเลย<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Content Browser Import</span> นำเข้าด้วยการกดปุ่ม <span style="font-weight: bold;" class="mycode_b">Import</span> ที่หน้าจอ Content Browser<br />
<img src="http://i.imgur.com/SqZOiL6.jpg" loading="lazy"  alt="[Image: SqZOiL6.jpg]" class="mycode_img" /><br />
<br />
<br />
เมื่อทำการนำ mesh เข้ามาในโปรเจค เราจะเห็นหน้าต่าง Import Options แสดงขึ้นมามีรายละเอียดดังภาพด้านล่าง<br />
<img src="http://i.imgur.com/5zFQWIk.jpg" loading="lazy"  alt="[Image: 5zFQWIk.jpg]" class="mycode_img" /><br />
<br />
<br />
หลังจากกดปุ่ม <span style="font-weight: bold;" class="mycode_b">Import</span> หรือ <span style="font-weight: bold;" class="mycode_b">Import All</span> กรณีนำเข้ามาหลายไฟล์ เราจะได้ไฟล์เข้ามาในโปรเจคที่เห็นอยู่ใน Content Browser ซึ่ง UE จะแยกไฟล์ mesh กับ material ออกจากกันให้อัตโนมัติดังตัวอย่างที่ผมนำเข้ามาคือ house เป็นโมเดลบ้านพอชี้ที่ไฟล์ จะขึ้นข้อมูลว่าเป็น <span style="font-weight: bold;" class="mycode_b">Static Mesh</span> ส่วนสีของโมเดลคือสีแดงกับสีฟ้าอ่อนนั้นจะเป็นไฟล์ <span style="font-weight: bold;" class="mycode_b">Material</span><br />
<br />
<img src="http://i.imgur.com/HhSJocE.jpg" loading="lazy"  alt="[Image: HhSJocE.jpg]" class="mycode_img" /><br />
<br />
<br />
ถ้าเราดับเบิ้ลคลิ๊กเข้าไปที่ไฟล์ house โปรแกรมจะเปิดหน้าต่างที่เรียกว่า <span style="font-weight: bold;" class="mycode_b">Static Mesh Editor</span> ขึ่นมาให้เราสามารถแก้ไข <span style="font-weight: bold;" class="mycode_b">LOD</span> ที่อยู่ทางด้านขวาของหน้าจอได้ดังรูปด้านล่าง<br />
<br />
<img src="http://i.imgur.com/blyXfY5.jpg" loading="lazy"  alt="[Image: blyXfY5.jpg]" class="mycode_img" /><br />
<br />
<br />
เรื่องของการนำโมเดลเข้ามายังโปรเจคของเราก็จบเพียงเท่านี้ ส่วนเรื่อง <span style="font-weight: bold;" class="mycode_b">Material</span> และ <span style="font-weight: bold;" class="mycode_b">LOD</span> จะพูดถึงในบทความถัดไปแล้วกันนะครับ<br />
<br />
<br />
<span style="color: #0000CD;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">อ้างอิง</span></span><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://th.wikipedia.org/wiki/</a><br />
<a href="https://th.wikipedia.org/wiki/" target="_blank" rel="noopener" class="mycode_url">https://docs.unrealengine.com/</a><br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #0000CD;" class="mycode_color">แล้วพบกันใหม่ตอนหน้าครับ</span></span> <img src="http://i.imgur.com/svJQQqT.gif" alt="Derp" title="Derp" class="smilie smilie_40" /></span></span>]]></content:encoded>
		</item>
	</channel>
</rss>