Pārlūkot izejas kodu

Initial commit for polish translations. Starting with translating manuals. Images and assets copied as is. Translated: 2d-graphics, 3d-graphics, adapting-to-different-screen-sizes, ads, adrressing, android. Created a translated pl.json. (#102)

paweljarosz 5 gadi atpakaļ
vecāks
revīzija
21c31e5b2f
100 mainītis faili ar 587 papildinājumiem un 0 dzēšanām
  1. 9 0
      docs/pl/manuals/2dgraphics.md
  2. 8 0
      docs/pl/manuals/3dgraphics.md
  3. 120 0
      docs/pl/manuals/adapting-graphics-to-screen-size.md
  4. 246 0
      docs/pl/manuals/addressing.md
  5. 62 0
      docs/pl/manuals/ads.md
  6. 142 0
      docs/pl/manuals/android.md
  7. BIN
      docs/pl/manuals/assets/Vector_Math_Library-Overview.pdf
  8. BIN
      docs/pl/manuals/images/3dgraphics/add_animation.png
  9. BIN
      docs/pl/manuals/images/3dgraphics/animationset.png
  10. BIN
      docs/pl/manuals/images/addressing/absolute.png
  11. BIN
      docs/pl/manuals/images/addressing/bean.png
  12. BIN
      docs/pl/manuals/images/addressing/bean_buddy.png
  13. BIN
      docs/pl/manuals/images/addressing/bean_editor.png
  14. BIN
      docs/pl/manuals/images/addressing/bean_shield.png
  15. BIN
      docs/pl/manuals/images/addressing/bean_shield_editor.png
  16. BIN
      docs/pl/manuals/images/addressing/collection_team.png
  17. BIN
      docs/pl/manuals/images/addressing/manager_editor.png
  18. BIN
      docs/pl/manuals/images/addressing/name_collision.png
  19. BIN
      docs/pl/manuals/images/addressing/relative_same.png
  20. BIN
      docs/pl/manuals/images/addressing/team_editor.png
  21. BIN
      docs/pl/manuals/images/addressing/teams_editor.png
  22. BIN
      docs/pl/manuals/images/addressing/teams_manager.png
  23. BIN
      docs/pl/manuals/images/android/apk_file.png
  24. BIN
      docs/pl/manuals/images/android/sign_bundle.png
  25. BIN
      docs/pl/manuals/images/android/sign_bundle2.png
  26. BIN
      docs/pl/manuals/images/android/usb_debugging.png
  27. BIN
      docs/pl/manuals/images/animation/animsheet.png
  28. BIN
      docs/pl/manuals/images/animation/blender_animation.png
  29. BIN
      docs/pl/manuals/images/animation/[email protected]
  30. BIN
      docs/pl/manuals/images/animation/bounce.gif
  31. BIN
      docs/pl/manuals/images/animation/custom_curve.png
  32. BIN
      docs/pl/manuals/images/animation/frog_runloop.gif
  33. BIN
      docs/pl/manuals/images/animation/model_hierarchy.png
  34. BIN
      docs/pl/manuals/images/animation/property_animation.png
  35. BIN
      docs/pl/manuals/images/animation/[email protected]
  36. BIN
      docs/pl/manuals/images/animation/runloop.gif
  37. BIN
      docs/pl/manuals/images/animation/spine_animation.png
  38. BIN
      docs/pl/manuals/images/animation/spine_bones.png
  39. BIN
      docs/pl/manuals/images/animation/[email protected]
  40. BIN
      docs/pl/manuals/images/animation/spine_events.png
  41. BIN
      docs/pl/manuals/images/animation/spine_ingame.png
  42. BIN
      docs/pl/manuals/images/animation/[email protected]
  43. BIN
      docs/pl/manuals/images/animation/square_curve.png
  44. BIN
      docs/pl/manuals/images/animation/suzanne.gif
  45. BIN
      docs/pl/manuals/images/animation/wiggle.gif
  46. BIN
      docs/pl/manuals/images/application_lifecycle/application_lifecycle_final.png
  47. BIN
      docs/pl/manuals/images/application_lifecycle/application_lifecycle_init.png
  48. BIN
      docs/pl/manuals/images/application_lifecycle/application_lifecycle_overview.png
  49. BIN
      docs/pl/manuals/images/application_lifecycle/application_lifecycle_update.png
  50. BIN
      docs/pl/manuals/images/atlas/add.png
  51. BIN
      docs/pl/manuals/images/atlas/[email protected]
  52. BIN
      docs/pl/manuals/images/atlas/add_animation.png
  53. BIN
      docs/pl/manuals/images/atlas/[email protected]
  54. BIN
      docs/pl/manuals/images/atlas/animation_group.png
  55. BIN
      docs/pl/manuals/images/atlas/[email protected]
  56. BIN
      docs/pl/manuals/images/atlas/atlas_properties.png
  57. BIN
      docs/pl/manuals/images/atlas/[email protected]
  58. BIN
      docs/pl/manuals/images/atlas/single_images.png
  59. BIN
      docs/pl/manuals/images/atlas/[email protected]
  60. BIN
      docs/pl/manuals/images/building_blocks/bean_collection.png
  61. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  62. BIN
      docs/pl/manuals/images/building_blocks/building_blocks.png
  63. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  64. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_collection_instances.png
  65. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_collection_properties.png
  66. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_gameobject_alter.png
  67. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_gameobject_clones.png
  68. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_gameobject_file.png
  69. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_gameobject_instance.png
  70. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_gameobject_instance_child.png
  71. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_properties.png
  72. BIN
      docs/pl/manuals/images/building_blocks/building_blocks_properties_embedded.png
  73. BIN
      docs/pl/manuals/images/building_blocks/child_transform.png
  74. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  75. BIN
      docs/pl/manuals/images/building_blocks/childing.png
  76. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  77. BIN
      docs/pl/manuals/images/building_blocks/collection.png
  78. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  79. BIN
      docs/pl/manuals/images/building_blocks/go_instance.png
  80. BIN
      docs/pl/manuals/images/building_blocks/go_instance2.png
  81. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  82. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  83. BIN
      docs/pl/manuals/images/building_blocks/instance.png
  84. BIN
      docs/pl/manuals/images/building_blocks/[email protected]
  85. BIN
      docs/pl/manuals/images/bundling/bundle_menu.png
  86. BIN
      docs/pl/manuals/images/camera/create.png
  87. BIN
      docs/pl/manuals/images/camera/[email protected]
  88. BIN
      docs/pl/manuals/images/camera/follow.png
  89. BIN
      docs/pl/manuals/images/camera/projections.png
  90. BIN
      docs/pl/manuals/images/camera/[email protected]
  91. BIN
      docs/pl/manuals/images/camera/settings.png
  92. BIN
      docs/pl/manuals/images/camera/[email protected]
  93. BIN
      docs/pl/manuals/images/collection-proxy/bootstrap.png
  94. BIN
      docs/pl/manuals/images/collection-proxy/[email protected]
  95. BIN
      docs/pl/manuals/images/collection-proxy/collection_id.png
  96. BIN
      docs/pl/manuals/images/collection-proxy/[email protected]
  97. BIN
      docs/pl/manuals/images/collection-proxy/create_proxy.png
  98. BIN
      docs/pl/manuals/images/collection-proxy/[email protected]
  99. BIN
      docs/pl/manuals/images/collection-proxy/message_passing.png
  100. BIN
      docs/pl/manuals/images/collection-proxy/[email protected]

+ 9 - 0
docs/pl/manuals/2dgraphics.md

@@ -0,0 +1,9 @@
+---
+title: Grafika 2D
+brief: Materiał jest przestarzały
+---
+
+# Grafika 2D
+
+Przeniesiono do [Instrukcja do grafiki](/manuals/graphics).
+

+ 8 - 0
docs/pl/manuals/3dgraphics.md

@@ -0,0 +1,8 @@
+---
+title: Grafika 3D
+brief: Materiał jest przestarzały
+---
+
+# Grafika 3D
+
+Przeniesiono do [Instrukcja do grafiki](/manuals/graphics).

+ 120 - 0
docs/pl/manuals/adapting-graphics-to-screen-size.md

@@ -0,0 +1,120 @@
+---
+title: Adaptacja do różnych wielkości ekranów
+brief: Instrukcja opisuje jak dopasować grę i grafikę do różnych wielkości ekranów.
+---
+
+# Wprowadzenie
+
+Jest wiele elementów do przemyślenia podczas dopasowywania gry do różnych wielkości ekranów:
+
+* Czy jest to gra retro w niskiej rozdzielczości (pixel art)? Czy może nowoczesna gra z grafiką HD wysokiej jakości?
+* Jak gra powinna zachowywać się na różnej wielkości ekranach uruchomiona na pełnym ekranie?
+  * Czy gracz powinien widzieć większy fragment mapy/gry przy większej rozdzielczości? Czy może grafika powinna być skalowana do rozdzielczości, ąby zawsze pokazywać ten sam fragment?
+* Jak gra powinna sobie radzić z różnymi proporcjami ekranu niż ta, którą podasz w ustawieniach game.project?
+  * Czy gracz powinien widzieć większy fragment mapy/gry przy większej rozdzielczości? Czy może fragmenty poza proporcjami powinny być zasłonięte przez czarne paski? Czy elementy interfejsu (GUI) powinny być przeskalowane?
+* Jaki rodzaj menu i elementów interfejsu potrzebujesz? Jak powinny się adaptować do zmian rozdzielczości i orientacji?
+  * Czy menu i elementy interfejsu powinny zmieniać rozplanowanie wraz ze zmianą orientacji i rozdzielczości czy utrzymywać stałą pozycję?
+
+Ta instrukcja próbuje odpowiedzieć na poniższe pytania i wskazać najlepsze praktyki.
+
+
+## Jak zmienić sposób wyświetlania grafiki
+
+Defold wykorzystuje skrypt do renderowania (opracowywania, rysowania i wyświetlania grafiki), tzw. "*render script*", który daje całkowitą kontrolę nad sposobem wyświetlania grafiki na ekranie. Render script definiuje kolejność rysowania elementów oraz co i jak ma być rysowane. Domyślne zachowanie skryptu to rysowanie takiej samej ilości pikseli określonej przez wysokość i szerokość wpisaną w ustawieniach w pliku *game.project* file, niezależnie od tego, czy rozmiar okna został zmieniony lub rozdzielczość urządzenia jest inna. Powoduje to rozciągnięcie obrazu, gdy współczynnik proporcji ekranu się zmieni oraz przeskalowany, kiedy rozmiar okna ulegnie zmianie. W niektórych grach jest to oczywiście akceptowalne, ale  jest bardziej prawdopodobne, że chcesz pokazać w takich przypadkach większą lub mniejszą część zawartości ekranu lub przynajmniej przeskalować grafikę bez zmieniania współczynnika proporcji. Domyślny sposób renderowania może więc być z łatwością zmieniony, a więcej o tym możesz się dowiedzieć tutaj: [Instrukcja renderowania](https://www.defold.com/manuals/render/#default-view-projection).
+
+
+## Retro/Grafika 8-bitowa/Pixel art
+
+Retro grafika często odnosi się do gier naśladujących styl graficzny starych gier z okresy urządzeń z ekranami o niskiej rozdzielczości i ograniczonej palecie barw. Jako przykład Nintendo Entertainment System (NES) ma rozdzielczość 256x240, Commodore 64 - 320x200, a Gameboy - 160x144, a rozdzielczości te są tylko ułamkiem rozdzielczości współczesnych ekranów. Aby umożliwić wyświetlanie takiej grafiki na nich musi ona być przeskalowana kilkukrotnie. Jednym z prostszych sposobów na wyświetlanie takiej grafiki jest wyrysowanie całej grafiki w niskiej rozdzielczości i przybliżenie widoku w momencie renderowania. Można to łatwo zrobić w Defoldzie używając render scriptu i [Stałej Projekcji](/manuals/render/#fixed-projection) ustawionej z odpowiednim zoomem.
+
+Weźmy ten zestaw kafelków i postać ([stąd](https://ansimuz.itch.io/grotto-escape-game-art-pack)) i użyjmy do stworzenia gry w rozdzielczości 320x200:
+
+![](images/screen_size/retro-player.png)
+
+![](images/screen_size/retro-tiles.png)
+
+Ustaw rozdzielczość 320x200 w pliku *game.project* i uruchom grę - po uruchomieniu ujrzysz:
+
+![](images/screen_size/retro-original_320x200.png)
+
+Okno na nowoczesnym monitorze o wysokiej rozdzielczości jest niezwykle małe! Powiększając rozmiar okna czterokrotnie do 1280x800 będzie bardziej przystępne:
+
+![](images/screen_size/retro-original_1280x800.png)
+
+Rozmiar okna jest w porządku, więc teraz potrzeba zmienić sposób wyświetlania grafiki wewnątrz, ponieważ w chwili oecnej jest zbyt mała i ciężko jest zobaczyć cokolwiek co się dzieje w grze. Możemy użyć render scriptu aby ustawić stałą i przybliżoną projekcję:
+
+```Lua
+msg.post("@render:", "use_fixed_projection", { zoom = 4 })
+```
+
+Co da nam rezultat:
+
+![](images/screen_size/retro-zoomed_1280x800.png)
+
+Jest lepiej. Okno i grafika mają odpowiedni rozmiar, ale po przyjrzeniu się bliżej widzimy problem:
+
+![](images/screen_size/retro-zoomed_linear.png)
+
+Obraz jest rozmazany! Jest to spowodowane domyślnym sposobem próbkowania grafiki renderowanej przez GPU podczas przybliżania widoku. Domyślne ustawienie w pliku *game.project* w sekcji *Graphics* to *linear* (liniowe):
+
+![](images/screen_size/retro-settings_linear.png)
+
+Zmiana na *nearest* (najbliższy) da nam rezultat:
+
+![](images/screen_size/retro-settings_nearest.png)
+
+![](images/screen_size/retro-zoomed_nearest.png)
+
+I mamy przejrzystą grafikę pikselową do naszej gry retro! Jest nawet więcej elementów do rozważenia, jak na przykład wyłączenie sub-pikseli dla sprite'ów w *game.project*:
+
+![](images/screen_size/retro-subpixels.png)
+
+Gdy opcja Subpixels jest wyłączona grafiki nigdy nie będą wyświetlana w częściach piskeli, a zamiast tego przystosowane do siatki pełnych pikseli.
+
+## Grafika w wysokiej rozdzielczości (HD)
+
+Podczas pracy z grafiką w wysokiej rozdzielczości należy podejść do ustawień w inny sposób niż do grafiki retro. Z grafiką bitmapową musisz przygotować obrazy w takiej rozdzielczości, aby wyglądały ostro i przejrzyście na monitorach o wysokiej rozdzielczości wyświetlone w skali 1:1.
+
+Tutaj również należy wprowadzić zmiany w skrypcie renderowania. W tym przypadku należy skalować grafikę razem ze zmianą rozdzielczości z zachowaniem oryginalnego współczynnika proporcji ekranu:
+
+```Lua
+msg.post("@render:", "use_fixed_fit_projection")
+```
+
+Zapewni to zmianę przybliżenia widoku w taki sposób, że na ekranie będzie widoczna zawsze taka sama część grafiki/zawartości określona w pliku *game.project*, lub tylko z dodatkowym obszarem wyświetlonym nad i pod lub obok oryginalnego obrazu w zależności od tego czy współczynnik proporcji ekranu będzie inny niż oryginalny.
+
+Powinno się określić wysokość i szerokość obrazu w pliku *game.project* do rozmiaru, który pozwoli na wyświetlenie Twoich grafik bez przeskalowania.
+
+### Ustawienie High DPI i ekrany Retina
+
+Jeśli chcesz również wspierać ekrany Retina możesz to włączyć w pliku *game.project* w sekcji *Display*(Wyświetlacz):
+
+![](images/screen_size/highdpi-enabled.png)
+
+Pozwoli to na tworzenie bufora High DPI na wyświetlaczach/ekranach, które wspierają taką technologię. Gra będzie wyświetlana w rozdzielczości dwukrotnie większej niż ta ustawiona oryginalnie, która jednak nadal pozostanie rozdzielczościa postrzeganą przez logikę gry. Oznacza to, że wszystkie pomiary pozostają takie same i zawartość renderowana w skali 1x również. Ale gdy zaimportujesz obrazy w wysokiej rozdzielczości i zmniejszysz dwukrotnie, będą nadal wyświetlane jako High DPI na ekranie.
+
+
+## Tworzenie interfejsu adaptacyjnego
+
+System do tworzenia elementów interfejsu użytkownika (GUI - ang. Graphical User Interface) opiera się na kilku podstawowych blokach, tzw. [węzłach](/manuals/gui/#node-types), i mimo, że wygląda na uproszczony, można dzięki niemu stworzyć zaawansowane elementy, przyciski, indykatory, menusy i pop-upy. Tworzone przez Ciebie GUI może być skonfigurowane do automatycznej adaptacji do różnych wielkości ekranów i zmian orientacji. Możesz przykłądowo zachować węzły zakotwiczone do góru, dołu lub boków ekranu i mogą one zachowywać lub zmieniać swój rozmiar i skalę. Zależności pomiędzy węzłami, jak i również ich rozmiarami mogą być również skonfigurowane, aby dostosować się do zmian rozdzielczości i orientacji.
+
+### Właściwości węzłów
+
+Każdy węzeł w systemie GUI ma swoją oś (ang. pivot), horyzontalne i wertykalne zakotwiczenie (ang. anchor) oraz tryb dopasowania (ang. adjust mode).
+
+* *Pivot* definiuje punkt środkowy węzła.
+* *Anchor* (kotwica) kontroluje zmianę położenia pionowego lub poziomego kiedy granice sceny, lub granice węzła-rodzica są rozciągnięte, aby dostosować się do zmiany rozmiaru ekranu.
+* *Adjust mode* (tryb dopasowania) kontroluje co dzieje się z węzłem, gdy granice sceny lub węzła-rodzica są dopasowane do wypełnienia ekranu.
+
+Więcej o tych właściwościach możesz przeczytać [w tej instrukcji do GUI](/manuals/gui/#node-properties).
+
+### Rozplanowanie elementów (Layouts)
+
+Defold oferuje interfejsy GUI, które automatycznie dopasowują się do różnych wielkości ekranów i orientacji na urządzeniach mobilnych. Używając tych właściwości możesz zaprojektować GUI, które adaptuje się do zmian współczynnika proporcji i orientacji ekranu na ekranach o różnych rozmiarach. Można również skonfigurować rozplanowanie elementów dla konkretnych modeli urządzeń. Możesz się dowiedzieć o tym więcej [w tej instrukcji do layout'ów GUI](/manuals/gui-layouts/)
+
+
+## Testowanie ekranów o różnych wielkościach
+
+Defold oferuje menu do debugowania, które zawiera opcję symulowania rozdzielczości konretnego urządzenia lub dowolnej rozdzielczości. Gdy aplikacja jest uruchomiona możesz kliknąć <kbd>Debug->Simulate Resolution</kbd> i wybrać jedno z urządzeń z listy. Okno aplikacji zmieni rozmiar i będziesz widzieć, jak Twoja gra wygląda na ekranie o danej rozdzielczości z danym współczynnikiem proporcji.
+
+![](images/screen_size/simulate-resolution.png)

+ 246 - 0
docs/pl/manuals/addressing.md

@@ -0,0 +1,246 @@
+---
+title: Adresowanie w silniku Defold
+brief: Instrukcja wyjaśnia sposób adresowania w silniku Defold.
+---
+
+# Adresowanie
+
+Kod, który kontroluje grę musi obejmować zasięgiem wszystkie obiekty i komponenty, aby poruszać, skalować, animować, usuwać czy manipulować co gracz widzi i słyszy. Umożliwia to mechanizm adresowania w silniku Defold.
+
+## Identyfikatory
+
+Defold wykorzystuje adresy (tzw. URL z ang. Uniform Resource Locator)) aby odnosić się do obiektów i komponentów. Te adresy składają się z identyfikatorów (ID). Poniżej przedstawiono wszystkie przykłady tego, jak Defold wykorzystuje adresy. W tej instrukcji przeanalizujemy je szczegółowo:
+
+```lua
+local id = factory.create("#enemy_factory")
+label.set_text("my_gameobject#my_label", "Hello World!")
+
+local pos = go.get_position("my_gameobject")
+go.set_position(pos, "/level/stuff/other_gameobject")
+
+msg.post("#", "hello_there")
+local id = go.get_id(".")
+```
+
+Rozpocznijmy bardzo prostym przykładem. Załóżmy, że masz obiekt (game object) z pojedynczym komponentem typu sprite. Masz również pod tym obiektem komponent typu skrypt, który kontroluje ten obiekt. Taka hierarchia w edytorze powinna wyglądać tak:
+
+![bean in editor](images/addressing/bean_editor.png)
+
+Załóżmy, że chcesz wyłączyć komponent typu sprite zaraz, gdy gra się uruchomi, aby pokazać go później. Można to z łatwością zrobić przez umieszczenie poniższego kodu w pliku *"controller.script"*:
+
+```lua
+function init(self)
+    msg.post("#body", "disable") -- <1>
+end
+```
+1. Nie przejmuj się na tę chwilę znakiem '#'. Powrócimy do tego.
+
+Będzie to działać tak jak oczekiwaliśmy. Gdy gra się uruchomi, skrypt *adresując* komponent typu sprite poprzez jego identyfikator "body" i użyje tego adresu aby wysłać do niego specjalną *wiadomość* o treści "disable" (ang. wyłącz). Efektem tej specjalnej wiadomości silnika jest to, że w komponencie sprite zostanie ukryty/wyłączony. Schematowo, ustawienie wygląda następująco:
+
+![bean](images/addressing/bean.png)
+
+Identyfkatory w ustawieniu są arbitralne. Tutaj, my wybraliśmy aby nadać obiektowi identyfikator "bean" (ang. fasola), a jego komponent typu sprite ma identyfikator "body" (ang. ciało), a skrypt kontrolujący postać został nazwany "controller".
+
+::: sidenote
+Jeśli sam nie wybierzesz identyfikatora, edytor zrobi to za Ciebie. Kiedykowliek tworzysz nowy obiekt lub komponent w edytorze zostaje mu przydzielony z góry unikalny *Id*.
+
+- Obiekty (ang. game objects) mają z góry przypisany Id "go" z numerem ("go2", "go3" itd.).
+- Komponenty dostają Id odpowiadające typowi ("sprite", "sprite2", "label", "sound" itp.).
+
+Oczywiście możesz pozostać przy tak wygenerowanych nazwach, ale zachęcamy do ich zmiany na dobre, opisowe i znaczące nazwy.
+:::
+
+Teraz dodajmy kolejny komponent typu sprite dając postaci tarczę:
+
+![bean](images/addressing/bean_shield_editor.png)
+
+Nowy komponent musi mieć unikalną nazwę w obrębie danego obiektu. Jeśli spróbujesz ponownie nazwać komponent "body", będzie to niejednoznaczne i skrypt nie będzie "wiedział", do którego "body" ma wysłać wiadomość "disable". Dlatego wybieramy nową, znaczącą i unikalną nazwę "shield" (ang. tarcza). Teraz można dowolnie włączać i wyłączać sprite'y "body" i "shield".
+
+![bean](images/addressing/bean_shield.png)
+
+::: sidenote
+Jeśli spróbujesz nadać nieunikalną nazwę, edytor i tak zasygnalizuje błąd, więc w praktyce to nigdy nie jest problem nie do zauważenia:
+
+![bean](images/addressing/name_collision.png)
+:::
+
+Zobaczmy teraz co się stanie, gdy dodamy więcej obiektów. Załóżmy, że chcesz stworzyć małą drużynę "fasolek". Decydujesz się nazwać jeden z obiektów "bean", a drugi "buddy" (ang. kolega). Ponadto, kiedy "bean" będzie przez chwilę bezczynny, powinien powiedzieć swojemu koledze "buddy", aby zaczął tańczyć. Można to zrobić przez wysłanie niestandradowej wiadomości o treści "dance" (ang. tańcz) ze skryptu "controller" obiektu "bean" do skryptu "controller" obiektu "buddy":
+
+![bean](images/addressing/bean_buddy.png)
+
+::: sidenote
+Są tutaj dwa komponenty typu skrypt nazwane "controller", ale każdy w osobnym obiekcie, więc jest to całkowicie dozwolone, ponieważ ich całkowite nazwy (adresy) uwzględniające identyfikatory obiektów są od siebie różne. Nowy obiekt tworzy więc tzw. nowy kontekst nazewniczy.
+:::
+
+Ponieważ wysyłamy wiadomość do komponentu poza naszym obiektem ("bean"), w kodzie musimy określić, do którego komponentu "controller" nasza wiadomość powinna być wysłana. Musimy więc w tym przypadku określić zarówno identyfikator obiektu (game object id) i komponentu (component id). Pełny adres komponentu "controller" z obiektu "buddy" brzmi więc: `"buddy#controller"` i adres ten składa się z dwóch części.
+
+- Najpierw określamy identyfikator obiektu ("buddy"),
+- następnie wstawiamy wspomniany już znak oddzielenia id obiektu od komponentu ("#"),
+- i na końcu dodajemy identyfikator komponentu ("controller").
+
+Wracając do poprzedniego przykładu z jednym obiektem (game object) widzimy, że zostawiając identyfikator obiektu pusty w adresie (brak id przed "#") jest automatycznie wnioskowany komponent z tego samego obiektu co skrypt, który wysyła taką wiadomość - kod adresuje więc komponenty z *własnego obiektu*.
+
+Przykładowo, `"#body"` oznacza, że adresujemy komponent "body" we własnym obiekcie. Jest to bardzo przydatne uproszczenie, ponieważ można dzięki temu stworzyć generyczny kod, który będzie działał jako skrypt dla *dowolnego* obiektu, jeśli tylko posiada on komponent "body".
+
+## Kolekcje
+
+Kolekce (ang. collections) umożliwiają tworzenie grup i hierarchi obiektów (game objects) i wykorzystywania ich w kontrolowany sposób. Używa się plików typu kolekcja jak szablonów (tzw. "prototypów" czy "prefabów") w edytorze kiedy chcesz umieścić w grze obiekty.
+
+Załóżmy, że chcesz utworzyć grupę "fasolek" jak powyżej, ale do ogólnego użytku. Dobrym sposobem na to jest stworzenie szablonu w nowym pliku *collection file* (nazwij go "team.collection"). Umieść obiekty w tym pliku (w taki sam sposób jak tworzyłeś grupę powyżej w głównej kolekcji (main bootstrap collection)) i zapisz go. Następnie utwórz instancję tej kolekcji (tego pliku) w głównej kolekcji gry i nadaj mu identyfikator "team_1":
+
+![bean](images/addressing/team_editor.png)
+
+Z taką strukturą obiekt "bean" może wciąż odnosić się do komponentu "controller" w skrypcie obiektu "buddy" poprzez adres `"buddy#controller"`.
+
+![bean](images/addressing/collection_team.png)
+
+I jeśli dodasz kolejną instancję kolekcji "team.collection" (nazwij ją "team_2"), kod uruchomiony wewnątrz kolekcji "team_2" również będzie działał. Obiekt "bean" z instancji kolekcji "team_2" może wciąż wysyłać wiadomości do skryptu "controller" w obiekcie "buddy" poprzez adres `"buddy#controller"`. Dzieje się tak z tego samego powodu, z którego mogliśmy to doprowadzić do działania w przypadku dwóch obiektów:
+
+![bean](images/addressing/teams_editor.png)
+
+## Adresowanie relatywne
+
+Adres `"buddy#controller"` działa dla obiektów z obu kolekcji, ponieważ jest *relatywny* czy też względny. Każda z instancji kolekcji "team_1" i "team_2" tworzy nowy kotekst nazweniczy (czy też "namespace"). Defold omija więc duplikowanie nazw przez używanie zarówno identyfikatorów komponentów i obiektów jak i kolekcji w celu tworzenia adresu:
+
+![relative id](images/addressing/relative_same.png)
+
+- W obrębie kontekstu nazewniczego kolekcji "team_1", obiekty "bean" i "buddy" mają unikalne adresy.
+- Analogicznie, W obrębie kontekstu nazewniczego kolekcji "team_2", obiekty "bean" i "buddy" mają również unikalne adresy.
+
+Adresowanie relatywne (względne) działa dzięki automatycznemu używaniu identyfikatora własnej, obecnej kolekcji (czy też własnego kontekstu nazewniczego) przy tworzeniu adresu każdego komponentu. Jest to również niezwykle przydatne, ponieważ możesz tworzyć grupy obiektów z tym samym kodem dla każdego z nich i wykorzystywać je wielokrotnie w grze.
+
+### Skróty
+
+Defold pozwala na używanie dwóch przydatnych skrótów przy tworzeniu adresu, bez określania konkretnego adresu URL komponentu ("#") czy obiektu ("."):
+
+:[Shorthands](../shared/url-shorthands.md)
+
+## Ścieżki do obiektów
+
+Aby poprawnie zrozumieć mechanizm adresowania, spójrzmy co się stanie, gdy zbudujesz i uruchomisz projekt:
+
+1. Edytor początkowo wczytuje kolekcję główną (bootstrap main collection) ("main.collection") i całą jej zawartość (obiekty i inne kolekcje wewnątrz).
+2. Dla każdego obiektu statycznego (którego instancja już istnieje), kompilator tworzy identyfikator (adres). Te są zbudowane korzystając ze "ścieżek" startując od źródła kolekcji bootstrapowej (root), w dół hierarchi aż do danego obiektu. Znak '/' jest dodawany przy każdym zejściu poziomu hierarchi.
+
+Dla przykładu powyżej, gra uruchomi się startując z 4 obiektami:
+
+- /team_1/bean
+- /team_1/buddy
+- /team_2/bean
+- /team_2/buddy
+
+::: sidenote
+Adresy komponentów są przechowywane jako "posiekane" / "skrócone" (ang. hashed - i może lepiej jako programista używać angielskiej nazwy (hash)[https://pl.wikipedia.org/wiki/Funkcja_skrótu]- przyp. tłumacza) wartości. W czasie działania program przechowuje adresy również jako "shaszowane" dla każdej instancji w kolekcji, która jest w użyciu, aby zachować ciągłość nazwy adresu absolutnego (bezwzględnego).
+:::
+
+W czasie działania programu, grupowanie kolekcji nie istnieje. Nie ma sposobu na sprawdzenie do jakiej kolekcji przynależy dany obiekt przed kompilacją. Nie jest też możliwe manipulowanie wszystkimi obiektami w kolekcji naraz. Jeśli jednak potrzebujesz wykorzystywać takie operacje  możesz z łatwością śledzić adres w kodzie. Każdy identyfikator obiektu jest statyczny, jest więc gwarantowane, że zostanie stały przez cały cykl życia obiektu. Oznacza to, że można bezpiecznie przechować id obiektu i używać go później.
+
+## Adresowanie absolutne
+
+Jest oczywiście możliwe używanie bezwzględnych (absolutnych) adresów komponentów podczas adresowania. W wielu przypadkach adresowanie relatywne jest prefereowane z powodu możliwości wielokrotnego wykorzystania kodu, ale są przypadki, gdzie wymagane jest adresowanie absolutne.
+
+Na przykład, załóżmy, że chcesz stworzyć jeden manager AI, który będzie śledził stan wszytkich obiektów "fasolek". Chcesz, żeby "fasolki" raportowały swój status do managera, a manager podejmował taktyczne decyzje i wydawał rozkazy każdej "fasolce" bazując na jej stanie. W tym przypadku jest całkowicie sensowne użycie absolutnego adresowania do wysyłania wiadomości do managera, którego jedną instancję utworzysz w głównej kolekcji bootstrapowej obok wielu instancji "fasolek".
+
+![manager object](images/addressing/manager_editor.png)
+
+Każda "fasolka" jest odpowiedzialna za wysyłanie wiadomości ze statusem do managera AI: "contact", jeśli zauważy wroga lub "ouch!", gdy otrzyma obrażenia. Aby to działało, skrypt obiektu "fasolki" może użyć absolutnego adresu skryptu "controller" managera AI nazwanego pragmatycznie "manager".
+
+Każdy adres, który rozpoczyna się znakiem '/' będzie właśnie rozkodowywany od źródła kolekcji (root). W tym przypadku odpowiada to "rootowi" *kolekcji bootstrapowej*, która jest wczytywana wraz ze startem gry.
+
+Adres absolutny skryptu managera to `"/manager#controller"` i będzie on zawsze opisywał ten skrypt, niezależnie od tego, skąd wiadomość zostanie wysłana.
+
+![teams and manager](images/addressing/teams_manager.png)
+
+![absolute addressing](images/addressing/absolute.png)
+
+## Identyfikatory haszowane (skrócone)
+
+Silnik Defold przechowuje wszystkie identyfikatory jako "shaszowane" wartości. Wszystkie funkcje, które przyjmują jako argument komponent lub obiekt (game object) akceptują "obiekty" typu string, hash lub URL. Powyżej używaliśmy tylko stringów do adresowania.
+
+Kiedy pobierasz identyfikator obiektu, silnik Defold zawsze zwróci ścieżkę absolutną identyfkatora, która jest haszowana:
+
+```lua
+local my_id = go.get_id()
+print(my_id) --> hash: [/path/to/the/object]
+
+local spawned_id = factory.create("#some_factory")
+print(spawned_id) --> hash: [/instance42]
+```
+
+Możesz użyć takiego identyfikatora zamiast adresu w postaci stringa lub skonstruować go samemu. Pamiętaj jednak, że shaszowany identyfikator odpowiada adresowi utworzonemu ze ścieżki do obiektu, czyli adresowi absolutnemu:
+
+::: sidenote
+Powodem, dla którego musimy podać stringi do stworzenia adresu relatywnego jest tworzenie przez silnik Defold na nowo haszowanego id bazującego na haszowanym stanie danego kontekstu nazewniczego (kolekcji) z podanym stringiem dodanym do hasza.
+:::
+
+```lua
+local spawned_id = factory.create("#some_factory")
+local pos = vmath.vector3(100, 100, 0)
+go.set_position(pos, spawned_id)
+
+local other_id = hash("/path/to/the/object")
+go.set_position(pos, other_id)
+
+-- This will not work! Relative addresses must be given as strings.
+local relative_id = hash("my_object")
+go.set_position(pos, relative_id)
+```
+
+## URL
+
+Aby dopełnić obraz adresowania, spójrzmy na pełny format adresu w silniku Defold: adres URL.
+
+URL jest obiektem, zazwyczaj zapisywany jako specjalnie sformatowany string. Ogólny URL w Defoldzie składa się z trzech części:
+
+`[socket:][path][#fragment]`
+
+socket
+: Identyfikuje świat, w którym obiekt istnieje (instancję kolekcji). Jest to ważne podczas pracy z [Pełnomocnikami Kolekcji (Collection Proxy)](/manuals/collection-proxy) i jest później wykorzystywane do _dynamicznie załadowanej kolekcji_.
+
+path
+: Część adresu URL zawierająca pełne id danego obiektu (game object).
+
+fragment
+: Identyfkator danego komponentu pod danym obiektem.
+
+Tak jak wcześniej, możesz zostawić niektóre pola puste pozwalając silnikowi na wydedukowanie, o jaki element chodzi zakładając domyślne wartości jak powyżej. Bardzo rzadko jest potrzeba określania socketu, za to często musisz określić path. W przypadkach, gdy chcesz się odnieść do obiektu z innego świata (kolekcji) niż obecna, będziesz podawać socket.Przykładowo, pełny URL skryptu "controller" obiektu "manager" wygląda następująco:
+
+`"main:/manager#controller"`
+
+a skrypt "controller" obiektu "buddy" w kolekcji "team_2" to:
+
+`"main:/team_2/buddy#controller"`
+
+Możemy do nich wysłać wiadomości:
+
+```lua
+-- Send "hello" to the manager script and team buddy bean
+msg.post("main:/manager#controller", "hello_manager")
+msg.post("main:/team_2/buddy#controller", "hello_buddy")
+```
+
+## Konstruowanie obiektów URL
+
+Obiekty URL mogą być również kontruowane w kodzie:
+
+```lua
+-- Construct URL object from a string:
+local my_url = msg.url("main:/manager#controller")
+print(my_url) --> url: [main:/manager#controller]
+print(my_url.socket) --> 786443 (internal numeric value)
+print(my_url.path) --> hash: [/manager]
+print(my_url.fragment) --> hash: [controller]
+
+-- Construct URL from parameters:
+local my_url = msg.url("main", "/manager", "controller")
+print(my_url) --> url: [main:/manager#controller]
+
+-- Build from empty URL object:
+local my_url = msg.url()
+my_url.socket = "main" -- specify by valid name
+my_url.path = hash("/manager") -- specify as string or hash
+my_url.fragment = "controller" -- specify as string or hash
+
+-- Post to target specified by URL
+msg.post(my_url, "hello_manager!")
+```

+ 62 - 0
docs/pl/manuals/ads.md

@@ -0,0 +1,62 @@
+---
+title: Wyświetlanie reklam w Defoldzie
+brief: Wyświetlanie różnorodnych reklam hest powszechnym sposobem na zarabianie w grach mobilnych i webowych. Ta instrukcja pokazuje jest używać róznych rodzajów reklam do monetyzacji Twojej gry lub aplikacji.
+---
+
+# Reklamy
+
+Reklamy stały się bardzo powszechnym sposobem na zarabianie w grach mobilnych i webowych tworząc dochodowy biznes. Jako deweloper gry z reklamami otrzymujesz pieniądze w zależności od liczby osób oglądających reklamy w Twojej grze. Zazwyczaj większa liczba graczy oznacza większe dochody z reklam, ale oczywiście istnieją też inne czynniki wpływające na zarobki:
+
+* Jakość reklam - reklamy odpowiadające użytkownikowi przykuwają ich uwagę i zwiększają szansę na interakcję.
+* Format reklam - reklamy banerowe (zasłaniające część ekranu) zazwyczaj są mniej opłacane niż pełnoekranowe, szczególnie odtwarzane od początku do końca.
+* Sieć reklamodawcza - sieci reklamodawcze różnią się między sobą ofertami, a co za tym idzie możliwymi zarobkami.
+
+::: sidenote
+CPM = Cost per mille - wysokość pieniędzy, jaką reklamodawca wypłaca za tysiąc wyświetleń danej reklamy. Wartości te różnią się między formatami reklam i sieciami reklamodawczymi.
+:::
+
+## Format reklam
+
+Jest wiele formatów reklam, które można używać w grach. Najpopularniejsze to banery, reklamy między przejściami (interstitial) i nagradzane (reward):
+
+### Reklamy banerowe
+
+Banery to tekstowe, obrazkowe lub filmowe reklamy zasłaniające relatywnie małą część ekranu, zazwyczaj na górze lub dole ekranu. Są one bardzo łatwe w implementacji i pasują do typowych gier z jednym ekranem, gdzie łatwo jest zarezerwować fragment obszaru ekranu na reklamę. Banery są najlepiej wykorzystane, gdy gracze grają bez przerywania (np. ładowania i przechodzenia między ekranami).
+
+### Reklamy między przejściami (interstitial)
+
+Reklamy typu "interstitial" to pełnoekranowe reklamy z animacją lub video, a czasem nawet z interaktywnymi mediami. Są zazwyczaj wyświetlane między poziomami, podczas ładowania lub między sesjami gry jako naturalnie odbierana przerwa w rozgrywce. Zazwyczaj samych wyświetleń takich reklam jest mniej niż banerowych (ze względu na charakter momentu wyświetlenia), ale CPM jest zdecydowanie wyższe niż w przypadku banerów, co wiąże się w oczywisty sposób z większymi dochodami.
+
+### Reklamy nagradzane (reward)
+
+Reklamy nagradzane (znane też jako motywacyjne) są opcjonalne, przez co i mniej agresywne niż pozostałe. Zazwyczaj są pełnoekranowe, więc skupiają całą uwagę gracza. Użytkownik w nagrodę może wybrać sobie korzyść za obejrzenie reklamy - przykładowo daną ilość growej waluty, przedmioty, dodatkowe życia, dodatkowy czas (lub wręcz przeciwnie - skrócenie czasu oczekiwania na coś) czy jakikolwiek benefit czy walutę pasującą do gry. Reklamy nagradzane mają zazwyczaj większe CPM, ale ilość wyświetleń jest stricte związana z chęciami użytkowników. Reklamy te wygenerują więc spory dochód, jeśli nagrody będą wystarczająco wartościowe, aby zachęcić użytkownika do ich obejrzenia i oferowane powinny być w najlepszym dogodnym czasie.
+
+
+## Sieci reklamodawców
+
+[Defold Asset Portal](/tags/stars/ads/) posiada wiele rozszerzeń umożliwiających integrację z różnymi dostawcami reklam:
+
+* [AdMob](https://defold.com/assets/admob/) - Google ad network.
+* [Enhance](https://defold.com/assets/enhance/) - Różne sieci. Wymaga dodatkowego kroku po zbudowaniu, w celu dołączenia danych sieci.
+* [Facebook Instant Games](https://defold.com/assets/facebookinstantgames/) - Reklamy w grach Facebook Instant.
+* [IronSource](https://defold.com/assets/ironsource/) - IronSource Ad network.
+* [Unity Ads](https://defold.com/assets/defvideoads/) - Unity Ads network.
+
+
+# Jak zintegrować reklamy do Twojej gry?
+
+Jeśli wybrałeś już dostawcę reklam i ich format postępuj zgodnie z krokami instalacyjnymi i instrukcjami użytkowania dla danych rozszerzeń. W większości przypadków dodajesz bibliotekę do projektu określając tzw. [project dependency](/manuals/libraries/#setting-up-library-dependencies). Kiedy masz zaimportowaną bilbiotekę do Twojego projektu możesz kontynuować integrację i wywoływać w kodzie funckje specyficzne dla danego modułu umożliwiające ładowanie i wyświetlanie reklam.
+
+
+# Łączenie reklam i zakupów wewnątrz aplikacji
+
+Popularnym rozwiązaniem jest umożliwienie wyłączenia reklam po uiszczeniu opłaty poprzez zakup wewnątrz aplikacji, czyli [In-app purchase](/manuals/iap).
+
+
+## Więcej
+
+Jest wiele źródeł, z których można dowiedzieć się więcej na temat reklam i optymalizacji zysków (w języku angielskim):
+
+* Google AdMob [Monetize mobile games with ads](https://admob.google.com/home/resources/monetize-mobile-game-with-ads/)
+* Game Analytics [Popular ad formats and how to use them](https://gameanalytics.com/blog/popular-mobile-game-ad-formats.html)
+* deltaDNA [Ad serving in games: 10 expert tips](https://deltadna.com/blog/ad-serving-in-games-10-tips/)

+ 142 - 0
docs/pl/manuals/android.md

@@ -0,0 +1,142 @@
+---
+title: Rzwój oprogramowania w Defoldzie na platformę Android
+brief: Instrukcja odpowiada na pytania jak zbudować i uruchomić grę lub aplikację stworzoną w Defoldzie na urządzeniach z systemem Android.
+---
+
+# Android development
+
+Urządzenia z systemem Android pozwalają na swobodne otwieranie Twoich własnych aplikacji i gier. Jest bardzo łatwo zbudować wersję gry i skopiować ją na takie urządzenie. Instrukcja ta opisuje kroki procesu pakowania aplikacji na system Android. Podczas tworzenia oprogramowania z Defoldem, otwieranie i testowanie Twojej gry poprzez specjalną aplikacją zwaną [development app](/manuals/dev-app) jest często preferowane, ponieważ umożliwia szybkie przeładowanie zawartości nawet podczas działania programu i programowanie urządzenia bezprzewodowo.
+
+## Proces podpisywania Android i Google Play
+
+Android wyamaga, aby aplikacje, które chcesz zainstalować na urządzeniu były cyfrowo podpisane. W przeciwieństwie do iOS, gdzie wszystkie certyfikaty są przyznawane przez Apple, Android umożliwia własnoręczne podpisanie aplikacji, więc można swobodnie tworzyć certyfikaty i klucze wymagane do podpisywania.
+
+Proces tworzenia certyfikatów i kluczy może wyglądać na skomplikowany, ale podczas tworzenia oprogramowania Defold go automatyzuje. Kiedy tworzysz aplikację i pakujesz ją do paczki (ang. Android application bundle) możesz podać specyficzny certyfikat i klucz. Jeśli tego nie zrobisz, Defold wygeneruje je za Ciebie i podpisze aplikację automatycznie.
+
+Ważne, aby zaapamiętać, że przy releasowaniu aplikacji na Google Play, będziesz musiał stworzyć certyfikat i klucz, którymi właśnie podpiszesz tę aplikację. Powodem tego jest to, że _podczas publikowania zaktualizowanej wersji aplikacji użyć musisz tego samego podpisu jak dotychczasowa wersja_. Jeśli podpiszesz aplikację innym kluczem, Google Play odrzuci aktualizację i będziesz musiał opublikować aplikację jako osobna, nowa aplikacja.
+
+Możesz przeczytać więcej na ten temat na stronie [Google Play developer console](https://play.google.com/apps/publish/).
+
+## Tworzenie certyfikatów i kluczy
+
+Musisz stworzyć certyfikaty w formacie *.pem*, a klucze w formacie *.pk8*. Możesz je wygenerować korzystając z narzędzia `openssl`:
+
+```sh
+$ openssl genrsa -out key.pem 2048
+$ openssl req -new -key key.pem -out request.pem
+$ openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
+$ openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
+```
+
+Uzyskasz dzięki temu pliki *certificate.pem* i *key.pk8*, które użyjesz do podpisania aplikacji.
+
+::: important
+Upewnij się, że przechowywujesz certyfikaty i klucze w bezpiecznym miejscu. Jeśli je zgubisz, _nie będziesz mógł_ w żaden sposób zaktualizować aplikacji na Google Play.
+:::
+
+## Tworzenie paczki - Android application bundle
+
+Edytor Defold umożliwia łatwe stworzenie paczki z aplikacją. Przed pakowaniem określasz, których ikon należy używać, wersję produktu itd. w pliku "game.project". Więcej tutaj: [plik konfiguracyjny projektu](/manuals/project-settings/#android).
+
+Aby stworzyć paczkę kliknij <kbd>Project ▸ Bundle... ▸ Android Application...</kbd> w menu.
+
+Jeśli chcesz, aby Defold automatycznie stworzył certyfikat, zostaw pola *Certificate* i *Private key* puste:
+
+![Signing Android bundle](images/android/sign_bundle.png)
+
+Jeśli chcesz podpisać paczkę własnym certyfikatem i kluczem, wskaż odpowiednie pliki *.pem* i *.pk8*:
+
+![Signing Android bundle](images/android/sign_bundle2.png)
+
+Defold wspiera tworzenie zarówno paczek APK i AAB. Wybierz APK lub AAB z rozwijanej listy "Bundle Format".
+
+Kliknij <kbd>Create Bundle</kbd> po skonfigurowaniu wszystkich ustawień. Będziesz poproszony o wskazanie lokalizacji na Twoim urządzeniu do zapisania zbudowanej paczki.
+
+![Android Application Package file](images/android/apk_file.png)
+
+### Instalowanie paczek na Androidzie
+
+#### Instalowanie APK
+
+Plik *.apk* może być skopiowany na Twoje urządzenie z systemem Android przy użyciu narzędzia `adb` (zobacz poniżej) lub załadowane do Google Play poprzez [Google Play developer console](https://play.google.com/apps/publish/).
+
+```
+$ adb install Defold\ examples.apk
+4826 KB/s (18774344 bytes in 3.798s)
+  pkg: /data/local/tmp/my_app.apk
+Success
+```
+
+#### Instalowanie AAB
+
+Plik *.aab* może być załadowany do Google Play poprzez [Google Play developer console](https://play.google.com/apps/publish/). Jest również możliwe wygenerowanie pliku *.apk* z pliku *.aab*, aby zainstalować je lokalnie dzięki [Android bundletool](https://developer.android.com/studio/command-line/bundletool).
+
+## Pozwolenia
+
+Silnik Defold wymaga niektórych pozwoleń, aby wszystkie jego elementy mogły działać. Pozwolenia są zdefiniowane w pliku `AndroidManifest.xml`, wybranym w pliku "game.project": [plik konfiguracyjny projektu](/manuals/project-settings/#android). Możesz dowiedzieć się więcej na temat pozwoleń w systemie Android w [oficjalnej dokumenetacji](https://developer.android.com/guide/topics/permissions/overview). Następujące pozwolenia są wymagane przy użyciu domyślnego pliku manifest:
+
+### android.permission.INTERNET i android.permission.ACCESS_NETWORK_STATE (Protection level: normal)
+Pozwala aplikacji na otwieranie połączeń internetowych i uzyskiwaniu informacji na temat sieci. Potrzebne są przy dostępie do Internetu. ([Android official docs](https://developer.android.com/reference/android/Manifest.permission#INTERNET)) i ([Android official docs](https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE)).
+
+### android.permission.WRITE_EXTERNAL_STORAGE (Protection level: dangerous)
+Pozwala aplikacji na zapisywanie do pamięci zewnętrznej. Od poziomu 19 API to pozwolenie nie jest wymagane do zapisu i odczytu plików w lokalizacji przeznaczonej dla Twojej aplikacji (otrzymanej przez Context.getExternalFilesDir(String) i Context.getExternalCacheDir()). To pozwolenie jest wymagane, gdy chcesz zapisywać do lub odczytywać dane z plików z dysku (używając metod z io.* lub sys.save/load) poza lokalizacją wskazaną przez [sys.get_save_file()](/ref/sys/#sys.get_save_file:application_id-file_name) i mając `android:minSdkVersion` ustawione na mniejsze niż 19 w pliku manifest. ([Android official docs](https://developer.android.com/reference/android/Manifest.permission#WRITE_EXTERNAL_STORAGE)).
+
+### android.permission.WAKE_LOCK (Protection level: normal)
+Pozwala na użwanie PowerManagera, aby powstrzymać procesor przed przyciemnianiem ekranu lub wygaszaniem. Potrzebne jest do tego, by tymczasowo powstrzymać urządzenie przed uśpieniem podczas otrzymywania powiadomień. ([Android official docs](https://developer.android.com/reference/android/Manifest.permission#WAKE_LOCK))
+
+
+## Narzędzie adb - Android Debug Bridge
+
+Narzędzie `adb` jest łatwym i wszechstronnym programem do interakcji z urządzeniami z systemem Android. Możesz ściągnąć je i zainstalować jako część Android SDK Platform-Tools, dla systemów Mac, Linux czy Windows.
+
+Ściągnij Android SDK Platform-Tools z: [https://developer.android.com/studio/releases/platform-tools](https://developer.android.com/studio/releases/platform-tools). Znajdziesz narzędzie *adb* w */platform-tools/*. Alternatywnie, paczki dla konkretnych platform mogą zostać zainstalowane przez odpowiednie managery paczek.
+
+Na Ubuntu Linux:
+
+```
+$ sudo apt-get install android-tools-adb
+```
+
+Na Fedora 18/19:
+
+```
+$ sudo yum install android-tools
+```
+
+Na Mac OS X (Homebrew)
+
+```
+$ brew cask install android-platform-tools
+```
+
+Możesz sprawdzić czy `adb` działa łącząc Twoje urządzenie z systemem Android do Twojego komputera przez USB i użyć komendy:
+
+```
+$ adb devices
+List of devices attached
+31002535c90ef000    device
+```
+
+Jeśli Twoje urządzenie się nie pojawi, upewnij się najpierw czy zezwolono na *USB debugging* na urządzeniu mobilnym. Otwórz ustawienia *Settings* i wyszukaj *Developer options* (lub *Development*).
+
+![Enable USB debugging](images/android/usb_debugging.png)
+
+## Debugowanie paczki z aplikacją
+
+Paczka zbudowana w trybie Debug silnika (czyli z opcją "Debug" zaznaczoną podczas budowania paczki) będzie wysyłać wszystkie swoje logi do systemu Android. Uzyskaj dostęp do tych logów przez narzędzie `adb` używając komendy`logcat`. Prawdopodobnie też będziesz chcieć przefiltrować wynik używając tagu (`-s [tagname]`):
+
+```
+$ adb logcat -s "defold"
+--------- beginning of /dev/log/system
+--------- beginning of /dev/log/main
+I/defold  ( 6210): INFO:DLIB: SSDP started (ssdp://192.168.0.97:58089, http://0.0.0.0:38637)
+I/defold  ( 6210): INFO:ENGINE: Defold Engine 1.2.50 (8d1b912)
+I/defold  ( 6210): INFO:ENGINE: Loading data from:
+I/defold  ( 6210): INFO:ENGINE: Initialised sound device 'default'
+I/defold  ( 6210):
+D/defold  ( 6210): DEBUG:SCRIPT: Hello there, log!
+...
+```
+
+## FAQ
+:[Android FAQ](../shared/android-faq.md)

BIN
docs/pl/manuals/assets/Vector_Math_Library-Overview.pdf


BIN
docs/pl/manuals/images/3dgraphics/add_animation.png


BIN
docs/pl/manuals/images/3dgraphics/animationset.png


BIN
docs/pl/manuals/images/addressing/absolute.png


BIN
docs/pl/manuals/images/addressing/bean.png


BIN
docs/pl/manuals/images/addressing/bean_buddy.png


BIN
docs/pl/manuals/images/addressing/bean_editor.png


BIN
docs/pl/manuals/images/addressing/bean_shield.png


BIN
docs/pl/manuals/images/addressing/bean_shield_editor.png


BIN
docs/pl/manuals/images/addressing/collection_team.png


BIN
docs/pl/manuals/images/addressing/manager_editor.png


BIN
docs/pl/manuals/images/addressing/name_collision.png


BIN
docs/pl/manuals/images/addressing/relative_same.png


BIN
docs/pl/manuals/images/addressing/team_editor.png


BIN
docs/pl/manuals/images/addressing/teams_editor.png


BIN
docs/pl/manuals/images/addressing/teams_manager.png


BIN
docs/pl/manuals/images/android/apk_file.png


BIN
docs/pl/manuals/images/android/sign_bundle.png


BIN
docs/pl/manuals/images/android/sign_bundle2.png


BIN
docs/pl/manuals/images/android/usb_debugging.png


BIN
docs/pl/manuals/images/animation/animsheet.png


BIN
docs/pl/manuals/images/animation/blender_animation.png


BIN
docs/pl/manuals/images/animation/[email protected]


BIN
docs/pl/manuals/images/animation/bounce.gif


BIN
docs/pl/manuals/images/animation/custom_curve.png


BIN
docs/pl/manuals/images/animation/frog_runloop.gif


BIN
docs/pl/manuals/images/animation/model_hierarchy.png


BIN
docs/pl/manuals/images/animation/property_animation.png


BIN
docs/pl/manuals/images/animation/[email protected]


BIN
docs/pl/manuals/images/animation/runloop.gif


BIN
docs/pl/manuals/images/animation/spine_animation.png


BIN
docs/pl/manuals/images/animation/spine_bones.png


BIN
docs/pl/manuals/images/animation/[email protected]


BIN
docs/pl/manuals/images/animation/spine_events.png


BIN
docs/pl/manuals/images/animation/spine_ingame.png


BIN
docs/pl/manuals/images/animation/[email protected]


BIN
docs/pl/manuals/images/animation/square_curve.png


BIN
docs/pl/manuals/images/animation/suzanne.gif


BIN
docs/pl/manuals/images/animation/wiggle.gif


BIN
docs/pl/manuals/images/application_lifecycle/application_lifecycle_final.png


BIN
docs/pl/manuals/images/application_lifecycle/application_lifecycle_init.png


BIN
docs/pl/manuals/images/application_lifecycle/application_lifecycle_overview.png


BIN
docs/pl/manuals/images/application_lifecycle/application_lifecycle_update.png


BIN
docs/pl/manuals/images/atlas/add.png


BIN
docs/pl/manuals/images/atlas/[email protected]


BIN
docs/pl/manuals/images/atlas/add_animation.png


BIN
docs/pl/manuals/images/atlas/[email protected]


BIN
docs/pl/manuals/images/atlas/animation_group.png


BIN
docs/pl/manuals/images/atlas/[email protected]


BIN
docs/pl/manuals/images/atlas/atlas_properties.png


BIN
docs/pl/manuals/images/atlas/[email protected]


BIN
docs/pl/manuals/images/atlas/single_images.png


BIN
docs/pl/manuals/images/atlas/[email protected]


BIN
docs/pl/manuals/images/building_blocks/bean_collection.png


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/building_blocks/building_blocks.png


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/building_blocks/building_blocks_collection_instances.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_collection_properties.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_gameobject_alter.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_gameobject_clones.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_gameobject_file.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_gameobject_instance.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_gameobject_instance_child.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_properties.png


BIN
docs/pl/manuals/images/building_blocks/building_blocks_properties_embedded.png


BIN
docs/pl/manuals/images/building_blocks/child_transform.png


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/building_blocks/childing.png


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/building_blocks/collection.png


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/building_blocks/go_instance.png


BIN
docs/pl/manuals/images/building_blocks/go_instance2.png


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/building_blocks/instance.png


BIN
docs/pl/manuals/images/building_blocks/[email protected]


BIN
docs/pl/manuals/images/bundling/bundle_menu.png


BIN
docs/pl/manuals/images/camera/create.png


BIN
docs/pl/manuals/images/camera/[email protected]


BIN
docs/pl/manuals/images/camera/follow.png


BIN
docs/pl/manuals/images/camera/projections.png


BIN
docs/pl/manuals/images/camera/[email protected]


BIN
docs/pl/manuals/images/camera/settings.png


BIN
docs/pl/manuals/images/camera/[email protected]


BIN
docs/pl/manuals/images/collection-proxy/bootstrap.png


BIN
docs/pl/manuals/images/collection-proxy/[email protected]


BIN
docs/pl/manuals/images/collection-proxy/collection_id.png


BIN
docs/pl/manuals/images/collection-proxy/[email protected]


BIN
docs/pl/manuals/images/collection-proxy/create_proxy.png


BIN
docs/pl/manuals/images/collection-proxy/[email protected]


BIN
docs/pl/manuals/images/collection-proxy/message_passing.png


BIN
docs/pl/manuals/images/collection-proxy/[email protected]


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels