• මොකද්ද මේ Game Optimization කියන්නෙ ?
Video game එකක් developers ල use කරන high end computes වල develop කරල play කරගන්න පුලුවන් උනාට game එක play කරන්න ඉන්න players ලට ඒ game එක ඒ මට්ටමේම තියෙද්දි machine වල run කරගන්න බැහැ... කොටින්ම කිවොත් ලොකුම performance එකක් තියෙන්නෙ ඕන. ඒ වගේම අනවශ්ය වල දේවල් render කරන්න පවා computer එකේ processing power එක වැයවෙනව...
මෙන්න මේ නිසා තමා Video Game එකක් Optimize කරන්නෙ... මෙහෙම optimize කරන එකෙන video game එක smooth run කරගන්න වගේම අනවශ්ය විදිහට machine එකෙ processing power එක වැය වෙන එක වලක්වනව..
• දැන් බලමු Optimize කරන්න පාවිච්චි කරන ක්රම මොනවද කියල.
1. LOD ( Level Of Detail )
ම්රෙක use කරන්නෙ game environment එකේ තියනම objects වලට. Game එකේ player සහ environment එකේ objects තියන distance එක අනුව 3d models වගේ දේවල් වල polygon count අඩු කරල low poly මට්ටමට ගේනව distance වැඩි වෙන්න වෙන්න.... player object එක ලගට කිට්ටු වෙන්න වෙන්න polygon counts වැඩිවෙලා ඒකෙ details වැඩි වෙලා ලස්සනට පේන්න ගනන්ව... කොටින්ම කිවොත් ඈත තියන objects වල details අපිට ඉතා හොඳින් පේන්න ඕන නැ.. ඒව render කරන්න අනවශ්යprocessing power එකක් දෙන්න ඔන නැහැ.
2. Level Streaming
මේකෙදි වෙන්නෙ player game එකේ level එක තුල අපිට පෙන පරාසය තුල තියන objects අපිට පේන්න සලස්වන එකත්.. නොපෙනෙන තැන් වල දෙවල් hide කරල දාන එකත්.. ඒ කියන්නෙ player ගෙ වටේට යම් කිසි distance එකක් දක්වා පමනක් objects මතු කරන එකත් එතනින් එහාට දේවල් hide කරන එකත්. ( E.g :- games play කරද්දි සමහර වෙලාවට ඔයාට note වෙලා ඇති එකපාරම ඈතින් objects මතු වෙන්න පටන් ගන්න වෙලාවල් )
3. Fake Details
මෙතනදි කරන්නෙ 3d models, environment එක වගේ දේවල් ඇස් බැන්දුමක් කරන එක. ඒ කියන්නෙ textres , PBR materials වගේ දේවල් use කරල low details තියන 3d models වගේ දේවල් high detailed models වගේ පේන්න ඇස් බැන්දුමක් කරන එක.. සහ environment එකේ ඈතින් පේන කඳු වගෙ දේවල් වලට 3d models , terrain වගේ දෙවල් use නොකර image එකක් place කරන එක මගින් processing power අඩු කරගන්න එක. ( mobile games බහුතරයක මේ Image එකක් place කරන එක use කරනව )
4. Terrain Optimizing
Game Engine එක තුලින් terrain එකේ Smooth ගතිය වගේම detailed ගතිය අඩු වැඩි කරල Game එකේ terrain එක optimize කරගන්න පුලුවන්.
5. Textures
Texture quality එක අඩු කරලත් game එක optimize කරගන්න පුලුවන්.. ගොඩක්ම mibole games වල ( vehiclr simulation games වගේ ) player ගෙ vehicle එකට quality එක වැඩි textures use කරන අතර අනෙකුත් NCP vehicles වල low quality textures use වෙනව.
6. Shadow Quality
Game Engine එක තුලින් අපිට shadow වල quality එක වෙනස් කරගන්න පුලුවන්. Shadow quality වැඩි වෙනකොට processing power එක වැඩි වෙනව වගේම quality එක අඩුවෙනකොට smooth run කරගන්න පුලුවන්. . ගොඩක්ම games වල මේ shadow quality එක player ට change කරගන්න setting එකක් තියනව.
Video Game එකක Graphic Setting Option එකක් තියනව බලාගන්න පුලුවන්.. ඒක හරහා මේ කියන optimizing methods use වෙන විදිහට player ට තමන්ගෙ device එකේ performance මත change කරගන්න පුලුවන්.
7. Code
Developer තමන්ගෙ game එකේදි programming part එක කරනකොටත් සැලකිලිවත් වෙන්න ඕන, මොකද ගොඩක් කට්ටිය නොදන්නව උනාට Coding කරන code එක මතත game එකක optimization රඳා පවතිනව.. සරලව පැහැදිලු කරොත් සමහර code lines වලට වඩා ඒ වෙනුවට ඒ වැඩේම කරගන්න පුලුවන් වෙනත් code එකක් මගින් smoothly game එක run කරගන්න පුලුවන් වෙනව.
ඉතින් ඔය විදිහට තව ගොඩක් ක්රම තියනව game එකක් optimize කරගන්න. අනිවරෙන් හොයල බලන්න.
මගේ YouTube Channel එකෙත් පොඩි උදාහරන කිපයක් එක්ක පොඩ් explain එකකුත් කරල තියෙනව..ඒකත් ඕනනම් පහල link එකෙන් ගිහින් බලන්න පුලුවන්..
: https://youtu.be/eXhTYhbP0pQ?si=ltz7o2XsuwvK6Dls
අද කතාකරමු Game Development වලට අදාලවන මාතෘකාවක්
ඉතින් අද මාතෘකාව තමා Prefabs.
සරළ අදහසක් දෙනවනම් අපිට මේ prefabs කියන එකට පෙර සකසන ලද වගේ අදහසක් දෙන්න පුලුවන්.
ඉතින් මේකෙදි වෙන්නෙ ඔයා game එකේ designing part එකේදි use කරන asset එකක් එකට එදාල components දීලා ( e.g : Colliders, Gravity, Codes, Textures, Physics) සම්පූර්ණයෙන්ම setup කරගත්තට පස්සෙ ඒක ඔයාගෙ game එකේ desining වලට ගන්න එක..
මෙහෙම setup කරල හදාගන්න එකට තමා prefab එකක් කියන්නෙ කියල දැනට idea එකක් දාගන්න.
ඇයි Prefabs පාවිච්චි කරන්නෙ ?
Game එකක් development කරනකොට ඒ වැඩේ කාර්යක්ෂම කරගන්න වගේම ඔයාගෙ වැයවෙන කාලය අඩු කරගන්න මේ Prefabs ලොකු උදව්වක් කරනව.
ඉතින් උදාහරණයක් විදිහට අපි හිතමු අපිට අපේ game එකට NPC ල දාගන්න ඕන කියල. එකම Character එක අපිට Game එක පුරාවටම ගොඩක් තැන්වලදි බලාගන්න පුලුවන් කියල හිතන්න ( Like GTA ) .
අපි ඒ Character එක අපේ Scene එකේ තැන් කීපයකම place කරල තියනව කියල හිතන්න. Place කරල ඔක්කොම කරල ඉවර උනාට පස්සෙ ඔයාට ඒ Character එකේ Components වල වෙනසක් කරන්න ඕන උනොත්.. අපි හිතමු Gravity එක වෙනස් කරගන්න ඔන කියල.. එහෙම උනිත් ඔයා Prefab use කරල නෙමේනම් ඒ characters place කරේ ඔයාට ඒ characters එකින් එක වෙන වෙනම manually අදලා change එක කරගන්න වෙනව. ලොකු වෙලාවක් වැයවෙන වැඩක්.
හැබැයි ඔයා Prefab එකක් use කරලනම් Characters place කරල තියෙන්නෙ.. ඔයාට හදාගත්ත Prefab එකේ අදාල වෙනස කරන්න විතරයි තියෙන්නෙ, ඔයාගෙ scene එකේ ඒ prefab එකෙන් place කරපු character 1000 ක් තිබ්බත් prefab එකේ අදාල change එක කරපු ගමන් scene එකේ සේරම Character ටිකේ ඒ වෙනස වෙනව.. කලින් සෑහෙන වෙලාවක් අරන් දගලපු වැඩේ විනාඩියක ඉවරයි...
ඊළගට තව වැදගත්ම දෙයක් තමා Object scaling.. ඒ කියන්නෙ මුලින්ම ඔයා game එකෙ desining පටන් ගන්න කලින් අදාල object ටික හරිම scale එකෙන් හදාගන්න ඕන.. ඒ කියන්නෙ Coconut Tree එකක් සහ Man කෙනෙක් ඉන්නව නම් ඒ object දෙක scene එකට දැම්ම පොල් ගහට වඩා මිනිහා උස වෙන්න බෑනෙ.. ඒ objects හරි ගානට හදාගන prefab එකරගන්න ඕන.. ඉට පස්සෙ prefabs හරහා තමා designing වැඩේ කරන්නෙ.. නැත්තම් වෙන්නෙ ඔයාට scene එකට දාන දාන coconut tree එකේ scale up/down කරගන්න වෙන එක.... ගොඩක්ම ඔය වැඩේ වෙන්නෙ වෙන කොහෙන්හරි download කරපු assets පාවිච්චි කරනකොට.
ඊළග Prefab වල වැදගත්ම දේ තමා objects spawn වෙනවනම් එතනදිත් prefabs පාවිච්චි වෙනව.
Prefabs පාවිච්චි කරන්න පුලුවන් මොනවගේ දේවල් වලටද ?
• Environmental assets : Trees, rocks, buildings.. etc.
• Characters : NPCs, enemies.. etc.
• Items : Weapons, power-ups... etc.
• UI elements : Buttons, menus,.. etc.
කොහොමද Prefabs හදාගන්නෙ ?
මේක ඔයා use කරන game engine එක අනුව වෙනස් වෙන්න පුලුවන්.. මම පුද්ගලිකව use කරල තියෙන්නෙ Unity සහ Unreal Engine දෙක විතරයු.
Unity වලනම් Scene එකේ තියන Object එකක් drag කරල assets panel එකට drop කරපු ගමන් prefab එකක් හදාගන්න පුලුවන් ලේසියෙන්ම.. Unreal වලත් prefab tool එක තියනව.. ඔයා use කරන engine එකේ කරන්නෙ කොහොමද කියල හොයල බලන්න.
ඉතින් මේ සේරම විස්තරේ සම්පූර්ණ explanation video එකක් මම example එක්කම කරල තියනව. Comment section එකෙන් අදාල video link එක ගන්න පුලුවන් .
අද කතාකරමු IOR , Reflection කියන්නෙ මොකද්ද කියන සහ IOR , Reflection කියන දෙවල් 3D rendering, Game designing වලට අතිශය වැදගත් වෙන දෙයක් වෙන්නෙ ඇයි කියන එක.
මුලින්ම බලමු IOR එහෙමත් නැත්නම් Index Of Refraction කියන්නෙ මොකද්ද කියල.
IOR කියන්නෙ නම් කිසි මාද්යක්/ද්රව්යයක් තුලින් ආලෝකය ගමන් කරද්දි ඒ ආලෝක කිරණ නැමීම එහෙමත් නැත්නම් ගමන් මාර්ගය වෙනස් වීම සම්බන්දව තියන අගයක්.
සරලවම කිවොත් අපි O/L කාලෙ science වලදි ඉගන ගන්න වතුර වීදුරුවට පැන්සලක් දැම්මම පැන්සල ඉස්සිලා පේන එක.
මෙහෙම වෙන්නෙ එක් මාද්යක ඉදන් තවත් මාද්යකට ආලොකය ගමන් කිරීමේදී ඒම මාද්ය වල ආලෝකය ගමන් කරන වේග වෙනස් වීම නිසා ආලෝකය තම ගමන් මාර්ගයෙන් පිටපැන නැමීමකට ලක් වීම... ඔයාලා අනිවරෙන් අහල ඇති ගහන මාද්ය, විරල මාද්ය කියල... මේ මාද්ය දෙකෙන් ගහන මාද්ය වල ආලොකයේ වෙගය අඩුයි වගේම විරල මාද්ය වල වේගය වැඩියි.. වැඩිදුර විස්තර ඕනනම් හොයල බලන්න, මම ගහන, විරල ගැන වැඩි විස්තරයක් සදහන් කරන්නෑ මම හිතනව ඔයා මේව ගැන දන්නව කියල ( වතුර වීදුරුවට පැන්සල දාන එක වගේ සරල practical එකක්
ඉතින් විවිද මාද්ය වලට අදාලව IOR අගයක් තියනව,
• Air - 1
• Water - 1.33
• Glass - 1.5
• Diamond - 2.42
තවත් අමතර කරුනක් ගැන කිවොත්, Glass ගත්තොත් මෙවගෙ IOR value එක තවත් expand වෙනව.. 1.5 - 1.7 වගේ මේක පවතිනව.... එහෙම ඇයි ? ඒකත හෙතුව තමා glass එකේ ස්වභාවය. Clear glass, අපහැදිලි කැටයම් ගහපු glass, ඝනකම වගේ glass එකේ ස්වභාවය මත මේ value තවත් විහිදෙනව.
ඉතින් IOR මෙච්චර වැදගත් වෙන්නෙ Realestic Rendering කරනවනම් මේ IOR ගැන විශේශයෙන්ම අවදානය දෙන්න ඕන.. ඒ ඒ materials වලට අදාල Value එක අපි දෙන්න ඕන.. ( උදා: glass එකක් නම් 1.5 -1.7)
මේ value ඔයාට add කරගන්න software එකෙ දීල තියනව .. උදාහරණයක් විදිහට Blender Software එක ගත්තොත් ඒකෙන් අපි හදන material එකේ propaties වල IOR කියල බලාගන්න පුලුවන්.
ඊළග දේ තමා IOR එක්කම එකටම යන Reflection එක...
Reflection & Refraction දෙකම එකට එක ඉන්න ඕන
Surface එකක reflection එක එහෙමත් නැත්නම් පෘෂ්ඨයේ ස්වභාවය මොන වගේද කියන එකත් අතිශය වෑදගත් කරුනක්.
උදාහරණයක් විදිහට දිලිසුම් මතුපිටක් සහිත කන්නාඩියක් වගේ පෘෂ්ඨ වල Reflection එක ඉතාම ඉහලයි වගේම, රළු පෘෂ්ඨ වල Reflection එක ඉතාමත් අඩුයි. මේ Reflection value එකත් ඒ ඒ අදාල software වල material propaties වලින් හදාගන්න පුලුවන්..
IOR සහ Reflection දෙකම එකට යන්න ඕන ඇයි ?
Reflection & Refraction කියන එක realestic ම render එකක් ලබාගන්න අතිශය වැදගත්...
උදාහරණයක් විදිහට වීදුරු ගෝලයක් ගමු,
මේකෙ පෘෂ්ඨය සුමටයි.. ඒ කියන්නෙ යම් කිසි reflective එකක් එහෙමත් නැත්නම් දිලිසුමක් තියනව.. ඒ වගේම වීදුරු වලට ආලෝකය වාතයේ ඉදන් ඇතුල් වෙද්දි Refraction එකකුත් වෙනව.. ඒ කියන්නෙ IOR value එකකුත් තියනව.... මේ reflection සහ refraction කියන value දෙකම හරියට add කරාම අපිට ඒ වීදුරු ගෝලයේ realestic ම render out එකක් ලබාගන්න පුලුවන්...
* Bonus tip : තව තවත් වැඩේ ලස්සනට කරගන්න reflection probs , light probs, Screen Space Reflection වගේ තව දේවල් ටිකක් use කරනව... එවත් අනිවාරෙන් හොයල බලන්න.
මේකෙදි කියන්න යන්නෙ content creators ලට වැදගත් දෙයක්.
YouTube එක මේ වෙද්දි Ai features creators ලට දීල තියනව එයාලගෙ වැඩ පහසු කරගන්න වගේම අලුත් content කරන්න ideas ගන්න.
" Brainstorm " කියල තමයි මේක අලුත් feature එක හඳුන්වන්නෙ.
______________________
• මොනවද මේකෙන් ගන්න පුලුවන් ප්රයොජන ?
මේකෙන් creators ලට පුලුවන් අලුතින් video එකක් කරන්න idea එකක් නැතිනම් මේක හරහා prompt එකක් ලබාදීල content එක සඳහා idea එකක් වගේම ඒකට අවශ්ය Video Titles , Description වගේම Video එකේ අන්තර් ගත කරගන්න ඕන කරුනු පවා ලබාගන්න.
ඒ වගේම තමන්ට අවශ්ය පරිදි මේ Title , Description වගේම අන්තර්ගතය ආදිය prompt එක update කරල වෙනස් කරන්නත් පුලුවන්.
ඒ වගේම තවත් විශේශම දෙයක් තමා මේකෙන් අදාල video එකට අවශ්ය Thumbnail පවා generate කරල දෙනව වගේම prompt එක හරහා Thumbnail එක අවශ්ය පරිදි වෙනස් කරගන්නත් පුලුවන්..
පහල දාලා තියෙන්නෙ මම එහෙම try කරපු thumbnails කිහිපයක්..
ඉස්සරහට මේක තවත් update වෙලා ලොකු support එකක් creators ලට ලැබෙයි...
______________________
Open Brainstorm,
YT Studio > Content > Inspiration tab