Code Monkey home page Code Monkey logo

interview.naptime's Introduction

Original README Wymagana wersja Unity (do wyboru jedna z podanych): 2022.3.4f1 2022.3.0f1 2021.3.28f1 Dostarczenie projektu: Git

Wytyczne:

  • gra nie musi posiadać assetów innych niż te dostarczone, elementy gamepleyowe mogą zostać stworzone na assetach standardowo dostępnych w Unity
  • UI ma zostać zbudowane TYLKO z elementów dostarczonych
  • gra nie musi posiadać muzyki/dźwięków
  • obiekt posiada 3 życia
  • każdy obiekt spawnuje się w losowym (widocznym) miejscu na planszy
  • pierwsza pozycja spawnu NIE MUSI równać się każdym kolejnym pozycjom tego samego obiektu po stracie życia
  • obiekty NIE POWINNY się stykać
  • nie liczą się efekty wizualne w gameplayu a optymalizacja działania gry
  • zarówno obiekt, jak i jego pocisk musi mieć swoją wizualną reprezentację

Opis gry do zrealizowania:

Gra rozpoczyna się poprzez wyświetlenie okna wyboru liczby obiektów (50, 100, 250, 500) - widocznym na mockupie. Po wyborze liczby obiektów udostępnia się możliwość rozgrywki (jak na mockupie). Po kliknięciu start wszystkie obiekty spawnują się w tym samym czasie. Każdy z obiektów obraca się o losową wartość (0,360) stopni, co losowy czas (0,1) sekund. Co sekundę każdy z obiektów wystrzeliwuje pocisk skierowany w stronę w którą aktualnie jest obrócony. Pocisk może trafić w zespawnowany (1 ze 50/100/250/500) obiekt. Po trafieniu obiekt traci jedno ze swoich żyć i znika z planszy. Jeżeli obiekt ma więcej niż 1 dostępne życie wraca po 2 sekundach od śmierci na planszę i wykonuje wyżej opisaną mechanikę. Gra toczy się aż do momentu gdy wszystkie obiekty nie znikną z planszy na zawsze prócz jednego. Po zakończeniu gry pojawia się Button "Main menu", który pozwala włączyć grę na nowo (jak na mockupie) - wraca do okienka z wyborem liczby obiektów.

Wersja Unity

  • 2022.3.4f1
  • 2022.3.0f1
  • 2021.3.28f1

Wytyczne

  • UI tylko z dostarczonych assetów
  • oceniana będzie optymalizacja

    Zastosowane optymalizacje:

    • Object pooling (osobno dla obiektów i pocisków)
    • Dynamic batching + tylko 1 shader
    • GPU instancing
    • Wykrywanie kolizji: Physics.CheckSphere + Physics.OverlapSphereNonAlloc
    • Canvas grouping
    • Heurystyczny algorytm znajdowania niezajętego miejsca spawnu
    • 1x GetComponent() + 0x FindXYZ()
    • Eventy zamiast pollingu w Update
    • Wyłączony domain reloading (optymalizacja czasu iteracji projektu, nie samego runtime'u)
  • obiekt:
    • spawnuje się w losowym widocznym miejscu

    Po spawnowaniu kamera jest oddalana tak, aby uchwycić wszystkie obiekty

    • nie dotyka innych obiektów
    • posiada 3 życia
    • obiekty i pociski mają wizualną reprezentacje

Opis gry

  • Gra rozpoczyna się poprzez wyświetlenie okna wyboru liczby obiektów
mockup

Mockup1

  • Po wyborze liczby obiektów udostępnia się możliwość rozgrywki
mockup

Mockup2

  • Po kliknięciu start wszystkie obiekty spawnują się w tym samym czasie
  • Każdy z obiektów obraca się o 0-360 stopni co 0-1 sekund
  • Co 1 sekundę każdy z obiektów wystrzeliwuje przed siebie pocisk
  • Jeśli pocisk trafi w obiekt:
    • obydwoje się despawnują
    • obiekt traci 1 życie
    • jeżeli obiekt nadal ma więcej niż 1 życie, respawnuje się po 2 sekundach
  • Gra kończy się jak zostanie tylko 1 obiekt
  • Po zakończeniu gry pojawia się okno z przyciskiem "Main menu", który wraca do wyboru liczby obiektów
mockup

Mockup3

Sterowanie

Debugowe, zostało dodane dla ułatwienia testowania:

  • Escape - wymuszenie stanu gry "Game Over"
  • Mouse Scroll Up - przyspieszenie rozgrywki o 10%
  • Mouse Scroll Down - spowolnienie rozgrywki o 10%

Konfiguracja

W folderze Assets/Scriptables są 2 SO - GameSettings oraz UISettings

image image

interview.naptime's People

Contributors

vheos avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.