{"id":13087,"date":"2026-05-07T22:31:32","date_gmt":"2026-05-07T22:31:32","guid":{"rendered":"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/"},"modified":"2026-05-07T22:31:44","modified_gmt":"2026-05-07T22:31:44","slug":"unreal-engine-pierwszy-projekt","status":"publish","type":"post","link":"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/","title":{"rendered":"Silnik Unreal Engine dla pocz\u0105tkuj\u0105cych: praktyczny przewodnik po pierwszym projekcie"},"content":{"rendered":"\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-top\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;13087&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;top&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Silnik Unreal Engine dla pocz\u0105tkuj\u0105cych: praktyczny przewodnik po pierwszym projekcie&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\">Rate this post<\/span>\n    <\/div>\n    <\/div>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Z tego wpisu dowiesz si\u0119\u2026<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Prze\u0142\u0105cznik Spisu Tre\u015bci\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #000000;color:#000000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #000000;color:#000000\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Dlaczego_wlasnie_Unreal_Engine_i_co_jest_potrzebne_na_start\" >Dlaczego w\u0142a\u015bnie Unreal Engine i co jest potrzebne na start<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Unreal_Engine_na_tle_innych_silnikow_gier\" >Unreal Engine na tle innych silnik\u00f3w gier<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Sprzet_i_system_%E2%80%93_co_jest_naprawde_potrzebne\" >Sprz\u0119t i system \u2013 co jest naprawd\u0119 potrzebne<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Konto_Epic_Games_i_ekosystem_Unreal_Engine\" >Konto Epic Games i ekosystem Unreal Engine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#UE4_vs_UE5_%E2%80%93_ktora_wersje_wybrac_na_pierwszy_projekt\" >UE4 vs UE5 \u2013 kt\u00f3r\u0105 wersj\u0119 wybra\u0107 na pierwszy projekt<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Instalacja_Unreal_Engine_i_pierwsze_uruchomienie\" >Instalacja Unreal Engine i pierwsze uruchomienie<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Pobranie_i_instalacja_Epic_Games_Launcher\" >Pobranie i instalacja Epic Games Launcher<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Wybor_wersji_silnika_i_konfiguracja_lokalizacji\" >Wyb\u00f3r wersji silnika i konfiguracja lokalizacji<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Tworzenie_pierwszego_projektu_%E2%80%93_wybor_szablonu\" >Tworzenie pierwszego projektu \u2013 wyb\u00f3r szablonu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Ustawienia_projektu_a_typowe_problemy_przy_starcie\" >Ustawienia projektu a typowe problemy przy starcie<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Interfejs_Unreal_Engine_%E2%80%93_orientacja_w_edytorze\" >Interfejs Unreal Engine \u2013 orientacja w edytorze<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Najwazniejsze_okna_Viewport_World_Outliner_Details_Content_Browser\" >Najwa\u017cniejsze okna: Viewport, World Outliner, Details, Content Browser<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Nawigacja_w_Viewport_%E2%80%93_sterowanie_kamera_i_skroty\" >Nawigacja w Viewport \u2013 sterowanie kamer\u0105 i skr\u00f3ty<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Tryby_edycji_Select_Landscape_Foliage_Modeling\" >Tryby edycji: Select, Landscape, Foliage, Modeling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Place_Actors_%E2%80%93_dodawanie_obiektow_do_sceny\" >Place Actors \u2013 dodawanie obiekt\u00f3w do sceny<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Transformacje_precyzyjne_ustawianie_pozycji_rotacji_i_skali\" >Transformacje: precyzyjne ustawianie pozycji, rotacji i skali<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Struktura_projektu_i_porzadek_w_Content_Browser\" >Struktura projektu i porz\u0105dek w Content Browser<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Domyslne_foldery_i_dlaczego_nie_mieszac_wszystkiego_w_jednym\" >Domy\u015blne foldery i dlaczego nie miesza\u0107 wszystkiego w jednym<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Tworzenie_i_przenoszenie_assetow_bez_psucia_referencji\" >Tworzenie i przenoszenie asset\u00f3w bez psucia referencji<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Nazewnictwo_assetow_%E2%80%93_konwencje_ktore_oszczedzaja_nerwy\" >Nazewnictwo asset\u00f3w \u2013 konwencje, kt\u00f3re oszcz\u0119dzaj\u0105 nerwy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Zapisywanie_i_wersjonowanie_%E2%80%93_Save_Save_All_i_autosave\" >Zapisywanie i wersjonowanie \u2013 Save, Save All i autosave<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Pierwszy_poziom_tworzenie_prostej_sceny_grywalnej\" >Pierwszy poziom: tworzenie prostej sceny grywalnej<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Tworzenie_nowej_mapy_i_ustawienie_jako_domyslnej\" >Tworzenie nowej mapy i ustawienie jako domy\u015blnej<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Dodawanie_Player_Start_i_prostego_%E2%80%9Eplacu_zabaw%E2%80%9D\" >Dodawanie Player Start i prostego \u201eplacu zabaw\u201d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Kolizje_%E2%80%93_kiedy_postac_%E2%80%9Eprzelatuje%E2%80%9D_przez_geometry\" >Kolizje \u2013 kiedy posta\u0107 \u201eprzelatuje\u201d przez geometry<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Testowanie_poziomu_tryb_Play_i_podstawowe_opcje\" >Testowanie poziomu: tryb Play i podstawowe opcje<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Swiatlo_materialy_i_atmosfera_sceny\" >\u015awiat\u0142o, materia\u0142y i atmosfera sceny<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Typy_swiatel_Directional_Point_Spot_Sky_Light\" >Typy \u015bwiate\u0142: Directional, Point, Spot, Sky Light<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Dynamiczne_vs_statyczne_swiatlo_Movable_Stationary_Static\" >Dynamiczne vs statyczne \u015bwiat\u0142o (Movable \/ Stationary \/ Static)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Podstawowe_materialy_kolor_metalicznosc_chropowatosc\" >Podstawowe materia\u0142y: kolor, metaliczno\u015b\u0107, chropowato\u015b\u0107<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Fog_post-process_i_szybkie_%E2%80%9Epodkrecanie%E2%80%9D_klimatu\" >Fog, post-process i szybkie \u201epodkr\u0119canie\u201d klimatu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Blueprints_%E2%80%93_logika_gry_bez_programowania\" >Blueprints \u2013 logika gry bez programowania<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Event_Graph_Tick_i_myslenie_%E2%80%9Ezdarzeniami%E2%80%9D\" >Event Graph, Tick i my\u015blenie \u201ezdarzeniami\u201d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Prosty_Blueprint_otwierane_drzwi_na_triggerze\" >Prosty Blueprint: otwierane drzwi na triggerze<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Zmienne_funkcje_i_porzadek_w_Blueprintach\" >Zmienne, funkcje i porz\u0105dek w Blueprintach<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Komunikacja_miedzy_Blueprintami_cast_eventy_i_interfejsy\" >Komunikacja mi\u0119dzy Blueprintami: cast, eventy i interfejsy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Stan_gry_i_prosta_logika_zycie_punkty_warunki_wygranej\" >Stan gry i prosta logika: \u017cycie, punkty, warunki wygranej<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Prosta_rozgrywka_zbieranie_obiektow_i_cel_gry\" >Prosta rozgrywka: zbieranie obiekt\u00f3w i cel gry<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Pickup_%E2%80%93_uniwersalny_obiekt_do_zbierania\" >Pickup \u2013 uniwersalny obiekt do zbierania<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Lekki_feedback_obrot_swiecenie_dzwiek\" >Lekki feedback: obr\u00f3t, \u015bwiecenie, d\u017awi\u0119k<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Warunki_wygranej_liczba_obiektow_lub_limit_czasu\" >Warunki wygranej: liczba obiekt\u00f3w lub limit czasu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Uproszczony_interfejs_UI_w_UMG\" >Uproszczony interfejs (UI) w UMG<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Widget_Blueprint_licznik_punktow_i_czasu\" >Widget Blueprint: licznik punkt\u00f3w i czasu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Komunikaty_i_proste_ekrany_koncowe\" >Komunikaty i proste ekrany ko\u0144cowe<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Rozszerzanie_projektu_proste_wrogie_AI\" >Rozszerzanie projektu: proste wrogie AI<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Pasywny_patrol_bez_Behavior_Tree\" >Pasywny patrol bez Behavior Tree<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Proste_wykrywanie_gracza_i_reakcja\" >Proste wykrywanie gracza i reakcja<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Integracja_AI_z_istniejaca_petla_gry\" >Integracja AI z istniej\u0105c\u0105 p\u0119tl\u0105 gry<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Najczesciej_zadawane_pytania_FAQ\" >Najcz\u0119\u015bciej zadawane pytania (FAQ)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Jaki_sprzet_jest_potrzebny_zeby_zaczac_prace_z_Unreal_Engine_5\" >Jaki sprz\u0119t jest potrzebny, \u017ceby zacz\u0105\u0107 prac\u0119 z Unreal Engine 5?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-51\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Czy_Unreal_Engine_jest_dobry_dla_poczatkujacych_czy_lepiej_zaczac_od_Unity\" >Czy Unreal Engine jest dobry dla pocz\u0105tkuj\u0105cych, czy lepiej zacz\u0105\u0107 od Unity?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-52\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#UE4_czy_UE5_%E2%80%93_ktora_wersje_Unreal_Engine_wybrac_na_pierwszy_projekt\" >UE4 czy UE5 \u2013 kt\u00f3r\u0105 wersj\u0119 Unreal Engine wybra\u0107 na pierwszy projekt?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-53\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Jakie_konto_jest_potrzebne_zeby_pobrac_Unreal_Engine_i_skad_go_sciagnac\" >Jakie konto jest potrzebne, \u017ceby pobra\u0107 Unreal Engine i sk\u0105d go \u015bci\u0105gn\u0105\u0107?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-54\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Jaki_szablon_projektu_wybrac_w_Unreal_Engine_na_pierwszy_raz\" >Jaki szablon projektu wybra\u0107 w Unreal Engine na pierwszy raz?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-55\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Czy_da_sie_uczyc_Unreal_Engine_bez_znajomosci_programowania_w_C\" >Czy da si\u0119 uczy\u0107 Unreal Engine bez znajomo\u015bci programowania w C++?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-56\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Co_zrobic_gdy_Unreal_Engine_bardzo_dlugo_sie_uruchamia_lub_kompiluje_shadery\" >Co zrobi\u0107, gdy Unreal Engine bardzo d\u0142ugo si\u0119 uruchamia lub kompiluje shadery?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-57\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/07\/unreal-engine-pierwszy-projekt\/#Najwazniejsze_wnioski\" >Najwa\u017cniejsze wnioski<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Dlaczego_wlasnie_Unreal_Engine_i_co_jest_potrzebne_na_start\"><\/span>Dlaczego w\u0142a\u015bnie Unreal Engine i co jest potrzebne na start<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Unreal_Engine_na_tle_innych_silnikow_gier\"><\/span>Unreal Engine na tle innych silnik\u00f3w gier<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Unreal Engine to jeden z trzech najpopularniejszych silnik\u00f3w gier obok Unity i Godota. Dla pocz\u0105tkuj\u0105cego kluczowe jest nie to, kt\u00f3ry silnik jest \u201enajlepszy\u201d, ale kt\u00f3ry lepiej pasuje do sposobu nauki i rodzaju projekt\u00f3w, jakie chcesz tworzy\u0107.<\/p>\n<p>Unreal Engine wyr\u00f3\u017cnia si\u0119 kilkoma cechami, kt\u00f3re s\u0105 szczeg\u00f3lnie korzystne na pierwszy projekt:<\/p>\n<ul>\n<li><strong>\u015awietna grafika \u201eout of the box\u201d<\/strong> \u2013 bez skomplikowanych konfiguracji mo\u017cna uzyska\u0107 bardzo dobre efekty wizualne. To motywuje na starcie, bo prototyp wygl\u0105da od razu \u201ejak z gry\u201d.<\/li>\n<li><strong>Blueprints<\/strong> \u2013 wizualny system skryptowy, kt\u00f3ry pozwala budowa\u0107 logik\u0119 gry bez pisania kodu C++. Dla os\u00f3b bez do\u015bwiadczenia programistycznego to du\u017cy plus.<\/li>\n<li><strong>Gotowe szablony<\/strong> \u2013 First Person, Third Person, Top Down i inne, zawieraj\u0105ce ju\u017c podstawowe sterowanie, kamer\u0119 i posta\u0107. Zamiast walczy\u0107 z konfiguracj\u0105, mo\u017cesz od razu budowa\u0107 poziom.<\/li>\n<li><strong>Silne wsparcie dla 3D<\/strong> \u2013 Unreal jest szczeg\u00f3lnie dobry do gier 3D, akcji, FPS, przygod\u00f3wek, ale sprawdzi si\u0119 te\u017c w prostych projektach 2D\/\u201epseudo 2D\u201d.<\/li>\n<\/ul>\n<p>W por\u00f3wnaniu:<\/p>\n<ul>\n<li><strong>Unity<\/strong> \u2013 l\u017cejszy, \u015bwietny do 2D i mobile, opiera si\u0119 g\u0142\u00f3wnie na C#. Bardziej elastyczny, ale wymagaj\u0105cy od pocz\u0105tku programowania tekstowego.<\/li>\n<li><strong>Godot<\/strong> \u2013 open source, lekki, \u015bwietny na s\u0142absze komputery, dobra krzywa nauki, ale mniejszy ekosystem i inny \u201efeeling\u201d pracy ni\u017c w komercyjnych silnikach AAA.<\/li>\n<\/ul>\n<p>Je\u015bli chcesz nauczy\u0107 si\u0119 narz\u0119dzia, kt\u00f3re jest u\u017cywane w du\u017cych studiach, zale\u017cy ci na wizualnej jako\u015bci i nie boisz si\u0119 troch\u0119 ci\u0119\u017cszego narz\u0119dzia \u2013 Unreal Engine jest bardzo dobrym wyborem na start.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Sprzet_i_system_%E2%80%93_co_jest_naprawde_potrzebne\"><\/span>Sprz\u0119t i system \u2013 co jest naprawd\u0119 potrzebne<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Unreal Engine jest wymagaj\u0105cy sprz\u0119towo, szczeg\u00f3lnie w wersji UE5 z Lumenem i Nanite. Da si\u0119 jednak pracowa\u0107 na s\u0142abszych maszynach, je\u015bli od pocz\u0105tku ustawisz rozs\u0105dne parametry.<\/p>\n<p>Minimalna konfiguracja, przy kt\u00f3rej da si\u0119 sensownie uczy\u0107:<\/p>\n<ul>\n<li><strong>CPU<\/strong>: 4 rdzenie (np. i5 lub Ryzen 5 poprzednich generacji)<\/li>\n<li><strong>RAM<\/strong>: absolutne minimum 8 GB, ale <strong>16 GB to realne minimum komfortu<\/strong><\/li>\n<li><strong>GPU<\/strong>: karta z obs\u0142ug\u0105 DirectX 11 \/ 12 (nawet starsze GTX-y, nowsze integry radz\u0105 sobie \u201ena styk\u201d)<\/li>\n<li><strong>Dysk<\/strong>: SSD (HDD bardzo mocno spowalnia prac\u0119), wolne 50\u2013200 GB na silnik + projekty<\/li>\n<li><strong>System<\/strong>: Windows 10\/11 64-bit. UE dzia\u0142a tak\u017ce na macOS i Linuxie, ale wi\u0119kszo\u015b\u0107 tutoriali i przyk\u0142ad\u00f3w zak\u0142ada Windows.<\/li>\n<\/ul>\n<p>Na s\u0142abszej maszynie trzeba liczy\u0107 si\u0119 z tym, \u017ce:<\/p>\n<ul>\n<li>silnik b\u0119dzie uruchamia\u0107 si\u0119 d\u0142ugo (pierwsze w\u0142\u0105czenie szczeg\u00f3lnie),<\/li>\n<li>pierwsza kompilacja shader\u00f3w po w\u0142\u0105czeniu projektu mo\u017ce zaj\u0105\u0107 kilka minut,<\/li>\n<li>konieczne b\u0119dzie obni\u017canie ustawie\u0144 jako\u015bci i wy\u0142\u0105czanie zb\u0119dnych efekt\u00f3w w edytorze.<\/li>\n<\/ul>\n<p>Uwaga: przy pracy na laptopach gamingowych zwr\u00f3\u0107 uwag\u0119 na tryb zasilania i to, czy system korzysta z dedykowanej karty GPU, a nie zintegrowanej \u2013 w przeciwnym razie Unreal Engine b\u0119dzie dzia\u0142a\u0142 dramatycznie wolno.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Konto_Epic_Games_i_ekosystem_Unreal_Engine\"><\/span>Konto Epic Games i ekosystem Unreal Engine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Do pobrania Unreal Engine potrzebne jest <strong>konto Epic Games<\/strong>. To samo konto, kt\u00f3re dzia\u0142a z Fortnite czy sklepem Epic Games Store. Rejestracja jest darmowa. Po zalogowaniu z poziomu Epic Games Launcher masz dost\u0119p do kilku element\u00f3w ekosystemu:<\/p>\n<ul>\n<li><strong>Unreal Engine<\/strong> \u2013 instalacja i zarz\u0105dzanie wersjami silnika.<\/li>\n<li><strong>Marketplace<\/strong> \u2013 sklep z assetami: modelami 3D, materia\u0142ami, shaderami, pluginami, systemami AI itp. Cz\u0119\u015b\u0107 jest p\u0142atna, ale jest te\u017c du\u017co darmowych zasob\u00f3w.<\/li>\n<li><strong>Sample Projects<\/strong> \u2013 gotowe projekty pokazowe (shooter, RPG, efekt wizualny, demo technologiczne), na kt\u00f3rych mo\u017cna si\u0119 uczy\u0107 i podgl\u0105da\u0107 rozwi\u0105zania.<\/li>\n<li><strong>Dokumentacja i Learn<\/strong> \u2013 oficjalne tutoriale, kursy wideo, przyk\u0142ady. To najlepsze \u017ar\u00f3d\u0142o, je\u015bli chcesz si\u0119gn\u0105\u0107 g\u0142\u0119biej poza prosty prototyp.<\/li>\n<\/ul>\n<p>Tip: przynajmniej raz przejrzyj zak\u0142adk\u0119 \u201eFree\u201d w Marketplace. Sporo darmowych paczek (szczeg\u00f3lnie te oznaczone jako \u201eEpic Games Content\u201d) ma jako\u015b\u0107 komercyjn\u0105 i \u015bwietnie nadaje si\u0119 do nauki i prototypowania.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"UE4_vs_UE5_%E2%80%93_ktora_wersje_wybrac_na_pierwszy_projekt\"><\/span>UE4 vs UE5 \u2013 kt\u00f3r\u0105 wersj\u0119 wybra\u0107 na pierwszy projekt<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Obecnie Epic mocno stawia na Unreal Engine 5, ale UE4 nadal jest u\u017cywany w wielu komercyjnych projektach. Dla pocz\u0105tkuj\u0105cego najwa\u017cniejsze r\u00f3\u017cnice to:<\/p>\n<ul>\n<li><strong>UE4<\/strong> \u2013 bardziej \u201edojrza\u0142y\u201d, stabilny, mniej wymagaj\u0105cy sprz\u0119towo. Mniej jednak nowoczesnych system\u00f3w (Lumen, Nanite).<\/li>\n<li><strong>UE5<\/strong> \u2013 najnowszy, bardzo dobry workflow dla artyst\u00f3w, nowoczesne o\u015bwietlenie Lumen, Nanite dla geometrii o wysokim detalu. Nieco ci\u0119\u017cszy dla sprz\u0119tu, cz\u0119\u015b\u0107 funkcji wci\u0105\u017c si\u0119 zmienia mi\u0119dzy kolejnymi wersjami.<\/li>\n<\/ul>\n<p>Dla pierwszego, prostego projektu warto zainstalowa\u0107 <strong>UE5 w stabilnej wersji (release)<\/strong>. Powody:<\/p>\n<ul>\n<li>wi\u0119kszo\u015b\u0107 nowych materia\u0142\u00f3w edukacyjnych dotyczy ju\u017c UE5,<\/li>\n<li>Lumen daje \u015bwietny efekt o\u015bwietlenia bez \u017cmudnego bake\u2019owania,<\/li>\n<li>projekt stworzony teraz \u0142atwiej b\u0119dzie rozwija\u0107 w przysz\u0142o\u015bci.<\/li>\n<\/ul>\n<p>Wyj\u0105tek: je\u015bli masz naprawd\u0119 s\u0142ab\u0105 maszyn\u0119 albo chcesz korzysta\u0107 z konkretnego, starszego pluginu dost\u0119pnego tylko dla UE4 \u2013 mo\u017cesz zacz\u0105\u0107 od UE4. W przeciwnym razie UE5 jest rozs\u0105dniejszym wyborem d\u0142ugoterminowym.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Instalacja_Unreal_Engine_i_pierwsze_uruchomienie\"><\/span>Instalacja Unreal Engine i pierwsze uruchomienie<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Pobranie_i_instalacja_Epic_Games_Launcher\"><\/span>Pobranie i instalacja Epic Games Launcher<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Podstaw\u0105 jest Epic Games Launcher \u2013 centralne narz\u0119dzie do instalowania i aktualizowania Unreal Engine.<\/p>\n<p>Praktyczna sekwencja krok\u00f3w:<\/p>\n<ul>\n<li>Wejd\u017a na stron\u0119 Unreal Engine i pobierz <strong>Epic Games Launcher<\/strong> dla swojego systemu.<\/li>\n<li>Zainstaluj launcher, wybieraj\u0105c lokalizacj\u0119 na dysku SSD (zdecydowanie lepsza wydajno\u015b\u0107).<\/li>\n<li>Po instalacji zaloguj si\u0119 na konto Epic Games albo je utw\u00f3rz.<\/li>\n<li>Przejd\u017a do zak\u0142adki <strong>\u201eUnreal Engine\u201d \u2192 \u201eBiblioteka\u201d<\/strong>.<\/li>\n<\/ul>\n<p>W sekcji \u201eSilniki\u201d zobaczysz przycisk \u201e+ Dodaj wersj\u0119\u201d. Kliknij go, wybierz najnowsz\u0105 stabiln\u0105 wersj\u0119 <strong>Release<\/strong> (unikaj na start wersji <em>Preview<\/em>) i dopiero wtedy kliknij \u201eZainstaluj\u201d.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Wybor_wersji_silnika_i_konfiguracja_lokalizacji\"><\/span>Wyb\u00f3r wersji silnika i konfiguracja lokalizacji<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Przy instalacji Epic Games Launcher zapyta, gdzie zainstalowa\u0107 pliki silnika. Unreal Engine zajmuje sporo miejsca \u2013 jedna wersja mo\u017ce mie\u0107 kilkadziesi\u0105t GB. Dodatkowo projekty te\u017c rosn\u0105 w miar\u0119 pracy. Dlatego sensownie jest:<\/p>\n<ul>\n<li>Wybra\u0107 dysk SSD, na kt\u00f3rym masz co najmniej 100 GB wolnego miejsca.<\/li>\n<li>Oddzieli\u0107 <strong>lokalizacj\u0119 silnika<\/strong> (np. <em>D:UnrealEnginesUE_5.x<\/em>) od <strong>lokalizacji projekt\u00f3w<\/strong> (np. <em>D:UnrealProjects<\/em>).<\/li>\n<\/ul>\n<p>Tip: trzymaj projekty na osobnym folderze \u2013 \u0142atwiej jest p\u00f3\u017aniej robi\u0107 kopie zapasowe i przenosi\u0107 projekty mi\u0119dzy komputerami, bez konieczno\u015bci przenoszenia ca\u0142ego silnika.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tworzenie_pierwszego_projektu_%E2%80%93_wybor_szablonu\"><\/span>Tworzenie pierwszego projektu \u2013 wyb\u00f3r szablonu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Po zainstalowaniu kliknij przycisk <strong>\u201eUruchom\u201d<\/strong> przy wybranej wersji silnika. Po pierwszym starcie mo\u017ce pojawi\u0107 si\u0119 inicjalizacja i kompilacja shader\u00f3w \u2013 to normalne.<\/p>\n<p>Nast\u0119pnie zobaczysz ekran startowy z zak\u0142adk\u0105 <strong>\u201eNew Project\u201d<\/strong> \/ \u201eNowy projekt\u201d. Kluczowe decyzje na pierwszy projekt:<\/p>\n<ul>\n<li><strong>Szablon<\/strong>:\n<ul>\n<li><strong>Third Person<\/strong> \u2013 bardzo dobry na pocz\u0105tek; daje posta\u0107 z kamer\u0105 za plecami, skokiem i prost\u0105 fizyk\u0105.<\/li>\n<li><strong>First Person<\/strong> \u2013 FPS z widocznymi r\u0119kami i broni\u0105, dobry je\u015bli celujesz w strzelank\u0119.<\/li>\n<li><strong>Top Down<\/strong> \u2013 kamera z g\u00f3ry, dobra baza pod RPG lub proste gry taktyczne.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Blueprint lub C++<\/strong>:\n<ul>\n<li>Na pierwszy projekt wybierz <strong>Blueprint<\/strong>. Pozwoli ci to skupi\u0107 si\u0119 na edytorze i logice gry, a nie na konfiguracji \u015brodowiska C++.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Platforma docelowa<\/strong>:\n<ul>\n<li>Na pocz\u0105tek zaznacz <strong>Desktop \/ Console<\/strong> oraz \u201eMaximum Quality\u201d. P\u00f3\u017aniej mo\u017cna to zmieni\u0107 w ustawieniach jako\u015bci.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Starter Content<\/strong>:\n<ul>\n<li>Zaznacz <strong>w\u0142\u0105czenie Starter Content<\/strong>. Daje to zestaw podstawowych mesh\u00f3w, materia\u0142\u00f3w, d\u017awi\u0119k\u00f3w \u2013 bardzo przydatny przy nauce.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Na ko\u0144cu wpisz nazw\u0119 projektu (np. <em>UE5_PierwszyProjekt<\/em>), wybierz lokalizacj\u0119 folderu i kliknij \u201eCreate\u201d. Unreal Engine utworzy ca\u0142\u0105 struktur\u0119 projektu i wczyta domy\u015bln\u0105 map\u0119.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Ustawienia_projektu_a_typowe_problemy_przy_starcie\"><\/span>Ustawienia projektu a typowe problemy przy starcie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Przy pierwszym uruchomieniu mog\u0105 pojawi\u0107 si\u0119 b\u0142\u0119dy zwi\u0105zane z \u015brodowiskiem programistycznym. Nawet je\u015bli projekt jest Blueprintowy, Unreal lubi mie\u0107 dost\u0119pne niekt\u00f3re komponenty:<\/p>\n<ul>\n<li><strong>Visual Studio \/ Build Tools<\/strong> \u2013 na Windows warto zainstalowa\u0107 Visual Studio (Community) z workloadem \u201eDesktop development with C++\u201d albo przynajmniej Visual Studio Build Tools. Bez tego cz\u0119\u015b\u0107 operacji (np. kompilacja C++ w przysz\u0142o\u015bci) mo\u017ce si\u0119 wykrzacza\u0107.<\/li>\n<li><strong>Aktualne sterowniki GPU<\/strong> \u2013 szczeg\u00f3lnie przy kartach Nvidii i AMD. Stare sterowniki potrafi\u0105 powodowa\u0107 crashe przy uruchamianiu Viewportu.<\/li>\n<li><strong>DirectX i .NET<\/strong> \u2013 system zazwyczaj ma je wgrane, ale czasem pomocna jest reinstalacja DirectX Runtime ze strony Microsoftu.<\/li>\n<\/ul>\n<p>Je\u015bli Unreal Engine zamyka si\u0119 bez komunikatu przy \u0142adowaniu, sprawd\u017a w logach (folder <em>Saved\/Logs<\/em> w projekcie), czy nie ma informacji o braku bibliotek C++ lub problemach z GPU.<\/p>\n<figure class=\"oai-pexels-image\"><img decoding=\"async\" src=\"https:\/\/excelraport.pl\/wp-content\/uploads\/2026\/05\/mlody-programista-pracuje-nad-gra-na-kilku-monitorach-w-ciem-pexels-31862218.jpg\" alt=\"M\u0142ody programista pracuje nad gr\u0105 na kilku monitorach w ciemnym pokoju\" loading=\"lazy\" class=\"oai-pexels-image__img\" \/><figcaption>\u0179r\u00f3d\u0142o: Pexels | Autor: UMUT \ud83c\udd81\ud83c\udd70\ud83c\udd86<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Interfejs_Unreal_Engine_%E2%80%93_orientacja_w_edytorze\"><\/span>Interfejs Unreal Engine \u2013 orientacja w edytorze<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Najwazniejsze_okna_Viewport_World_Outliner_Details_Content_Browser\"><\/span>Najwa\u017cniejsze okna: Viewport, World Outliner, Details, Content Browser<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Po otwarciu projektu zobaczysz g\u0142\u00f3wne okno Unreal Editor. Niezale\u017cnie od wersji, rdze\u0144 interfejsu jest podobny.<\/p>\n<ul>\n<li><strong>Viewport<\/strong> \u2013 centralne okno sceny 3D. Tu widzisz sw\u00f3j poziom i wszystkie elementy gry. W nim poruszasz si\u0119 kamer\u0105, wybierasz obiekty i edytujesz je wizualnie.<\/li>\n<li><strong>World Outliner<\/strong> \u2013 lista wszystkich aktor\u00f3w (obiekt\u00f3w) aktualnie umieszczonych na aktywnej mapie. U\u0142atwia wyszukiwanie i organizacj\u0119, szczeg\u00f3lnie gdy w poziomie jest kilkaset element\u00f3w.<\/li>\n<li><strong>Details<\/strong> \u2013 panel w\u0142a\u015bciwo\u015bci wybranego obiektu. Po zaznaczeniu czego\u015b w Viewporcie (np. \u015bciany, \u015bwiat\u0142a, postaci) w \u201eDetails\u201d mo\u017cna zmienia\u0107 po\u0142o\u017cenie, skal\u0119, materia\u0142, logik\u0119, komponenty itd.<\/li>\n<li><strong>Content Browser<\/strong> \u2013 przegl\u0105darka asset\u00f3w projektu. To tutaj wida\u0107 foldery projektu (Blueprinty, materia\u0142y, meshe, d\u017awi\u0119ki, mapy). Z tego okna przeci\u0105gasz assety do Viewportu i tworzysz nowe zasoby.<\/li>\n<li><strong>Toolbar<\/strong> \u2013 g\u00f3rny pasek przycisk\u00f3w: <em>Play<\/em> (uruchomienie gry), <em>Save All<\/em>, <em>Build<\/em>, dost\u0119p do ustawie\u0144 projektu i r\u00f3\u017cnych narz\u0119dzi.<\/li>\n<\/ul>\n<p>Tip: je\u015bli jakie\u015b okno przypadkowo zamkniesz, przywr\u00f3cisz je z menu <strong>Window<\/strong> \u2192 wybieraj\u0105c odpowiedni panel (Content Browser, World Outliner itd.).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Nawigacja_w_Viewport_%E2%80%93_sterowanie_kamera_i_skroty\"><\/span>Nawigacja w Viewport \u2013 sterowanie kamer\u0105 i skr\u00f3ty<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sprawne poruszanie si\u0119 w Viewporcie to podstawa pracy w Unreal Engine. Standardowe sterowanie (domy\u015blne, w stylu edytor\u00f3w 3D):<\/p>\n<ul>\n<li>Przytrzymanie <strong>Prawy przycisk myszy (PPM)<\/strong> + <strong>W, A, S, D<\/strong> \u2013 lot kamery jak w grze FPS.<\/li>\n<li>Scroll myszy \u2013 przybli\u017canie\/oddalanie (w trybie orbity wok\u00f3\u0142 obiektu).<\/li>\n<li><strong>PPM + klawisze Q\/E<\/strong> \u2013 ruch w g\u00f3r\u0119\/d\u00f3\u0142.<\/li>\n<li><strong>F<\/strong> \u2013 wy\u015brodkowanie widoku na zaznaczonym obiekcie (bardzo przydatne przy pracy na wi\u0119kszych scenach).<\/li>\n<\/ul>\n<p>W prawym g\u00f3rnym rogu Viewportu znajduje si\u0119 suwak <strong>Camera Speed<\/strong> \u2013 pr\u0119dko\u015b\u0107 poruszania si\u0119 kamery. Na ma\u0142ych scenach warto j\u0105 zmniejszy\u0107, na du\u017cych \u2013 zwi\u0119kszy\u0107, \u017ceby nie \u201epe\u0142za\u0107\u201d po poziomie.<\/p>\n<p>Uwaga: Unreal ma dwa g\u0142\u00f3wne tryby widoku: <strong>Perspective<\/strong> (perspektywa) i ortho (Front, Top, Side). Na pocz\u0105tku trzymaj si\u0119 perspektywy; widoki ortho przydaj\u0105 si\u0119 przy bardziej precyzyjnym level designie.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tryby_edycji_Select_Landscape_Foliage_Modeling\"><\/span>Tryby edycji: Select, Landscape, Foliage, Modeling<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Po lewej stronie zwykle znajduje si\u0119 panel \u201ePlace Actors\u201d, a u g\u00f3ry Viewportu pasek z trybami edycji:<\/p>\n<p>Po lewej stronie zwykle znajduje si\u0119 panel \u201ePlace Actors\u201d, a u g\u00f3ry Viewportu pasek z trybami edycji: <strong>Select<\/strong>, <strong>Landscape<\/strong>, <strong>Foliage<\/strong>, <strong>Modeling<\/strong> (plus ewentualnie inne, zale\u017cnie od zainstalowanych plugin\u00f3w). Na start najcz\u0119\u015bciej korzystasz z pierwszego z nich, ale dobrze od razu wiedzie\u0107, do czego s\u0142u\u017c\u0105 pozosta\u0142e.<\/p>\n<p><strong>Select (Selection \/ Select Mode)<\/strong> to podstawowy tryb pracy. Mo\u017cesz w nim:<\/p>\n<ul>\n<li>zaznacza\u0107 aktor\u00f3w w Viewporcie i World Outlinerze,<\/li>\n<li>przesuwa\u0107, obraca\u0107 i skalowa\u0107 obiekty za pomoc\u0105 gizma (trzy kolorowe osie X\/Y\/Z),<\/li>\n<li>korzysta\u0107 z r\u00f3\u017cnych narz\u0119dzi zaznaczania \u2013 pojedyncze klikni\u0119cie, zaznaczanie prostok\u0105tem, filtrowanie po typie aktora.<\/li>\n<\/ul>\n<p>Po przej\u015bciu w inny tryb, np. Landscape, \u0142atwo wr\u00f3cisz do normalnej pracy jednym klikni\u0119ciem w ikon\u0119 \u201eSelect\u201d.<\/p>\n<p><strong>Landscape<\/strong> s\u0142u\u017cy do tworzenia i rze\u017abienia terenu (heightmapa \u2013 siatka punkt\u00f3w z informacj\u0105 o wysoko\u015bci). W tym trybie mo\u017cesz:<\/p>\n<ul>\n<li>zak\u0142ada\u0107 nowy teren o zadanej rozdzielczo\u015bci i rozmiarze \u015bwiata,<\/li>\n<li>rze\u017abi\u0107 g\u00f3ry, doliny, wyg\u0142adza\u0107 kraw\u0119dzie,<\/li>\n<li>malowa\u0107 r\u00f3\u017cne warstwy materia\u0142\u00f3w (np. trawa, ska\u0142a, \u015bnieg) po jednej powierzchni.<\/li>\n<\/ul>\n<p>Uwaga: du\u017cy landscape potrafi szybko \u201ezje\u015b\u0107\u201d wydajno\u015b\u0107 i pami\u0119\u0107. Na pierwsze pr\u00f3by lepiej tworzy\u0107 mniejsze mapy \u2013 np. ma\u0142\u0105 wysp\u0119 zamiast ca\u0142ego kontynentu.<\/p>\n<p><strong>Foliage<\/strong> to tryb malowania ro\u015blinno\u015bci i obiekt\u00f3w powtarzalnych (tzw. instancje mesh\u00f3w). Dodajesz do listy kilka mesh\u00f3w (np. drzewa, krzaki, trawy, kamienie), ustawiasz g\u0119sto\u015b\u0107, losow\u0105 skal\u0119 i rotacj\u0119, a potem malujesz nimi po terenie jak p\u0119dzlem. Daje to:<\/p>\n<ul>\n<li>zdecydowanie szybsze rozmieszczanie du\u017cej ilo\u015bci obiekt\u00f3w ni\u017c r\u0119czne stawianie,<\/li>\n<li>lepsz\u0105 wydajno\u015b\u0107 dzi\u0119ki instancjonowaniu (silnik renderuje wiele kopii tego samego obiektu w jednym wywo\u0142aniu GPU).<\/li>\n<\/ul>\n<p>Tip: nie przesadzaj z g\u0119sto\u015bci\u0105 na s\u0142abszym sprz\u0119cie \u2013 g\u0119sty las z wysokopoligonowymi drzewami szybko obni\u017cy FPS.<\/p>\n<p><strong>Modeling<\/strong> w UE5 to zestaw narz\u0119dzi do prostej edycji geometrii bezpo\u015brednio w silniku. Mo\u017cesz tworzy\u0107 podstawowe bry\u0142y (bloczek, cylinder, sfera), ci\u0105\u0107 je, wycina\u0107 otwory (Boolean), wyg\u0142adza\u0107 kraw\u0119dzie, a nawet generowa\u0107 proste UV (wsp\u00f3\u0142rz\u0119dne do mapowania tekstur). To dobre rozwi\u0105zanie na:<\/p>\n<ul>\n<li>prototypy poziom\u00f3w, zanim grafik przygotuje docelowe modele,<\/li>\n<li>proste \u201ewhiteboxy\u201d \u2013 bry\u0142owe wersje pomieszcze\u0144, korytarzy, przeszk\u00f3d.<\/li>\n<\/ul>\n<p>Je\u015bli znasz ju\u017c klasyczny system <strong>BSP\/Geometry Brushes<\/strong> z wcze\u015bniejszych wersji Unreal, Modeling Mode w du\u017cej mierze go zast\u0119puje, daj\u0105c przy tym wi\u0119ksz\u0105 kontrol\u0119 nad siatk\u0105.<\/p>\n<p>Gdy oswoisz si\u0119 z tymi trybami, du\u017co \u0142atwiej b\u0119dzie przej\u015b\u0107 do tworzenia pierwszej sceny, ustawiania \u015bwiat\u0142a i p\u00f3\u017aniejszej logiki w Blueprintach. Kombinacja sprawnego poruszania si\u0119 w Viewporcie, \u015bwiadomego u\u017cycia tryb\u00f3w edycji i porz\u0105dku w Content Browserze przek\u0142ada si\u0119 na tempo pracy znacznie bardziej ni\u017c znajomo\u015b\u0107 pojedynczych, \u201eefektownych\u201d funkcji.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Place_Actors_%E2%80%93_dodawanie_obiektow_do_sceny\"><\/span>Place Actors \u2013 dodawanie obiekt\u00f3w do sceny<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Dop\u00f3ki nic nie stoi w poziomie, nie ma z czym pracowa\u0107. Panel <strong>Place Actors<\/strong> (zwykle po lewej) to magazyn podstawowych element\u00f3w, kt\u00f3re mo\u017cna przeci\u0105ga\u0107 do Viewportu.<\/p>\n<p>Najcz\u0119\u015bciej u\u017cywane kategorie na start:<\/p>\n<ul>\n<li><strong>Basic<\/strong> \u2013 proste bry\u0142y (Cube, Sphere, Cylinder), <em>Player Start<\/em>, <em>Point Light<\/em>, pusta aktor-klasa \u201eActor\u201d. Idealne do prototypowania uk\u0142adu poziomu.<\/li>\n<li><strong>Lights<\/strong> \u2013 r\u00f3\u017cne typy \u015bwiate\u0142: punktowe, kierunkowe, reflektory (Spot Light), sky light.<\/li>\n<li><strong>Visual Effects<\/strong> \u2013 prosty dym, ogie\u0144, cz\u0105steczki (particle system \/ Niagara). Na pocz\u0105tku wystarcz\u0105 gotowe efekty ze Starter Content.<\/li>\n<li><strong>Volumes<\/strong> \u2013 obszary o specjalnym zachowaniu: <em>Blocking Volume<\/em> (blokuje ruch postaci), <em>Trigger Volume<\/em> (wyzwalacz pod logik\u0119), <em>Post Process Volume<\/em>.<\/li>\n<\/ul>\n<p>Aby doda\u0107 obiekt, przeci\u0105gnij go z listy bezpo\u015brednio do Viewportu albo do World Outlinera (wtedy pojawi si\u0119 w \u015brodku sceny lub na domy\u015blnej pozycji). U\u0142\u00f3\u017c go przy pomocy gizma (Move\/Rotate\/Scale \u2013 skr\u00f3ty <strong>W, E, R<\/strong>).<\/p>\n<p>Ustawiaj\u0105c obiekty, korzystaj z przyci\u0105gania do siatki (<strong>Grid Snapping<\/strong> \u2013 ikona magnesu w g\u00f3rnym pasku Viewportu). Na pocz\u0105tek dobre warto\u015bci to 10\u201350 jednostek; u\u0142atwia to budow\u0119 prostych, r\u00f3wnych korytarzy czy pomieszcze\u0144.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Transformacje_precyzyjne_ustawianie_pozycji_rotacji_i_skali\"><\/span>Transformacje: precyzyjne ustawianie pozycji, rotacji i skali<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ka\u017cdy aktor w scenie ma transformacje: pozycj\u0119, rotacj\u0119 i skal\u0119. Mo\u017cna je zmienia\u0107 zar\u00f3wno gizmem w Viewporcie, jak i cyfrowo w panelu <strong>Details<\/strong>.<\/p>\n<ul>\n<li><strong>Location<\/strong> \u2013 po\u0142o\u017cenie w przestrzeni (X, Y, Z). Wpisywanie r\u00f3wnych warto\u015bci (np. 0, 0, 0) u\u0142atwia ustawianie wa\u017cnych element\u00f3w dok\u0142adnie w \u015brodku sceny.<\/li>\n<li><strong>Rotation<\/strong> \u2013 obr\u00f3t w stopniach. Dla \u015bcian korytarza cz\u0119sto u\u017cywa si\u0119 k\u0105t\u00f3w 0, 90, 180, 270 \u2013 zachodzi wtedy \u201esnapowanie\u201d do siatki wizualnie i logicznie.<\/li>\n<li><strong>Scale<\/strong> \u2013 skalowanie. Utrzymuj jednolite proporcje (np. 1.0, 1.0, 1.0 lub 2.0, 2.0, 2.0), \u017ceby unikn\u0105\u0107 nienaturalnego rozci\u0105gania modeli.<\/li>\n<\/ul>\n<p>Przy wi\u0119kszych scenach pomocne bywa prze\u0142\u0105czanie przestrzeni transformacji: <strong>World<\/strong> vs <strong>Local<\/strong> (ikona globusa we Viewporcie). W trybie World osie X\/Y\/Z s\u0105 sta\u0142e wzgl\u0119dem \u015bwiata, w Local \u2013 obracaj\u0105 si\u0119 razem z obiektem.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Struktura_projektu_i_porzadek_w_Content_Browser\"><\/span>Struktura projektu i porz\u0105dek w Content Browser<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Domyslne_foldery_i_dlaczego_nie_mieszac_wszystkiego_w_jednym\"><\/span>Domy\u015blne foldery i dlaczego nie miesza\u0107 wszystkiego w jednym<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nowy projekt ma zwykle kilka predefiniowanych folder\u00f3w (np. <em>Content<\/em>, <em>StarterContent<\/em>). Je\u015bli od pocz\u0105tku wrzucisz wszystko \u201eluzem\u201d do jednego miejsca, po tygodniu trudno cokolwiek znale\u017a\u0107. Dzia\u0142a tu ta sama zasada co przy kodzie \u2013 struktura ma u\u0142atwia\u0107 nawigacj\u0119 i wsp\u00f3\u0142prac\u0119.<\/p>\n<p>Prosty, uniwersalny szkielet dla ma\u0142ego projektu:<\/p>\n<ul>\n<li><strong>Content\/Maps<\/strong> \u2013 wszystkie poziomy (pliki <em>.umap<\/em>).<\/li>\n<li><strong>Content\/Blueprints<\/strong> \u2013 logika gry (Blueprinty aktor\u00f3w, interakcji, UI).<\/li>\n<li><strong>Content\/Meshes<\/strong> \u2013 statyczne modele (Static Mesh) oraz ewentualnie podfoldery: <em>Environment<\/em>, <em>Props<\/em>, <em>Characters<\/em>.<\/li>\n<li><strong>Content\/Materials<\/strong> \u2013 materia\u0142y i ich instancje (Material Instance).<\/li>\n<li><strong>Content\/Textures<\/strong> \u2013 osobno surowe tekstury.<\/li>\n<li><strong>Content\/Audio<\/strong> \u2013 d\u017awi\u0119ki (Sound Cue, Sound Wave).<\/li>\n<li><strong>Content\/UI<\/strong> \u2013 widgety interfejsu (UMG), fonty.<\/li>\n<\/ul>\n<p>Przy wi\u0119kszych projektach foldery da si\u0119 rozbi\u0107 jeszcze bardziej (np. <em>Blueprints\/Gameplay<\/em>, <em>Blueprints\/UI<\/em>), ale taki prosty szkielet wystarcza na d\u0142ugo.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tworzenie_i_przenoszenie_assetow_bez_psucia_referencji\"><\/span>Tworzenie i przenoszenie asset\u00f3w bez psucia referencji<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Content Browser pozwala tworzy\u0107 nowe assety prawym przyciskiem myszy \u2192 <em>Create<\/em> (np. <em>Blueprint Class<\/em>, <em>Material<\/em>, <em>Level<\/em>). Kluczowe jest to, \u017ceby:<\/p>\n<ul>\n<li>tworzy\u0107 je od razu w docelowym folderze (mniej ba\u0142aganu),<\/li>\n<li>je\u015bli przenosisz istniej\u0105cy asset, robi\u0107 to <strong>wewn\u0105trz Content Browsera<\/strong> (przeci\u0105gaj\u0105c lub u\u017cywaj\u0105c \u201eMove To\u201d), a nie w eksploratorze systemu.<\/li>\n<\/ul>\n<p>Unreal zapisuje referencje (powi\u0105zania) mi\u0119dzy assetami po \u015bcie\u017ckach wewn\u0119trznych. Je\u015bli ruszysz pliki z poziomu Windowsa, mo\u017cna te powi\u0105zania zerwa\u0107. Content Browser potrafi je poprawnie zaktualizowa\u0107, o ile operacje odbywaj\u0105 si\u0119 w nim.<\/p>\n<p>Uwaga: przy przenoszeniu du\u017cych folder\u00f3w korzystaj z opcji <strong>Fix Up Redirectors in Folder<\/strong> (PPM na folderze). Czy\u015bci to wewn\u0119trzne przekierowania (redirectory) i zapobiega p\u00f3\u017aniejszym b\u0142\u0119dom przy budowaniu gry.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Nazewnictwo_assetow_%E2%80%93_konwencje_ktore_oszczedzaja_nerwy\"><\/span>Nazewnictwo asset\u00f3w \u2013 konwencje, kt\u00f3re oszcz\u0119dzaj\u0105 nerwy<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Przy kilku plikach nazwy nie maj\u0105 znaczenia. Przy kilkuset staj\u0105 si\u0119 krytyczne. Prosta, cz\u0119sto u\u017cywana konwencja to prefiksy wed\u0142ug typu assetu, np.:<\/p>\n<ul>\n<li><strong>BP_<\/strong> \u2013 Blueprint (np. <em>BP_Door<\/em>, <em>BP_Enemy<\/em>),<\/li>\n<li><strong>SM_<\/strong> \u2013 Static Mesh (np. <em>SM_Wall_Short<\/em>),<\/li>\n<li><strong>MI_<\/strong> \u2013 Material Instance (np. <em>MI_Wall_Concrete<\/em>),<\/li>\n<li><strong>M_<\/strong> \u2013 bazowy materia\u0142 (np. <em>M_Master_Wall<\/em>),<\/li>\n<li><strong>T_<\/strong> \u2013 tekstura (np. <em>T_Wall_Albedo<\/em>),<\/li>\n<li><strong>WBP_<\/strong> \u2013 widget UI (np. <em>WBP_MainMenu<\/em>),<\/li>\n<li><strong>LVL_<\/strong> lub bez prefiksu \u2013 mapy (np. <em>LVL_Prototyp<\/em>).<\/li>\n<\/ul>\n<p>Dzi\u0119ki temu Content Browser filtruje typy asset\u00f3w niemal jak IDE klasy w kodzie. Wpisanie \u201eBP_\u201d od razu pokazuje wszystkie Blueprinty, \u201eSM_\u201d \u2013 wszystkie meshe.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Zapisywanie_i_wersjonowanie_%E2%80%93_Save_Save_All_i_autosave\"><\/span>Zapisywanie i wersjonowanie \u2013 Save, Save All i autosave<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Unreal odr\u00f3\u017cnia zapis sceny (mapy) od zapisu asset\u00f3w. Dlatego w Toolbarze s\u0105 dwie wa\u017cne opcje:<\/p>\n<ul>\n<li><strong>Save Current<\/strong> \u2013 zapisuje aktualny poziom (map\u0119),<\/li>\n<li><strong>Save All<\/strong> \u2013 zapisuje wszystkie zmienione assety i poziomy.<\/li>\n<\/ul>\n<p>Przy pierwszych pr\u00f3bach warto co jaki\u015b czas r\u0119cznie klika\u0107 <strong>Save All<\/strong>. Autosave bywa pomocny, ale nie zawsze \u0142apie wszystko w najwygodniejszym momencie (zw\u0142aszcza przy ci\u0119\u017ckich projektach). Je\u015bli projekt b\u0119dzie rozwijany d\u0142u\u017cej, do\u0142\u0105cz prosty system kontroli wersji (np. Git) \u2013 Unreal ma wbudowan\u0105 integracj\u0119 z Perforce, ale do Gita dzia\u0142a bardzo dobrze zewn\u0119trzny klient.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Pierwszy_poziom_tworzenie_prostej_sceny_grywalnej\"><\/span>Pierwszy poziom: tworzenie prostej sceny grywalnej<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Tworzenie_nowej_mapy_i_ustawienie_jako_domyslnej\"><\/span>Tworzenie nowej mapy i ustawienie jako domy\u015blnej<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Zaczyna si\u0119 od pustej przestrzeni. W Content Browserze utw\u00f3rz now\u0105 map\u0119: PPM w folderze <em>Maps<\/em> \u2192 <strong>Level<\/strong>. Nazwij j\u0105 np. <em>LVL_TestArena<\/em> i otw\u00f3rz dwuklikiem.<\/p>\n<p>Aby Twoja mapa \u0142adowa\u0142a si\u0119 przy uruchomieniu gry:<\/p>\n<ol>\n<li>wejd\u017a w <strong>Edit \u2192 Project Settings<\/strong>,<\/li>\n<li>przejd\u017a do zak\u0142adki <strong>Maps &amp; Modes<\/strong>,<\/li>\n<li>w polu <strong>Editor Startup Map<\/strong> wybierz <em>LVL_TestArena<\/em>,<\/li>\n<li>w polu <strong>Game Default Map<\/strong> r\u00f3wnie\u017c wybierz t\u0119 sam\u0105 map\u0119.<\/li>\n<\/ol>\n<p>Dzi\u0119ki temu po klikni\u0119ciu <strong>Play<\/strong> gra b\u0119dzie startowa\u0107 z Twojego poziomu, a nie z domy\u015blnego przyk\u0142adu.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Dodawanie_Player_Start_i_prostego_%E2%80%9Eplacu_zabaw%E2%80%9D\"><\/span>Dodawanie Player Start i prostego \u201eplacu zabaw\u201d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u017beby w og\u00f3le m\u00f3c zagra\u0107, scenie trzeba wskaza\u0107, sk\u0105d wystartuje gracz. Z panelu <strong>Place Actors \u2192 Basic<\/strong> przeci\u0105gnij <strong>Player Start<\/strong> na poziom. Ustaw go kilka jednostek nad powierzchni\u0105, \u017ceby posta\u0107 nie zaci\u0119\u0142a si\u0119 w geometrii.<\/p>\n<p>Nast\u0119pnie zbuduj prost\u0105 aren\u0119 z klock\u00f3w:<\/p>\n<ul>\n<li>z kategorii <strong>Basic<\/strong> przeci\u0105gnij <em>Cube<\/em>, u\u017cyj gizma Move\/Scale, aby z niego zrobi\u0107 pod\u0142og\u0119 (np. skala 10\u201320 w X i Y, 1 w Z),<\/li>\n<li>dodaj cztery kolejne kostki jako \u015bciany, obr\u00f3\u0107 i przesu\u0144 tak, aby stworzy\u0107 prosty pok\u00f3j lub platform\u0119,<\/li>\n<li>dodaj kilka mniejszych klock\u00f3w jako przeszkody \/ podesty do skakania.<\/li>\n<\/ul>\n<p>Nie chodzi o wygl\u0105d, tylko o minimalny uk\u0142ad, po kt\u00f3rym mo\u017cna biega\u0107 i skaka\u0107. Je\u015bli w projekcie wybrano szablon \u201eFirst Person\u201d albo \u201eThird Person\u201d, klikni\u0119cie <strong>Play<\/strong> od razu pozwoli przetestowa\u0107 ruch postaci po tym uk\u0142adzie.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kolizje_%E2%80%93_kiedy_postac_%E2%80%9Eprzelatuje%E2%80%9D_przez_geometry\"><\/span>Kolizje \u2013 kiedy posta\u0107 \u201eprzelatuje\u201d przez geometry<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Je\u015bli po naci\u015bni\u0119ciu <strong>Play<\/strong> posta\u0107 wpada pod pod\u0142og\u0119 albo przechodzi przez \u015bcian\u0119, problemem s\u0105 kolizje. Dla prostych bry\u0142 (Cube, Cylinder) Unreal generuje je automatycznie. Problemy cz\u0119\u015bciej pojawiaj\u0105 si\u0119 przy meshach z <em>Static Mesh Editor<\/em>.<\/p>\n<p>Aby sprawdzi\u0107 kolizj\u0119 mesha:<\/p>\n<ol>\n<li>kliknij dwukrotnie na meshu w Content Browserze,<\/li>\n<li>w Static Mesh Editorze w\u0142\u0105cz podgl\u0105d kolizji \u2013 przycisk <strong>Collision<\/strong> \u2192 <em>Simple Collision<\/em>,<\/li>\n<li>je\u015bli nic nie wida\u0107, dodaj prost\u0105 kolizj\u0119, np. <em>Add Box Simplified Collision<\/em>.<\/li>\n<\/ol>\n<p>Prosta bry\u0142a kolizji cz\u0119sto jest lepsza ni\u017c bardzo szczeg\u00f3\u0142owa \u2013 wydajno\u015b\u0107 i stabilno\u015b\u0107 fizyki b\u0119d\u0105 wy\u017csze, a gracz nie utknie na niewidocznych \u201ewypustkach\u201d.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Testowanie_poziomu_tryb_Play_i_podstawowe_opcje\"><\/span>Testowanie poziomu: tryb Play i podstawowe opcje<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Przycisk <strong>Play<\/strong> w Toolbarze ma kilka wariant\u00f3w dzia\u0142ania. Na start najprzydatniejsze s\u0105:<\/p>\n<ul>\n<li><strong>Selected Viewport<\/strong> \u2013 gra uruchamia si\u0119 w tym samym oknie, w kt\u00f3rym projektujesz. Naci\u015bnij <strong>Esc<\/strong>, by wr\u00f3ci\u0107 do edycji.<\/li>\n<li><strong>New Editor Window (PIE)<\/strong> \u2013 gra startuje w osobnym oknie. Wygodne, gdy chcesz jednocze\u015bnie patrze\u0107 na scen\u0119 i rozgrywk\u0119 (np. na dw\u00f3ch monitorach).<\/li>\n<\/ul>\n<p>Pr\u0119dko\u015b\u0107 gry (Game Speed) mo\u017cna zwolni\u0107 w konsoli (~) komend\u0105 <code>slomo 0.5<\/code> \u2013 przydaje si\u0119 przy debugowaniu skok\u00f3w, kolizji czy animacji. Aby wr\u00f3ci\u0107 do normalnego czasu, u\u017cyj <code>slomo 1<\/code>.<\/p>\n<figure class=\"oai-pexels-image\"><img decoding=\"async\" src=\"https:\/\/excelraport.pl\/wp-content\/uploads\/2026\/05\/programista-pracuje-przy-komputerze-z-dwoma-monitorami-i-pod-pexels-4792726.jpg\" alt=\"Programista pracuje przy komputerze z dwoma monitorami i pod\u015bwietlan\u0105 klawiatur\u0105\" loading=\"lazy\" class=\"oai-pexels-image__img\" \/><figcaption>\u0179r\u00f3d\u0142o: Pexels | Autor: Anete Lusina<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Swiatlo_materialy_i_atmosfera_sceny\"><\/span>\u015awiat\u0142o, materia\u0142y i atmosfera sceny<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Typy_swiatel_Directional_Point_Spot_Sky_Light\"><\/span>Typy \u015bwiate\u0142: Directional, Point, Spot, Sky Light<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>O\u015bwietlenie w Unreal Engine wp\u0142ywa nie tylko na widoczno\u015b\u0107, lecz tak\u017ce na klimat i czytelno\u015b\u0107 sceny. Podstawowe typy \u015bwiate\u0142:<\/p>\n<ul>\n<li><strong>Directional Light<\/strong> \u2013 niesko\u0144czone \u017ar\u00f3d\u0142o \u015bwiat\u0142a, symuluje s\u0142o\u0144ce. Kierunek \u015bwiat\u0142a zale\u017cy od rotacji aktora, nie od jego pozycji.<\/li>\n<li><strong>Point Light<\/strong> \u2013 \u015bwiat\u0142o punktowe \u015bwiec\u0105ce we wszystkich kierunkach (np. \u017car\u00f3wka, kula energii). Parametr <em>Attenuation Radius<\/em> okre\u015bla, jak daleko si\u0119ga.<\/li>\n<li><strong>Spot Light<\/strong> \u2013 reflektor \u015bwiec\u0105cy sto\u017ckiem (latarka, reflektor sceniczny). Ma parametry k\u0105ta, intensywno\u015bci i zasi\u0119gu.<\/li>\n<li><strong>Sky Light<\/strong> \u2013 zbiera \u015bwiat\u0142o z nieba\/otoczenia i rozprasza je jako o\u015bwietlenie globalne (ambient). Bez niego cienie bywaj\u0105 zbyt czarne.<\/li>\n<\/ul>\n<p>Na prost\u0105 scen\u0119 z \u201edziennym\u201d o\u015bwietleniem wystarcz\u0105:<\/p>\n<ul>\n<li>jedno <strong>Directional Light<\/strong>,<\/li>\n<li>jeden <strong>Sky Light<\/strong>,<\/li>\n<li><strong>Sky Atmosphere<\/strong> i <strong>Exponential Height Fog<\/strong> dla lepszej g\u0142\u0119bi i koloru nieba (cz\u0119sto ju\u017c s\u0105 w domy\u015blnej scenie).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Dynamiczne_vs_statyczne_swiatlo_Movable_Stationary_Static\"><\/span>Dynamiczne vs statyczne \u015bwiat\u0142o (Movable \/ Stationary \/ Static)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ka\u017cde \u015bwiat\u0142o ma parametr <strong>Mobility<\/strong>:<\/p>\n<ul>\n<li><strong>Static<\/strong> \u2013 w pe\u0142ni \u201ewypalone\u201d (baked) do lightmap. Nie porusza si\u0119, nie rzuca dynamicznych cieni ruchomym obiektom. Bardzo wydajne.<\/li>\n<li><strong>Stationary<\/strong> \u2013 pozycja sta\u0142a, ale intensywno\u015b\u0107 i kolor mog\u0105 si\u0119 zmienia\u0107. Rzuca dynamiczne cienie dla postaci, a odbicia s\u0105 cz\u0119\u015bciowo baked.<\/li>\n<li><strong>Movable<\/strong> \u2013 w pe\u0142ni dynamiczne, mo\u017ce si\u0119 porusza\u0107 i zmienia\u0107 wszystkie parametry. Najbardziej elastyczne, ale kosztowne wydajno\u015bciowo.<\/li>\n<\/ul>\n<p>Na pocz\u0105tek najpro\u015bciej potraktowa\u0107 to jak suwak jako\u015bci vs wydajno\u015bci. Prosta zasada: je\u015bli \u015bwiat\u0142o si\u0119 rusza (latarka, pocisk, ognista kula) \u2013 ustaw <strong>Movable<\/strong>. Je\u015bli stoi w miejscu, ale ma reagowa\u0107 np. na prze\u0142\u0105cznik (\u015bwiat\u0142o w pokoju, latarnia uliczna) \u2013 <strong>Stationary<\/strong>. Elementy ca\u0142kowicie statyczne, kt\u00f3re nigdy si\u0119 nie zmieni\u0105 (\u015bwiat\u0142o dzienne w ma\u0142ej scenie, lampy dekoracyjne w tle) spokojnie mog\u0105 zosta\u0107 <strong>Static<\/strong> i trafi\u0107 do bake\u2019a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Podstawowe_materialy_kolor_metalicznosc_chropowatosc\"><\/span>Podstawowe materia\u0142y: kolor, metaliczno\u015b\u0107, chropowato\u015b\u0107<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Materia\u0142 w Unreal to ma\u0142y shader opisuj\u0105cy, jak powierzchnia reaguje na \u015bwiat\u0142o. W najprostszej wersji pracujesz z trzema kluczowymi wej\u015bciami: <strong>Base Color<\/strong> (kolor powierzchni bez \u015bwiat\u0142a), <strong>Metallic<\/strong> (0 \u2013 dielektryk, np. plastik, drewno; 1 \u2013 metal) oraz <strong>Roughness<\/strong> (0 \u2013 lustro, 1 \u2013 bardzo matowa powierzchnia). W praktyce: b\u0142yszcz\u0105ca stal to Base Color w odcieniu szaro\u015bci, Metallic blisko 1 i niskie Roughness, a asfalt \u2013 Metallic 0 z wysokim Roughness.<\/p>\n<p>Do szybkiego prototypowania wystarczy jeden og\u00f3lny materia\u0142, z kt\u00f3rego zrobisz kilka instancji materia\u0142\u00f3w (Material Instance). Bazowy materia\u0142 mo\u017ce mie\u0107 parametry (Scalar i Vector Parameters) dla koloru i chropowato\u015bci, a instancje zmieni\u0105 tylko ich warto\u015bci. Dzi\u0119ki temu jednym klikni\u0119ciem podmieniasz wygl\u0105d ca\u0142ej klasy obiekt\u00f3w bez rekompilacji shader\u00f3w. Uwaga: nie kopiuj materia\u0142\u00f3w przez duplikacj\u0119 bez powodu \u2013 instancje s\u0105 znacznie l\u017cejsze w utrzymaniu.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Fog_post-process_i_szybkie_%E2%80%9Epodkrecanie%E2%80%9D_klimatu\"><\/span>Fog, post-process i szybkie \u201epodkr\u0119canie\u201d klimatu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nawet bardzo prosta scena zyskuje, gdy dodasz mg\u0142\u0119 i post-process. <strong>Exponential Height Fog<\/strong> nadaje odleg\u0142ym obiektom lekk\u0105 mgie\u0142k\u0119 i separuje plany (foreground\/background), co poprawia czytelno\u015b\u0107. G\u0119sto\u015b\u0107 i kolor mg\u0142y ustawisz w jego parametrach \u2013 ch\u0142odny, lekko niebieski odcie\u0144 daje poranek, ciep\u0142y pomara\u0144czowy sugeruje zach\u00f3d s\u0142o\u0144ca lub stylizowan\u0105 scen\u0119.<\/p>\n<p>Drugi mocny element to <strong>Post Process Volume<\/strong>. Po dodaniu do sceny ustaw <em>Infinite Extent (Unbound)<\/em>, \u017ceby efekty dzia\u0142a\u0142y wsz\u0119dzie. W \u015brodku znajdziesz m.in. ekspozycj\u0119 (Auto Exposure), nasycenie kolor\u00f3w (Color Grading), Bloom, Vignette. Na start dobrze jest ograniczy\u0107 automatyczn\u0105 ekspozycj\u0119 (np. w\u0105ski zakres min\/max brightness), bo domy\u015blne \u201epompowanie\u201d jasno\u015bci cz\u0119sto przeszkadza przy prototypowaniu. Subtelne podbicie kontrastu i lekkie \u015bciemnienie sceny potrafi zrobi\u0107 ogromn\u0105 r\u00f3\u017cnic\u0119 bez ruszania \u015bwiate\u0142.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Blueprints_%E2%80%93_logika_gry_bez_programowania\"><\/span>Blueprints \u2013 logika gry bez programowania<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Event_Graph_Tick_i_myslenie_%E2%80%9Ezdarzeniami%E2%80%9D\"><\/span>Event Graph, Tick i my\u015blenie \u201ezdarzeniami\u201d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Blueprinty to wizualne skrypty, kt\u00f3re reaguj\u0105 na zdarzenia (events). W ka\u017cdym Blueprintcie znajdziesz zak\u0142adk\u0119 <strong>Event Graph<\/strong> \u2013 tam l\u0105duj\u0105 nody startowe takie jak <strong>Event BeginPlay<\/strong> (wywo\u0142ywany raz przy starcie aktora) czy <strong>Event Tick<\/strong> (wywo\u0142ywany co klatk\u0119). Zamiast pisa\u0107 \u201ew p\u0119tli sprawdzaj X\u201d, my\u015blisz raczej: \u201egdy co\u015b si\u0119 stanie, wykonaj sekwencj\u0119 akcji\u201d.<\/p>\n<p>Tip: nie nadu\u017cywaj <strong>Event Tick<\/strong> w pierwszych projektach. Kusi, \u017ceby wszystko tam sprawdza\u0107, ale to najszybsza droga do niepotrzebnego obci\u0105\u017cenia. Du\u017co lepiej zareagowa\u0107 na konkretne eventy (np. wej\u015bcie w trigger, naci\u015bni\u0119cie klawisza, zako\u0144czenie animacji) ni\u017c odpytywa\u0107 stan \u015bwiata co klatk\u0119.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Prosty_Blueprint_otwierane_drzwi_na_triggerze\"><\/span>Prosty Blueprint: otwierane drzwi na triggerze<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Dobry pierwszy eksperyment to drzwi, kt\u00f3re otwieraj\u0105 si\u0119, gdy gracz podchodzi. W Content Browserze utw\u00f3rz <strong>Blueprint Class \u2192 Actor<\/strong> i nazwij go np. <em>BP_Door<\/em>. W zak\u0142adce <strong>Components<\/strong> dodaj <em>Static Mesh<\/em> jako drzwi oraz <em>Box Collision<\/em> jako stref\u0119 wykrywania. Box ustaw tak, aby obejmowa\u0142 obszar przed drzwiami.<\/p>\n<p>Przejd\u017a do <strong>Event Graph<\/strong> i dodaj logik\u0119:<\/p>\n<ol>\n<li>Zaznacz <em>Box Collision<\/em>, w Details znajd\u017a sekcj\u0119 <strong>Events<\/strong> i kliknij przy <em>OnComponentBeginOverlap<\/em> oraz <em>OnComponentEndOverlap<\/em>, aby wygenerowa\u0107 nody zdarze\u0144.<\/li>\n<li>Na <strong>BeginOverlap<\/strong> sprawd\u017a, czy <em>Other Actor<\/em> to gracz (np. <em>Cast To<\/em> twoja klasa postaci lub sprawdzenie tagu), a je\u015bli tak \u2013 ustaw zmienn\u0105 <em>IsDoorOpen<\/em> na <code>true<\/code> i wywo\u0142aj animacj\u0119 otwarcia.<\/li>\n<li>Na <strong>EndOverlap<\/strong> w analogiczny spos\u00f3b ustaw <em>IsDoorOpen<\/em> na <code>false<\/code> i zawo\u0142aj animacj\u0119 zamkni\u0119cia.<\/li>\n<\/ol>\n<p>Do samego ruchu drzwi u\u017cyj <strong>Timeline<\/strong>. Dodaj komponent Timeline w Blueprintcie, otw\u00f3rz go i stw\u00f3rz pojedynczy <em>Float Track<\/em> z warto\u015bciami od 0 do 1 w czasie 1\u20132 sekund. W Event Graph pod\u0142\u0105cz <em>Play<\/em> Timeline do otwierania, a <em>Reverse<\/em> do zamykania. W trakcie odtwarzania Timeline warto\u015b\u0107 float s\u0142u\u017cy jako wsp\u00f3\u0142czynnik interpolacji (0 \u2013 zamkni\u0119te, 1 \u2013 otwarte). Na wyj\u015bciu <em>Update<\/em> u\u017cyj noda <strong>Lerp (Rotator)<\/strong> lub <strong>Lerp (Vector)<\/strong>, \u017ceby p\u0142ynnie przej\u015b\u0107 z pozycji\/rotacji zamkni\u0119tej do otwartej i ustawiaj transform komponentu drzwi funkcj\u0105 <em>SetRelativeRotation<\/em> lub <em>SetRelativeLocation<\/em>.<\/p>\n<p>Je\u015bli chcesz, \u017ceby drzwi reagowa\u0142y na przycisk, a nie sam\u0105 obecno\u015b\u0107 gracza, dodaj do projektu prost\u0105 map\u0119 wej\u015b\u0107 (Project Settings \u2192 Input). Zdefiniuj akcj\u0119, np. <em>Interact<\/em>, przypisz jej klawisz <kbd>E<\/kbd>, a w Blueprintcie gracza obs\u0142u\u017c <strong>Input Action Interact<\/strong>. Gdy akcja si\u0119 wywo\u0142a, zr\u00f3b kr\u00f3tkiego trace\u2019a (np. <em>Line Trace By Channel<\/em>) do przodu od kamery i sprawd\u017a, czy trafiasz w aktora typu <em>BP_Door<\/em>. Je\u015bli tak, zawo\u0142aj na nim event otwieraj\u0105cy\/zamykaj\u0105cy (np. zdefiniuj w drzwiach <em>Custom Event ToggleDoor<\/em> oznaczony jako <em>Call In Editor<\/em> lub <em>Public<\/em> i wywo\u0142uj go z gracza).<\/p>\n<p>Takie proste drzwi \u0142\u0105cz\u0105 kilka kluczowych element\u00f3w: kolizj\u0119, komponenty, eventy, Timeline i komunikacj\u0119 mi\u0119dzy Blueprintami. Gdy to dzia\u0142a stabilnie, \u0142atwo rozbudowa\u0107 system: doda\u0107 d\u017awi\u0119k otwierania (Audio Component), op\u00f3\u017anienie zamkni\u0119cia, blokad\u0119 na klucz, a nawet prosty interfejs pokazuj\u0105cy \u201eNaci\u015bnij E, aby otworzy\u0107\u201d. Od tego poziomu kolejne interaktywne obiekty \u2013 przyciski, windy, skrzynki z lootem \u2013 sk\u0142ada si\u0119 ju\u017c z tych samych klock\u00f3w.<\/p>\n<p>Pierwszy projekt w Unreal Engine nie musi wygl\u0105da\u0107 jak gotowa gra; wa\u017cniejsze, by przej\u015b\u0107 ca\u0142y podstawowy cykl: stworzy\u0107 poziom, pouk\u0142ada\u0107 assety, ustawi\u0107 \u015bwiat\u0142o, nada\u0107 prostym obiektom materia\u0142y i doda\u0107 cho\u0107 odrobin\u0119 logiki w Blueprintach. Po kilku takich iteracjach edytor przestaje by\u0107 \u201emagiczn\u0105 czarn\u0105 skrzynk\u0105\u201d, a zaczyna przypomina\u0107 zestaw narz\u0119dzi, w kt\u00f3rym wiesz, po co si\u0119gasz i dlaczego dany element dzia\u0142a w okre\u015blony spos\u00f3b.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Zmienne_funkcje_i_porzadek_w_Blueprintach\"><\/span>Zmienne, funkcje i porz\u0105dek w Blueprintach<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nawet w ma\u0142ym projekcie Blueprinty szybko puchn\u0105. Kilka prostych zasad na start oszcz\u0119dzi sporo nerw\u00f3w, gdy co\u015b przestaje dzia\u0142a\u0107.<\/p>\n<p>Najpierw zmienne. Ka\u017cd\u0105 now\u0105 warto nazwa\u0107 tak, by po miesi\u0105cu nadal by\u0142o jasne, co robi. Popularny schemat to prefiks typu i \u201ecelu\u201d, np. <code>bIsDoorOpen<\/code> dla boola (b \u2013 boolean), <code>CurrentHealth<\/code> dla liczby, <code>TargetActor<\/code> dla referencji. Domy\u015blne <em>NewVar_0<\/em> pr\u0119dzej czy p\u00f3\u017aniej zem\u015bci si\u0119 debugowaniem po nocy.<\/p>\n<p>Drugie narz\u0119dzie to funkcje i makra. Je\u015bli powtarzasz ten sam zestaw nod\u00f3w w trzech miejscach, wyci\u0105gnij go do funkcji (zak\u0142adka <strong>Functions<\/strong> w lewym panelu Blueprinta). Funkcja przyjmuje wej\u015bcia, zwraca wynik i nie ma dost\u0119pu do Event Graphu. Dobrze si\u0119 nadaje do czystych oblicze\u0144 lub pobierania danych: na przyk\u0142ad przeliczenie procenta \u017cycia z aktualnych i maksymalnych punkt\u00f3w HP. Makra (zak\u0142adka <strong>Macros<\/strong>) s\u0105 bardziej elastyczne \u2013 mog\u0105 mie\u0107 wiele punkt\u00f3w wej\u015bcia i wyj\u015bcia, ale u\u017cywaj ich raczej do \u201ekontrolowania przep\u0142ywu\u201d (branchowanie, powtarzanie wzorc\u00f3w), nie do wszystkiego.<\/p>\n<p>Kiedy Event Graph zaczyna wygl\u0105da\u0107 jak talerz spaghetti, zwykle brakuje <strong>Sequence<\/strong>, <strong>Reroute Node<\/strong> i <strong>Comment<\/strong>:<\/p>\n<ul>\n<li><strong>Sequence<\/strong> pozwala odpali\u0107 kilka ga\u0142\u0119zi logiki po kolei zamiast robi\u0107 \u0142a\u0144cuch nod\u00f3w z jednego pinu <em>Exec<\/em>.<\/li>\n<li><strong>Reroute Node<\/strong> (prawy klik na przewodzie \u2192 <em>Reroute Node<\/em>) porz\u0105dkuje kabelki i u\u0142atwia \u015bledzenie przep\u0142ywu.<\/li>\n<li>Kolorowe <strong>komentarze<\/strong> (prawy przycisk myszy \u2192 <em>Add Comment<\/em>) grupuj\u0105 logiczne fragmenty: \u201eSprawdzenie wej\u015bcia\u201d, \u201eObs\u0142uga animacji\u201d, \u201eWywo\u0142anie d\u017awi\u0119k\u00f3w\u201d.<\/li>\n<\/ul>\n<p>Tip: gdy co\u015b nie dzia\u0142a, pierwszy krok debugowania to <strong>Print String<\/strong> i obserwacja, kt\u00f3ry fragment logiki si\u0119 w og\u00f3le wykonuje. Dopiero p\u00f3\u017aniej zagl\u0105daj w szczeg\u00f3\u0142y.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Komunikacja_miedzy_Blueprintami_cast_eventy_i_interfejsy\"><\/span>Komunikacja mi\u0119dzy Blueprintami: cast, eventy i interfejsy<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Drzwi reaguj\u0105ce na gracza to klasyczny przyk\u0142ad potrzeby komunikacji mi\u0119dzy Blueprintami. Najprostsze podej\u015bcie to <strong>Cast To<\/strong> \u2013 maj\u0105c referencj\u0119 do aktora (np. wynik overlapa albo trace\u2019a), u\u017cywasz noda <em>Cast To BP_Door<\/em> i po udanym castowaniu wo\u0142asz funkcj\u0119 lub event na drzwiach. Dzia\u0142a, ale mocno uzale\u017cnia jedn\u0105 klas\u0119 od drugiej.<\/p>\n<p>Lepszy krok w stron\u0119 elastyczno\u015bci to <strong>Blueprint Interfaces<\/strong>. Tworzysz nowy <em>Blueprint Interface<\/em> z abstrakcyjn\u0105 funkcj\u0105, np. <em>Interact<\/em> z parametrem typu <code>Actor<\/code> (kto zainicjowa\u0142 interakcj\u0119). Nast\u0119pnie implementujesz ten interfejs w klasach, kt\u00f3re maj\u0105 reagowa\u0107: drzwi, d\u017awignia, skrzynia. Ka\u017cda klasa Blueprint dostaje w\u0142asn\u0105 implementacj\u0119 funkcji <em>Interact<\/em>, ale gracz nie musi zna\u0107 ich typu \u2013 wykonuje po prostu \u201e<em>Interact<\/em> na tym, w kogo trafi\u0142 trace\u201d.<\/p>\n<p>Do jednokierunkowej komunikacji (np. guzik, kt\u00f3ry informuje wind\u0119, \u017ce ma ruszy\u0107) mo\u017cesz u\u017cy\u0107 tak\u017ce <strong>Event Dispatchers<\/strong>. Winda ma dispatcher typu \u201e<em>OnButtonPressed<\/em>\u201d, a przycisk, po naci\u015bni\u0119ciu, wywo\u0142uje go na referencji windy. Dobre rozwi\u0105zanie, gdy wiele obiekt\u00f3w s\u0142ucha jednego \u017ar\u00f3d\u0142a zdarze\u0144.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Stan_gry_i_prosta_logika_zycie_punkty_warunki_wygranej\"><\/span>Stan gry i prosta logika: \u017cycie, punkty, warunki wygranej<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Po opanowaniu pojedynczych interakcji kolejnym logicznym krokiem jest globalny stan gry: punkty, liczba zebranych obiekt\u00f3w, stan misji. W Unreal dobrym miejscem na takie dane jest <strong>Game Mode<\/strong> oraz <strong>Game Instance<\/strong>.<\/p>\n<p><strong>Game Mode<\/strong> (Blueprint klasy <em>GameModeBase<\/em> lub <em>GameMode<\/em>) zarz\u0105dza logik\u0105 konkretnej rozgrywki: jak\u0105 klas\u0119 postaci u\u017cy\u0107, jaki HUD, jak reagowa\u0107 na \u015bmier\u0107 gracza. Logika \u201eje\u015bli zebra\u0142e\u015b 5 kluczy \u2013 otw\u00f3rz wyj\u015bcie\u201d mo\u017ce \u017cy\u0107 w\u0142a\u015bnie tutaj. <strong>Game Instance<\/strong> jest persistent \u2013 nie resetuje si\u0119 przy zmianie mapy. Tam mo\u017cesz przechowywa\u0107 dane mi\u0119dzy poziomami, np. wynik punktowy czy odblokowane levele.<\/p>\n<p>Prosty przyk\u0142ad: system punkt\u00f3w za zbieranie obiekt\u00f3w.<\/p>\n<ol>\n<li>W Game Mode dodaj zmienn\u0105 <code>Score<\/code> typu <em>int<\/em> i funkcj\u0119 <em>AddScore<\/em>, kt\u00f3ra przyjmuje warto\u015b\u0107 i dodaje j\u0105 do <code>Score<\/code>. W \u015brodku mo\u017cesz te\u017c wywo\u0142a\u0107 event od\u015bwie\u017caj\u0105cy UI.<\/li>\n<li>W Blueprintcie monety (np. <em>BP_Coin<\/em>) obs\u0142u\u017c overlap z graczem. Po wykryciu gracza pobierz aktualny Game Mode (n\u00f3d <strong>Get Game Mode<\/strong>, potem <em>Cast To<\/em> twoja klasa) i wywo\u0142aj <em>AddScore<\/em> z okre\u015blon\u0105 warto\u015bci\u0105, a nast\u0119pnie zniszcz monet\u0119 (<em>DestroyActor<\/em>).<\/li>\n<li>W HUD lub Widget Blueprint w funkcji <em>Tick<\/em> UI (albo przez event dispatchera) aktualizuj tekst wy\u015bwietlaj\u0105cy wynik na podstawie <code>Score<\/code> z Game Mode.<\/li>\n<\/ol>\n<p>Gdy punkt\u00f3w osi\u0105gniesz okre\u015blon\u0105 liczb\u0119, Game Mode mo\u017ce zawo\u0142a\u0107 funkcj\u0119 wygranej: zatrzyma\u0107 sterowanie, odpali\u0107 animacj\u0119 kamery, przej\u015b\u0107 do innej mapy lub wy\u015bwietli\u0107 ekran \u201eYou Win\u201d. Taka struktura skaluje si\u0119 lepiej ni\u017c przechowywanie wszystkich danych w postaci gracza.<\/p>\n<figure class=\"oai-pexels-image\"><img decoding=\"async\" src=\"https:\/\/excelraport.pl\/wp-content\/uploads\/2026\/05\/ciemne-biuro-domowe-z-dwoma-monitorami-i-komputerem-do-gier-pexels-1038916.jpg\" alt=\"Ciemne biuro domowe z dwoma monitorami i komputerem do gier\" loading=\"lazy\" class=\"oai-pexels-image__img\" \/><figcaption>\u0179r\u00f3d\u0142o: Pexels | Autor: FOX ^.\u11bd.^= \u222b<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Prosta_rozgrywka_zbieranie_obiektow_i_cel_gry\"><\/span>Prosta rozgrywka: zbieranie obiekt\u00f3w i cel gry<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Pickup_%E2%80%93_uniwersalny_obiekt_do_zbierania\"><\/span>Pickup \u2013 uniwersalny obiekt do zbierania<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Dobrym \u201epierwszym projektem\u201d jest scena, w kt\u00f3rej gracz zbiera obiekty na czas. Wsp\u00f3lny szablon to <strong>Pickup<\/strong> \u2013 aktor, kt\u00f3ry reaguje na dotkni\u0119cie przez gracza i wywo\u0142uje okre\u015blon\u0105 akcj\u0119 (dodanie punkt\u00f3w, \u017cycia, amunicji).<\/p>\n<p>Najprostsza implementacja:<\/p>\n<ul>\n<li>Nowy <strong>Blueprint Class \u2192 Actor<\/strong>, np. <em>BP_Pickup<\/em>.<\/li>\n<li>Komponenty: <em>Static Mesh<\/em> (model obiektu) oraz <em>Sphere Collision<\/em> albo <em>Box Collision<\/em> do wykrywania wej\u015bcia gracza.<\/li>\n<li>W kolizji \u2013 <em>OnComponentBeginOverlap<\/em> z prost\u0105 logik\u0105: sprawd\u017a, czy <em>Other Actor<\/em> to gracz; je\u015bli tak, wywo\u0142aj funkcj\u0119 <em>OnPickedUp<\/em> (mo\u017ce by\u0107 <em>Event Dispatcher<\/em> albo custom event) i zniszcz aktora.<\/li>\n<\/ul>\n<p>W praktyce dobrze od razu pomy\u015ble\u0107 o rozszerzalno\u015bci. Zamiast twardo wbija\u0107 logik\u0119 \u201edodaj 1 punkt\u201d, wystaw parametr <code>PickupType<\/code> (enum, np. <em>Score<\/em>, <em>Health<\/em>, <em>Ammo<\/em>) i <code>Value<\/code> (ile doda\u0107). W Event Graph zr\u00f3b <em>Switch on PickupType<\/em> i w zale\u017cno\u015bci od typu wykonaj odpowiedni\u0105 ga\u0142\u0105\u017a. Dzi\u0119ki temu ten sam Blueprint pos\u0142u\u017cy jako moneta, apteczka i nab\u00f3j \u2013 r\u00f3\u017cni\u0105 si\u0119 tylko warto\u015bciami w Details.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Lekki_feedback_obrot_swiecenie_dzwiek\"><\/span>Lekki feedback: obr\u00f3t, \u015bwiecenie, d\u017awi\u0119k<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nawet prosty pickup powinien \u201em\u00f3wi\u0107\u201d, \u017ce mo\u017cna go zebra\u0107. Kilka drobiazg\u00f3w robi spor\u0105 r\u00f3\u017cnic\u0119:<\/p>\n<ul>\n<li>Obr\u00f3t w miejscu \u2013 w <strong>Event Tick<\/strong> lub przez <em>Timeline<\/em> zwi\u0119kszaj rotacj\u0119 wok\u00f3\u0142 osi Z o sta\u0142\u0105 warto\u015b\u0107. Przy ma\u0142ej liczbie pickup\u00f3w mo\u017cesz u\u017cy\u0107 Tick, przy wi\u0119kszej lepiej przej\u015b\u0107 na animacj\u0119 w <em>Material<\/em> lub prosty <em>Rotating Movement Component<\/em>.<\/li>\n<li>\u015awiec\u0105cy materia\u0142 \u2013 lekki emissive kolor (np. material parameter <em>EmissivePower<\/em>) sprawia, \u017ce obiekt jest widoczny nawet w ciemniejszych miejscach.<\/li>\n<li>D\u017awi\u0119k przy podniesieniu \u2013 w momencie zbierania odpal <em>Play Sound at Location<\/em> lub do\u0142\u0105cz <em>Audio Component<\/em> do aktora i wywo\u0142aj <em>Play<\/em>.<\/li>\n<\/ul>\n<p>Uwaga: przy wi\u0119kszej liczbie podobnych obiekt\u00f3w lepiej zbudowa\u0107 jeden og\u00f3lny materia\u0142 + instancje materia\u0142\u00f3w, ni\u017c u\u017cywa\u0107 zupe\u0142nie osobnych shader\u00f3w. Unreal szybciej poradzi sobie z batchowaniem takich draw calli.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Warunki_wygranej_liczba_obiektow_lub_limit_czasu\"><\/span>Warunki wygranej: liczba obiekt\u00f3w lub limit czasu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Maj\u0105c ju\u017c pickupy, mo\u017cesz zbudowa\u0107 prost\u0105 p\u0119tl\u0119 rozgrywki. Dwa bazowe warianty:<\/p>\n<ol>\n<li><strong>Zbierz wszystkie obiekty<\/strong> \u2013 Game Mode trzyma liczb\u0119 <code>TotalPickups<\/code> i <code>CollectedPickups<\/code>. Przy starcie poziomu (Event BeginPlay) mo\u017cesz przeliczy\u0107 wszystkie aktory klasy <em>BP_Pickup<\/em> (<em>Get All Actors Of Class<\/em>) i zapisa\u0107 wynik w <code>TotalPickups<\/code>. Za ka\u017cdym podniesieniem pickupa wywo\u0142uj w Game Mode funkcj\u0119 <em>RegisterPickupCollected<\/em>, kt\u00f3ra zwi\u0119ksza <code>CollectedPickups<\/code> i sprawdza, czy <code>CollectedPickups &gt;= TotalPickups<\/code>. Je\u015bli tak, odpal funkcj\u0119 wygranej.<\/li>\n<li><strong>Zbieraj jak najwi\u0119cej na czas<\/strong> \u2013 Game Mode ma zmienn\u0105 <code>RemainingTime<\/code>. W Event Tick Game Mode odejmuj <code>DeltaSeconds<\/code>, a po zej\u015bciu do zera zatrzymuj sterowanie i pokazuj wynik. Dla optymalizacji mo\u017cesz u\u017cy\u0107 <strong>Timer<\/strong> zamiast logiki w Tick (n\u00f3d <em>Set Timer by Function Name<\/em> lub <em>Set Timer by Event<\/em>).<\/li>\n<\/ol>\n<p>W obu przypadkach UI (Widget Blueprint) od\u015bwie\u017ca teksty na podstawie warto\u015bci z Game Mode: \u201eZebrane: X\/Y\u201d albo \u201eCzas: 00:30\u201d. Sterowanie czasem i punktami w jednym miejscu (Game Mode) u\u0142atwia rozszerzenie projektu o kolejne poziomy czy warunki.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Uproszczony_interfejs_UI_w_UMG\"><\/span>Uproszczony interfejs (UI) w UMG<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Widget_Blueprint_licznik_punktow_i_czasu\"><\/span>Widget Blueprint: licznik punkt\u00f3w i czasu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>UMG (Unreal Motion Graphics) to system tworzenia UI w edytorze. Na start wystarczy pojedynczy <strong>Widget Blueprint<\/strong> z dwoma tekstami i prostym bindem do danych.<\/p>\n<p>Tworzenie podstawowego HUD-u:<\/p>\n<ul>\n<li>Utw\u00f3rz <strong>Widget Blueprint<\/strong> typu <em>User Widget<\/em>, np. <em>WBP_HUD<\/em>.<\/li>\n<li>W zak\u0142adce <em>Designer<\/em> przeci\u0105gnij z palety element <strong>Text<\/strong> na Canvas. Ustaw kotwic\u0119 (Anchor) w g\u00f3rnym lewym rogu, pozycj\u0119 np. 20, 20. Drugi Text umie\u015b\u0107 pod nim.<\/li>\n<li>W zak\u0142adce <em>Graph<\/em> dodaj referencje do Game Mode i ewentualnie do Game Instance, \u017ceby m\u00f3c odczyta\u0107 aktualne warto\u015bci punkt\u00f3w i czasu.<\/li>\n<\/ul>\n<p>Do aktualizacji tekstu masz dwie drogi:<\/p>\n<ol>\n<li><strong>Bindy<\/strong> \u2013 zaznacz Text, w Details przy polu <em>Text<\/em> kliknij Bind \u2192 Create Binding. Powstanie funkcja, w kt\u00f3rej mo\u017cesz pobra\u0107 aktualny wynik i z\u0142o\u017cy\u0107 stringa. W ma\u0142ym projekcie jest to szybkie rozwi\u0105zanie, cho\u0107 przy wielu elementach UI bindy potrafi\u0105 generowa\u0107 dodatkowe wywo\u0142ania.<\/li>\n<li><strong>Manualne od\u015bwie\u017canie<\/strong> \u2013 Game Mode, po zmianie punkt\u00f3w, wo\u0142a funkcj\u0119 wewn\u0105trz widgetu (np. <em>UpdateScoreDisplay<\/em>), kt\u00f3ra na Text ustawia <em>SetText<\/em> z now\u0105 warto\u015bci\u0105. Czytelniejsze, gdy UI robi si\u0119 bardziej z\u0142o\u017cone.<\/li>\n<\/ol>\n<p>Wy\u015bwietlenie HUD-u w grze odbywa si\u0119 w dw\u00f3ch krokach w klasie gracza lub kontrolera:<\/p>\n<ol>\n<li>W <strong>BeginPlay<\/strong> utw\u00f3rz widget (<em>Create Widget<\/em>, wybierz <em>WBP_HUD<\/em>) i zapisz go do zmiennej.<\/li>\n<li>Dodaj go do ekranu (<em>Add to Viewport<\/em>) i ewentualnie ustaw input mode na <em>Game Only<\/em> lub <em>Game and UI<\/em> w zale\u017cno\u015bci od wymaga\u0144.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Komunikaty_i_proste_ekrany_koncowe\"><\/span>Komunikaty i proste ekrany ko\u0144cowe<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Poza sta\u0142ym HUD-em przydaj\u0105 si\u0119 chwilowe komunikaty: \u201eZebrano wszystkie obiekty\u201d, \u201eKoniec czasu\u201d, \u201eNaci\u015bnij R, aby zrestartowa\u0107\u201d. Najpro\u015bciej zbudowa\u0107 dodatkowy Widget Blueprint, np. <em>WBP_EndScreen<\/em> z du\u017cym tekstem i przyciskiem lub ikonk\u0105 restartu.<\/p>\n<p>Gdy warunek wygranej\/przegranej si\u0119 spe\u0142ni (w Game Mode), mo\u017cesz:<\/p>\n<ul>\n<li>Utworzy\u0107 i doda\u0107 do Viewportu widget ko\u0144cowy.<\/li>\n<li>Zablokowa\u0107 sterowanie gracza (<em>Disable Input<\/em> na Player Controllerze).<\/li>\n<li>Zmieni\u0107 Input Mode na UI-only i pokaza\u0107 kursor myszy.<\/li>\n<\/ul>\n<p>Restart sceny to zwykle <em>Open Level<\/em> z nazw\u0105 aktualnej mapy. Je\u015bli twoje statystyki (czas, punkty) \u017cyj\u0105 w Game Instance, mo\u017cesz je odczyta\u0107 w ekranie ko\u0144cowym i wy\u015bwietli\u0107 np. \u201eNowy rekord\u201d czy \u201ePoprzedni najlepszy wynik\u201d.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Rozszerzanie_projektu_proste_wrogie_AI\"><\/span>Rozszerzanie projektu: proste wrogie AI<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Pasywny_patrol_bez_Behavior_Tree\"><\/span>Pasywny patrol bez Behavior Tree<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Do pierwszego kontaktu z AI nie potrzebujesz od razu Behavior Tree. Wystarczy prosty Blueprint przeciwnika z komponentem <strong>Pawn<\/strong> lub <strong>Character<\/strong> i wbudowanym ruchem.<\/p>\n<p>Przyk\u0142adowy schemat patrolu mi\u0119dzy punktami:<\/p>\n<ol>\n<li>Utw\u00f3rz aktora <em>BP_EnemyPatrol<\/em> na bazie <em>Character<\/em> (dzi\u0119ki temu dostajesz kapsu\u0142\u0119 kolizji i ruch).<\/li>\n<li>W scenie rozstaw <strong>Target Point<\/strong>y (Actor \u2192 Target Point) w miejscach, po kt\u00f3rych ma chodzi\u0107 przeciwnik.<\/li>\n<li>W Blueprintcie przeciwnika dodaj tablic\u0119 (<em>Array<\/em>) <code>PatrolPoints<\/code> typu <em>Target Point<\/em>. Mo\u017cesz wype\u0142ni\u0107 j\u0105 w Details dla ka\u017cdego wroga osobno, przeci\u0105gaj\u0105c referencje do punkt\u00f3w z poziomu.<\/li>\n<li>Dodaj zmienn\u0105 <code>CurrentPatrolIndex<\/code> (integer), kt\u00f3ra b\u0119dzie wskazywa\u0107 aktualny punkt docelowy w tablicy.<\/li>\n<\/ol>\n<p>Logika ruchu mo\u017ce opiera\u0107 si\u0119 na prostym systemie \u201ejed\u017a do punktu, po doj\u015bciu wybierz kolejny\u201d:<\/p>\n<ul>\n<li>W <strong>Event BeginPlay<\/strong> sprawd\u017a, czy tablica <code>PatrolPoints<\/code> ma elementy. Je\u015bli tak, wywo\u0142aj w\u0142asne wydarzenie, np. <em>GoToNextPatrolPoint<\/em>.<\/li>\n<li>W <em>GoToNextPatrolPoint<\/em> pobierz element z <code>PatrolPoints[CurrentPatrolIndex]<\/code>, u\u017cyj noda <strong>AI MoveTo<\/strong> (lub <em>Simple Move to Actor<\/em> na Player Controllerze AI) i ustaw go jako <em>Target Actor<\/em>.<\/li>\n<li>Po zako\u0144czeniu ruchu (Event <em>On Success<\/em> z <em>AI MoveTo<\/em> albo manualne sprawdzenie odleg\u0142o\u015bci w Ticku) zwi\u0119ksz <code>CurrentPatrolIndex<\/code> (modulo d\u0142ugo\u015b\u0107 tablicy, \u017ceby wr\u00f3ci\u0107 na pocz\u0105tek) i ponownie wywo\u0142aj <em>GoToNextPatrolPoint<\/em>.<\/li>\n<\/ul>\n<p>Najwygodniej jest u\u017cy\u0107 komponentu <strong>AIController<\/strong> przypisanego tej postaci. Wtedy w samym wrogu trzymasz tylko punkty patrolu, a logik\u0105 ruchu zajmuje si\u0119 kontroler. Przy ma\u0142ym projekcie mo\u017cesz te\u017c zrezygnowa\u0107 z osobnego kontrolera i u\u017cy\u0107 prostego <em>Simple Move to Location<\/em> z poziomu Blueprintu przeciwnika \u2013 b\u0119dzie mniej klas do ogarni\u0119cia.<\/p>\n<p>Je\u015bli w kt\u00f3rym\u015b momencie patrol ma si\u0119 zatrzyma\u0107 (np. kiedy wr\u00f3g wykryje gracza), wystarczy wywo\u0142a\u0107 na kontrolerze <em>Stop Movement<\/em>. W po\u0142\u0105czeniu z timerem mo\u017cesz wtedy doda\u0107 kr\u00f3tki \u201epost\u00f3j\u201d w punkcie (wr\u00f3g podchodzi do Target Point, zatrzymuje si\u0119 na 1\u20132 sekundy, po czym dostaje kolejn\u0105 komend\u0119 <em>GoToNextPatrolPoint<\/em>).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Proste_wykrywanie_gracza_i_reakcja\"><\/span>Proste wykrywanie gracza i reakcja<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Do podstawowego \u201ewidzenia\u201d gracza wystarczy komponent kolizji lub prosty system z odleg\u0142o\u015bci\u0105. W lekkich projektach dobrze sprawdza si\u0119 po\u0142\u0105czenie komponentu <em>Pawn Sensing<\/em> z prost\u0105 logik\u0105 Blueprint:<\/p>\n<ul>\n<li>Dodaj do przeciwnika komponent <strong>Pawn Sensing<\/strong> i ustaw parametry: <em>Sight Radius<\/em>, <em>Peripheral Vision Angle<\/em> itp.<\/li>\n<li>Pod\u0142\u0105cz event <strong>On See Pawn<\/strong> \u2013 je\u015bli wykrytym Pawnem jest gracz, ustaw flag\u0119 <code>bIsChasingPlayer<\/code> na true i zacznij go goni\u0107 (<em>AI MoveTo<\/em> na aktora gracza).<\/li>\n<li>Gdy gracz zniknie z pola widzenia (np. up\u0142yn\u0105\u0142 czas od ostatniego wykrycia), mo\u017cesz po kr\u00f3tkiej zw\u0142oce wyzerowa\u0107 <code>bIsChasingPlayer<\/code> i wr\u00f3ci\u0107 do patrolu wywo\u0142uj\u0105c <em>GoToNextPatrolPoint<\/em>.<\/li>\n<\/ul>\n<p>Alternatywnie da si\u0119 oprze\u0107 ca\u0142o\u015b\u0107 tylko na kolizji: wok\u00f3\u0142 przeciwnika umieszczasz <em>Sphere Collision<\/em>, reagujesz na <em>OnComponentBeginOverlap<\/em> i je\u015bli w stref\u0119 wejdzie gracz, wr\u00f3g prze\u0142\u0105cza si\u0119 w tryb po\u015bcigu. To mniej realistyczne ni\u017c system widzenia, ale znacznie szybsze w konfiguracji i w ma\u0142ym prototypie zupe\u0142nie wystarcza.<\/p>\n<p>W momencie \u201ez\u0142apania\u201d gracza (np. overlap z kapsu\u0142\u0105 kolizji postaci) mo\u017cesz wywo\u0142a\u0107 w Game Mode funkcj\u0119 pora\u017cki: zatrzymaj sterowanie, poka\u017c ekran ko\u0144cowy, odtw\u00f3rz d\u017awi\u0119k. Mechanizm jest ten sam, co przy warunkach przegranej na czas \u2013 zmienia si\u0119 tylko to, co wyzwala zdarzenie.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Integracja_AI_z_istniejaca_petla_gry\"><\/span>Integracja AI z istniej\u0105c\u0105 p\u0119tl\u0105 gry<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u017beby wrogowie dobrze \u201ewkleili si\u0119\u201d w reszt\u0119 projektu, przyda si\u0119 kilka drobnych po\u0142\u0105cze\u0144. Przeciwnik mo\u017ce np. reagowa\u0107 na d\u017awi\u0119k zbierania przedmiotu, wej\u015bcie gracza w okre\u015blony obszar albo przekroczenie limitu czasu. W prostym wariancie wystarczy, \u017ce Game Mode wysy\u0142a do wszystkich przeciwnik\u00f3w event (np. <em>OnGameOver<\/em>), a oni zatrzymuj\u0105 ruch i prze\u0142\u0105czaj\u0105 si\u0119 na bezczynno\u015b\u0107.<\/p>\n<p>Dobrze dzia\u0142a prosty protok\u00f3\u0142 komunikacji mi\u0119dzy Game Mode a AI: wrogowie podpinaj\u0105 si\u0119 pod kilka zdarze\u0144 (np. <code>OnGameStart<\/code>, <code>OnGameOver<\/code>, <code>OnPlayerSpotted<\/code>), a Game Mode w odpowiednich momentach je wyzwala. Dzi\u0119ki temu nie rozlewasz logiki \u201eco si\u0119 dzieje po przegranej\u201d po wielu Blueprintach, tylko przeciwnicy reaguj\u0105 na wsp\u00f3lne sygna\u0142y. Przy wi\u0119kszym chaosie w projekcie wystarczy wtedy uporz\u0105dkowa\u0107 w\u0142a\u015bnie Game Mode, zamiast szuka\u0107 losowych <em>Disable Input<\/em> czy <em>Stop Movement<\/em> rozsianych po ca\u0142ej scenie.<\/p>\n<p>Przyk\u0142adowy przep\u0142yw: gracz traci wszystkie \u017cycia \u2192 Game Mode ustawia zmienn\u0105 <code>bIsGameOver<\/code> na true \u2192 wo\u0142a na wszystkich wrogach event <em>OnGameOver<\/em> (np. przez <em>Get All Actors of Class<\/em> na starcie i przechowywanie tablicy referencji) \u2192 ka\u017cdy wr\u00f3g zatrzymuje ruch, wy\u0142\u0105cza wykrywanie gracza i odtwarza animacj\u0119 \u201eznudzenia\u201d albo \u201ewygranej\u201d. Ten sam schemat mo\u017cesz wykorzysta\u0107 przy starcie rundy (AI czeka w miejscu, a\u017c Game Mode wy\u015ble <em>OnRoundStart<\/em>).<\/p>\n<p>Ciekawym rozszerzeniem jest spi\u0119cie AI z UI. Kiedy przeciwnik zauwa\u017cy gracza, na HUD-zie mo\u017ce mign\u0105\u0107 prosta ikonka alarmu, a po zneutralizowaniu wszystkich wrog\u00f3w pojawia si\u0119 napis \u201eStrefa bezpieczna\u201d. Technicznie to tylko kilka dodatkowych event\u00f3w: wr\u00f3g w chwili wykrycia gracza zg\u0142asza si\u0119 do Game Mode, a ten przekazuje sygna\u0142 do HUD-u, kt\u00f3ry w\u0142\u0105cza lub wy\u0142\u0105cza odpowiednie widgety. Logika pozostaje rozproszona tylko tam, gdzie faktycznie co\u015b si\u0119 dzieje (AI, Game Mode, HUD), ale przep\u0142yw danych jest jasny.<\/p>\n<p>Je\u017celi taki prototyp zacznie si\u0119 rozrasta\u0107, naturalnym kolejnym krokiem jest przej\u015bcie na Behavior Tree, Blackboard i bardziej rozbudowane stany AI. Wszystkie proste mechanizmy z powy\u017cszych przyk\u0142ad\u00f3w \u2013 patrol, po\u015bcig, zatrzymanie po przegranej \u2013 da si\u0119 wtedy przenie\u015b\u0107 1:1 do nowych narz\u0119dzi, bez wyrzucania dotychczasowej logiki w b\u0142oto.<\/p>\n<p>Maj\u0105c za sob\u0105 konfiguracj\u0119 projektu, prost\u0105 scen\u0119, pierwszy HUD, podstawow\u0105 logik\u0119 w Blueprintach i dzia\u0142aj\u0105ce, cho\u0107 proste AI, masz ju\u017c szkielet gry akcji \u2013 od wej\u015bcia do poziomu a\u017c po ekran ko\u0144cowy. Dalszy rozw\u00f3j to ju\u017c g\u0142\u00f3wnie iteracje: doszlifowanie sterowania, materia\u0142\u00f3w, \u015bwiate\u0142, UI i zachowania przeciwnik\u00f3w. Ka\u017cda z tych warstw korzysta z tych samych fundament\u00f3w, kt\u00f3re w\u0142a\u015bnie zbudowa\u0142e\u015b.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Najczesciej_zadawane_pytania_FAQ\"><\/span>Najcz\u0119\u015bciej zadawane pytania (FAQ)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Jaki_sprzet_jest_potrzebny_zeby_zaczac_prace_z_Unreal_Engine_5\"><\/span>Jaki sprz\u0119t jest potrzebny, \u017ceby zacz\u0105\u0107 prac\u0119 z Unreal Engine 5?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Do nauki Unreal Engine 5 wystarczy \u015bredniej klasy komputer: czterordzeniowy procesor (np. i5 \/ Ryzen 5 starszej generacji), 16 GB RAM i karta graficzna z obs\u0142ug\u0105 DirectX 11\/12. Na 8 GB RAM da si\u0119 uruchomi\u0107 silnik, ale kompilacja shader\u00f3w i praca w edytorze b\u0119d\u0105 mocno oci\u0119\u017ca\u0142e.<\/p>\n<p>Kluczowy jest dysk SSD \u2013 instalacja silnika plus kilka projekt\u00f3w potrafi zaj\u0105\u0107 50\u2013200 GB i na HDD wszystko b\u0119dzie dzia\u0142a\u0142o bardzo wolno. Systemowo najlepiej sprawdza si\u0119 Windows 10\/11 64-bit, bo pod t\u0119 platform\u0119 powstaje wi\u0119kszo\u015b\u0107 tutoriali i przyk\u0142ad\u00f3w.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Czy_Unreal_Engine_jest_dobry_dla_poczatkujacych_czy_lepiej_zaczac_od_Unity\"><\/span>Czy Unreal Engine jest dobry dla pocz\u0105tkuj\u0105cych, czy lepiej zacz\u0105\u0107 od Unity?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Unreal Engine jest jak najbardziej wykorzystywalny na start, szczeg\u00f3lnie je\u015bli interesuje ci\u0119 3D, gry akcji, FPS-y albo projekty nastawione na wysok\u0105 jako\u015b\u0107 grafiki. Dostajesz szablony z gotowym sterowaniem, system Blueprints (wizualne skrypty) i dobre efekty wizualne \u201ez pude\u0142ka\u201d, wi\u0119c szybko widzisz rezultaty.<\/p>\n<p>Unity bywa lepszym wyborem, gdy celujesz g\u0142\u00f3wnie w 2D, gry mobilne i preferujesz programowanie w C#. Unreal jest ci\u0119\u017cszy sprz\u0119towo i bardziej \u201eAAA\u201d w charakterze, ale je\u015bli chcesz pozna\u0107 narz\u0119dzie cz\u0119sto u\u017cywane w du\u017cych studiach, to bardzo sensowna inwestycja czasu.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"UE4_czy_UE5_%E2%80%93_ktora_wersje_Unreal_Engine_wybrac_na_pierwszy_projekt\"><\/span>UE4 czy UE5 \u2013 kt\u00f3r\u0105 wersj\u0119 Unreal Engine wybra\u0107 na pierwszy projekt?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Dla nowej osoby najcz\u0119\u015bciej najlepszym wyborem jest UE5 w stabilnym wydaniu (Release), bo w\u0142a\u015bnie pod t\u0119 wersj\u0119 powstaje wi\u0119kszo\u015b\u0107 aktualnych kurs\u00f3w i dokumentacji. Dostajesz nowoczesne systemy jak Lumen (globalne o\u015bwietlenie w czasie rzeczywistym) i Nanite, dzi\u0119ki czemu \u0142atwiej uzyska\u0107 dobry obraz bez skomplikowanego bake\u2019owania.<\/p>\n<p>UE4 ma sens, je\u015bli masz bardzo s\u0142aby komputer albo musisz u\u017cy\u0107 konkretnego pluginu dost\u0119pnego tylko dla tej linii silnika. Jest troch\u0119 l\u017cejszy i bardzo dojrza\u0142y, ale z perspektywy nauki na przysz\u0142o\u015b\u0107 UE5 daje lepsz\u0105 \u015bcie\u017ck\u0119 rozwoju projekt\u00f3w.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jakie_konto_jest_potrzebne_zeby_pobrac_Unreal_Engine_i_skad_go_sciagnac\"><\/span>Jakie konto jest potrzebne, \u017ceby pobra\u0107 Unreal Engine i sk\u0105d go \u015bci\u0105gn\u0105\u0107?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Potrzebujesz darmowego konta Epic Games \u2013 tego samego, kt\u00f3rego u\u017cywa si\u0119 do Fortnite czy Epic Games Store. Rejestracja odbywa si\u0119 na stronie Epic, p\u00f3\u017aniej logujesz si\u0119 tym kontem w aplikacji Epic Games Launcher.<\/p>\n<p>Unreal Engine pobierasz wy\u0142\u0105cznie przez Epic Games Launcher: po instalacji launchera przechodzisz do zak\u0142adki \u201eUnreal Engine\u201d \u2192 \u201eBiblioteka\u201d, klikasz \u201e+ Dodaj wersj\u0119\u201d i wybierasz najnowsz\u0105 stabiln\u0105 wersj\u0119 Release. Dopiero potem wskazujesz lokalizacj\u0119 na dysku SSD i uruchamiasz instalacj\u0119.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jaki_szablon_projektu_wybrac_w_Unreal_Engine_na_pierwszy_raz\"><\/span>Jaki szablon projektu wybra\u0107 w Unreal Engine na pierwszy raz?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Na start najlepiej sprawdzaj\u0105 si\u0119 gotowe szablony z widokiem postaci, bo nie musisz r\u0119cznie konfigurowa\u0107 kamery i sterowania. Dobre wybory to:<\/p>\n<ul>\n<li><strong>Third Person<\/strong> \u2013 kamera za plecami postaci, skakanie, prosta fizyka, uniwersalna baza pod wiele typ\u00f3w gier 3D;<\/li>\n<li><strong>First Person<\/strong> \u2013 widok z oczu, d\u0142onie i bro\u0144, dobry punkt wyj\u015bcia pod FPS;<\/li>\n<li><strong>Top Down<\/strong> \u2013 kamera z g\u00f3ry, sensowna baza pod proste RPG-i czy gry taktyczne.<\/li>\n<\/ul>\n<p>Dla pocz\u0105tkuj\u0105cych rozs\u0105dnym zestawem jest: szablon Third Person, tryb Blueprint (zamiast C++), platforma Desktop\/Console i w\u0142\u0105czony Starter Content, kt\u00f3ry daje podstawowe modele, materia\u0142y i d\u017awi\u0119ki do szybkiego prototypowania.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Czy_da_sie_uczyc_Unreal_Engine_bez_znajomosci_programowania_w_C\"><\/span>Czy da si\u0119 uczy\u0107 Unreal Engine bez znajomo\u015bci programowania w C++?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Tak. Unreal ma system Blueprints, czyli wizualne skrypty, w kt\u00f3rych logik\u0119 gry budujesz z \u201eklock\u00f3w\u201d po\u0142\u0105czonych liniami. Na pierwszy projekt spokojnie wystarczy Blueprint \u2013 pozwala zrozumie\u0107 przep\u0142yw logiki, zdarzenia, zmienne, bez konieczno\u015bci walki z konfiguracj\u0105 C++ i kompilatorem.<\/p>\n<p>W praktyce wielu tw\u00f3rc\u00f3w przez d\u0142ugi czas robi pe\u0142ne prototypy (a czasem nawet ca\u0142e gry indie) wy\u0142\u0105cznie w Blueprintach. C++ staje si\u0119 potrzebne g\u0142\u00f3wnie przy bardzo z\u0142o\u017conych systemach, optymalizacji i pracy w wi\u0119kszych zespo\u0142ach.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Co_zrobic_gdy_Unreal_Engine_bardzo_dlugo_sie_uruchamia_lub_kompiluje_shadery\"><\/span>Co zrobi\u0107, gdy Unreal Engine bardzo d\u0142ugo si\u0119 uruchamia lub kompiluje shadery?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>D\u0142ugi start i wolna kompilacja shader\u00f3w na pierwszym projekcie s\u0105 normalne, szczeg\u00f3lnie na s\u0142abszym sprz\u0119cie. Mo\u017cna jednak troch\u0119 to okie\u0142zna\u0107: obni\u017c jako\u015b\u0107 podgl\u0105du w edytorze (np. tryb \u201eMedium\u201d w viewport), zamknij zb\u0119dne okna i wy\u0142\u0105cz efekty, kt\u00f3rych nie u\u017cywasz w scenie.<\/p>\n<p>Upewnij si\u0119 te\u017c, \u017ce projekt i silnik s\u0105 na dysku SSD, a na laptopie u\u017cywana jest dedykowana karta GPU, a nie zintegrowana. Cz\u0119sty scenariusz: po pod\u0142\u0105czeniu zasilacza system prze\u0142\u0105cza si\u0119 na mocniejsz\u0105 kart\u0119 i nagle Unreal zaczyna dzia\u0142a\u0107 du\u017co p\u0142ynniej.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Najwazniejsze_wnioski\"><\/span>Najwa\u017cniejsze wnioski<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Unreal Engine jest szczeg\u00f3lnie sensownym wyborem, gdy zale\u017cy na jako\u015bci grafiki, pracy w 3D i narz\u0119dziu u\u017cywanym w du\u017cych studiach, a nie przeszkadza ci\u0119\u017cszy silnik i wi\u0119ksze wymagania sprz\u0119towe.<\/li>\n<li>Blueprints (wizualne skrypty) oraz gotowe szablony projekt\u00f3w pozwalaj\u0105 pocz\u0105tkuj\u0105cym szybko z\u0142o\u017cy\u0107 dzia\u0142aj\u0105cy prototyp bez pisania kodu C++, co przyspiesza nauk\u0119 logiki gry.<\/li>\n<li>Do komfortowej pracy z Unreal Engine praktyczne minimum to 4\u2011rdzeniowy CPU, 16 GB RAM, GPU z DirectX 11\/12 i SSD; na s\u0142abszym sprz\u0119cie trzeba liczy\u0107 si\u0119 z d\u0142ugimi czasami \u0142adowania i konieczno\u015bci\u0105 ci\u0119cia jako\u015bci w edytorze.<\/li>\n<li>Ekosystem Epic Games (Launcher, Marketplace, projekty sample, sekcja Learn) dostarcza kompletny zestaw narz\u0119dzi, materia\u0142\u00f3w edukacyjnych i gotowych asset\u00f3w, dzi\u0119ki czemu nie trzeba wszystkiego tworzy\u0107 samodzielnie.<\/li>\n<li>Unreal Engine 5 jest domy\u015blnym wyborem na pierwszy projekt: ma najwi\u0119cej aktualnych materia\u0142\u00f3w, nowoczesne systemy Lumen i Nanite oraz lepsz\u0105 perspektyw\u0119 rozwoju projektu ni\u017c UE4.<\/li>\n<li>UE4 nadal ma sens przy bardzo s\u0142abym sprz\u0119cie lub konieczno\u015bci u\u017cycia starszych plugin\u00f3w, ale w ka\u017cdym innym scenariuszu uczenie si\u0119 od razu UE5 oszcz\u0119dza p\u00f3\u017aniejszej migracji.<\/li>\n<li>Instalacj\u0119 Unreal Engine zawsze najlepiej wykonywa\u0107 przez Epic Games Launcher na dysku SSD, wybieraj\u0105c stabilne wydanie (Release), a nie wersje Preview, kt\u00f3re cz\u0119\u015bciej sprawiaj\u0105 problemy pocz\u0105tkuj\u0105cym.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Poznaj Unreal Engine krok po kroku. Sprz\u0119t, instalacja, Blueprints i gotowe szablony, kt\u00f3re pomog\u0105 Ci stworzy\u0107 pierwszy projekt gry.<\/p>\n","protected":false},"author":9,"featured_media":13088,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"class_list":["post-13087","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-game-development"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts\/13087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/comments?post=13087"}],"version-history":[{"count":1,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts\/13087\/revisions"}],"predecessor-version":[{"id":13092,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts\/13087\/revisions\/13092"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/media\/13088"}],"wp:attachment":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/media?parent=13087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/categories?post=13087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/tags?post=13087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}