분류 전체보기

· Game/Unity
Sentis유니티에서 AI를 활용할 수 있게 해주는 Sentis를 분석해 보자.https://unity.com/kr/products/sentis Unity 센티스: Unity 런타임에서 AI 모델 사용 | UnitySentis는 게임 개발에서 AI 모델 혁신을 지원합니다. 사용자 디바이스에서 Unity Runtime을 통해 AI 모델을 실행하여 새롭고 다이내믹한 경험을 제공하세요.unity.comSentis는 학습된 AI 모델을 실행할 수 있게 해주는 패키지이다.Open Neural Network Exchange(ONNX) 형식으로 모델을 변환하면 사용할 수 있다고 한다.예제를 살펴보며 어떻게 사용하는지 알아보고 huggigface에서 모델을 받아와 사용하는 게임을 만들어 보자.https://huggin..
문제 설명영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다.영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다.화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다.클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다.화면에 있는 이모티콘 중 하나를 삭제한다.모든 연산은 1초가 걸린다. 또, 클립보드에 이모티콘을 복사하면 이전에 클립보드에 있던 내용은 덮어쓰기가 된다. 클립보드가 비어있는 상태에는 붙여넣기를 할 수 없으며, 일부만 클립보드에 복사할 수는 없다. 또한, 클립보드에 있는 이모티콘 중 일부를 삭제할 수 없다. 화면에 이모티콘을 붙여넣기 하면, 클립보드에 있는 이모티콘의 개수가 화면에 추가..
문제 설명남극에 사는 김지민 선생님은 학생들이 되도록이면 많은 단어를 읽을 수 있도록 하려고 한다. 그러나 지구온난화로 인해 얼음이 녹아서 곧 학교가 무너지기 때문에, 김지민은 K개의 글자를 가르칠 시간 밖에 없다. 김지민이 가르치고 난 후에는, 학생들은 그 K개의 글자로만 이루어진 단어만을 읽을 수 있다. 김지민은 어떤 K개의 글자를 가르쳐야 학생들이 읽을 수 있는 단어의 개수가 최대가 되는지 고민에 빠졌다.남극언어의 모든 단어는 "anta"로 시작되고, "tica"로 끝난다. 남극언어에 단어는 N개 밖에 없다고 가정한다. 학생들이 읽을 수 있는 단어의 최댓값을 구하는 프로그램을 작성하시오.https://www.acmicpc.net/problem/1062      제한 사항      풀이문제를 요약하면..
· Game/Unity
레벨 디자인프로토타입을 위한 간단한 레벨 디자인 방법을 알아보자.     ProBuilderProBuilder는 레벨 디자인을 간단하지만 효과적으로 구성할 수 있게 도와주는 툴이다.실제로 아티스트가 작업한 작업물보다는 퀄리티가 떨어지겠지만 프로토타입에 쓰기에는 충분하다.ProBuilder를 설치하고 윈도우를 켜보자.NewShape을 클릭하면 도형을 간단하게 만들 수 있다.만들 도형의 종류와 설정을 결정하고 Scene View에서 드래그하면 도형이 만들어진다. ProBuilder로 만들어진 도형은 유니티 기본 도형과는 달리 추가적인 컴포넌트가 추가되어 있다.내용을 살펴보니 도형을 그리는 코드인 것 같다.최종적으로 수정이 완료되면 해당 스크립트를 삭제하고 mesh로만 동작하도록 만들어주는 것이 좋다고 한다...
· Game/Unity
Lighting씬을 구성할 때 분위기를 내는데 가장 중요한 요소는 lighting이라고 생각한다.무턱대고 light를 계속해서 늘리면 성능상의 문제가 생길 수 있다.빛에 대한 연산이 많이 소요되며 직접광뿐만 아니라 반사광까지 계산해야 하기 때문에 버벅거림, 프레임 드롭이 일어날 수 있다.이를 해결하기 위해 bake 기능을 많이 이용하는데 이에 대해 분석해 보자.     Bakebake란 lighting을 미리 계산하여 lightmap으로 구워놓는 것을 말한다.즉, 실시간으로 동작하는 게임에서 미리 계산된 빛과 그림자를 이용하여 화면에 출력하겠다는 뜻이다.이렇게 미리 계산해 놓으면 실시간으로 광원에 대한 반응을 계산할 필요가 없어지므로 성능상의 이점이 있다.단, 말그대로 미리 계산하는 것이기 때문에 움직일..
문제 설명4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다.한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다.만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다.X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다.예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다.‘()’ 인 괄호열의 값은 2이다.‘[]’ 인 괄호열의 값은 3이다.‘(X)’ 의 괄호값은 2×값(X) 으..
· Game/Unity
종속성 분석 툴 제작 종속성 분석이 끝난 노드를 보기 좋게 그리는 작업을 해보자.종속성의 계층 구조 및 흐름을 보기 좋게 트리 형식으로 그리며 사이클이 판정되면 해당 사이클의 연결선은 빨간색으로 표시해 보자.     데이터 저장을 위한 구조 변경 종속성 분석이 완료된 상태이니 노드를 보기 좋게 배치하는 작업이 필요하다.여러 시도를 해봤지만 선택한 노드를 중앙에 배치하고 방사형으로 퍼져 나가는 그림이 가장 보기 좋았다.그렇기 때문에 종속성을 depth를 기준으로 표현해야 한다.struct를 통해 이를 표현해 보자.public class AssetNode{ public string Path; // 에셋 경로 public int Depth; ..
문제 설명문자열과 놀기를 세상에서 제일 좋아하는 영식이는 오늘도 문자열 2개의 LCS(Longest Common Subsequence)를 구하고 있었다. 어느 날 영식이는 조교들이 문자열 3개의 LCS를 구하는 것을 보았다. 영식이도 도전해 보았지만 실패하고 말았다.이제 우리가 할 일은 다음과 같다. 영식이를 도와서 문자열 3개의 LCS를 구하는 프로그램을 작성하라.https://www.acmicpc.net/problem/1958      제한 사항      풀이문제를 요약하면, 3개의 문자열의 lcs를 구하는 것이다. 해당 문제는 2개의 문자열의 lcs를 구하는 것을 확장시키는 문제이다.그럼 2개의 문자열의 lcs를 구하는 방법을 알아보자.2개의 문자열의 lcs를 구하는 방법은 두 문자열의 요소를 하나..
문제 설명Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. 코딩 실력이 좋으면 팀워크가 떨어지고, 팀워크가 좋을수록 코딩 실력이 떨어진다. 그리고 출전하고자 하는 대회는 코딩 실력과 팀워크 모두가 중요하다.Elly는 그녀가 가르칠 수 있는 모든 학생들의 코딩 실력을 알고 있다. 각각의 코딩 실력 Ai는 -10000부터 10000 사이의 정수로 표시되어 있다. 그녀는 팀워크와 코딩 실력이 모두 적절한 팀을 만들기 위해, 세 팀원의 코딩 실력의 합이 0이 되는 팀을 만들고자 한다. 이러한 조건 하에, 그녀가 대회에 출전할 수 있는 팀을 얼마나 많이 만들 수 있는지를 계..
· Game/Unity
종속성 분석 툴 제작이제 마지막으로 종속성을 분석하고 그래프를 그리는 작업을 해보자.     종속성 분석종속성을 분석하는 방법은 여러 가지이다.AssetDatabase.GetDependencies()스크립트 분석어셈블리 분석 GetDependencies의 경우에는 meta파일을 읽어 GUID를 통해 종속성을 분석한다.프리팹 안에 또 다른 프리팹이 포함되어 있거나 이를 참조하는 등 파일 간의 종속성을 파악하는 데는 효과적이다.하지만, 일반적인 C#클래스같은 Type형태의 클래스에 대해서는 참조를 계산하지 못할 수 있다.따라서, GetDependencies를 통해 간편하게 참조를 확인할 수 있는 에셋에 대해서는 GetDependencies를 진행하고 스크립트처럼 다르게 처리해야 하는 에셋들을 분류하여 종속성..