Coder Social home page Coder Social logo

interview.beastgames's Introduction

image

  • Na scenie powinno znajdować się 5 obiektów do zniszczenia (np beczka, hydrant, etc.) oraz gacz,

    obiekty do zniszczenia mają komponent 'Destructible' i są to: Krzak, Drzewo, Skała, Lampa, Kryształ

  • Wymienione wyżej obiekty mają na sobie informacje z jakiego rodzaju materiału są zrobione oraz ich wytrzymałość. Materiał nie jest powiązany z klasą material wbudowana w Unity, lecz określa z czego fizycznie wykonany jest obiekt,

    wytrzymałość to standardowo 'Health' / HP materiał wykonania określiłem jako 'ArmorType' / Armor obiekty posiadają komponent 'Destructible' i są to:

    • krzak - 30 HP / Plant armor
    • drzewo - 35 HP / Wood armor
    • skała - 40 HP / Stone armor
    • latarnia - 45 HP / Metal armor
    • kryształ - 50 HP / Crystal armor
  • Gracz powinien się poruszać jak w klasycznym FPS,

    klasyczny WSAD + Spacja

  • Gracz posiada 3 różne bronie – każda broń ma określone jaki rodzaj obiektu niszczy oraz jak duże obrażenia robi – sposób zmiany broni jest dowolny,

    • kusza - natychmiastowy hitscan (raycast)
    • shotgun - 6 rozproszonych pocisków (rigidbody, continuous collision)
    • granatnik - strzał granatem (rigidbody), po 2 sekundach eksplozja (spherecast)
  • Gdy gracz celuje w obiekt powinien móc go zniszczyć, jeśli broń którą aktualnie dzierży ma możliwość uszkodzenia danego rodzaju materiału,

    zamiast binarnego "może / nie może zniszczyć" stworzyłem system modyfikatorów obrażeń, gdzie każda broń posiada:

    • bazowe obrażenia
    • listę mnożników obrażeń zależnie od materiału celu
    • domyślny mnożnik jeśli nie sprecyzowano danego materiału

    Przykład:

    • kusza zadaje 4 obrażenia
    • roślinnemu materiałowi zadaje pełne obrażenia
    • drewnianemu - tylko 25% bazowych obrażeń, czyli 1
    • każdemu innemu - zaledwie 5% obrażeń, więc 0.2
  • Zniszczony obiekt powinien mieć możliwość podpięcia pod siebie dowolnych funkcji, które wywoływać się będą po jego zniszczeniu – np wywołanie particle effects, lub otworzenie drzwi, etc. Obiekt powinien móc przyjąć dowolne zachowanie bez konieczności dopisywania kodu do jego klasy,

    • zastosowałem ładnie opakowane UnityEvents. Z dostępem do Odina można by się pokusić o jeszcze bardziej modularny system
  • Wszystkie elementy graficzne typu animacja, particle effects, etc. wpływaja korzystnie na zadanie testowe,

    • testowa scena zaimportowana z szablonu Unity 'First Person', materiały podmienione na 'Default-Material'
    • zniszczalne obiekty posiadają animacje otrzymywania obrażeń oraz zniszczenia
    • każdy rodzaj materiału obiektu wywołuje inny particle effect przy trafieniu (np. strzał w drzewo wyrzuca wióry, a w metal - iskry)
    • pociski zostawiają za sobą smugi (TrailRenderer)

    Źródła assetów:

  • Wszystkie elementy zadania testowego powinny być traktowane jako część większego rozszerzalnego systemu,

    • zero dziedziczenia klas, cała rozszerzalność dzięki kompozycji
    • używanie prefab variantów gdzie tylko można
    • dzielenie obiektów na niewielkie, wyspecjalizowane klasy
    • sporo UnityEventów edytowalnych z inspektora
  • Zadanie testowe powinno zostać wysłane jako pełny projekt wykonany w Unity3D w wersji 2021.3.5f1, prosimy również umieścić w projekcie informacje na temat sterowania.

    podczas rozgrywki sterowanie jest wypisane w UI, jak na obrazku


Original README Zadanie testowe

Wykonaj poniższe założenia gry typu First Person Shooter:

  • Na scenie powinno znajdować się 5 obiektów do zniszczenia (np beczka, hydrant, etc.) oraz gracz,
  • Wymienione wyżej obiekty mają na sobie informacje z jakiego rodzaju materiału są zrobione oraz ich wytrzymałość,
  • Materiał nie jest powiązany z klasą material wbudowana w Unity, lecz określa z czego fizycznie wykonany jest obiekt,
  • Gracz powinien się poruszać jak w klasycznym FPS,
  • Gracz posiada 3 różne bronie – każda broń ma określone jaki rodzaj obiektu niszczy oraz jak duże obrażenia robi – sposób zmiany broni jest dowolny,
  • Gdy gracz celuje w obiekt powinien móc go zniszczyć, jeśli broń którą aktualnie dzierży ma możliwość uszkodzenia danego rodzaju materiału,
  • Zniszczony obiekt powinien mieć możliwość podpięcia pod siebie dowolnych funkcji, które wywoływać się będą po jego zniszczeniu – np wywołanie particle effects, lub otworzenie drzwi, etc. Obiekt powinien móc przyjąć dowolne zachowanie bez konieczności dopisywania kodu do jego klasy,
  • Wszystkie elementy graficzne typu animacja, particle effects, etc. wpływaja korzystnie na zadanie testowe,
  • Wszystkie elementy zadania testowego powinny być traktowane jako część większego rozszerzalnego systemu,
  • Zadanie testowe powinno zostać wysłane jako pełny projekt wykonany w Unity3D w wersji 2021.3.5f1, prosimy również umieścić w projekcie informacje na temat sterowania.

Wykonane zadanie prosimy wysłać na adres e-mail: [email protected]

Beast Games S.A.

interview.beastgames'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.