전체 글

반갑습니다! 개발한 프로젝트들과 공부한 내용들을 정리하여 게시하고 있습니다.
·게임서버
컴퓨터 네트워크는 크게 단말기와 네트워크 기기로 구성된다. 여기서 단말기란, 통신을 하는 주체를 지칭한다. 단말기에는 데스크톱 컴퓨터, 노트북, 스마트폰, 서버 컴퓨터 등이 포함된다. LAN LAN은 가까운 지역을 묶는 대표적인 컴퓨터 네트워크이다. LAN은 한정된 지역에서 컴퓨터를 기본으로 하는 여러가지 전자 기기 간에 자유롭게 정보 교환을 가능하게 한다. LAN은 사용자가 직접 구축해서 운영하기 어렵지 않다. 심지어 제조사가 달라도, 기기 간의 통신 규약이 달라도 가능하다. OSI 모델의 표준만 지켜주면 된다. OSI 모델 OSI 모델은 계층 1부터 7까지 있다. 계층 1 : 물리 계층 물리 계층에서는 하드웨어를 다룬다. 예를 들어 보낼 데이터를 어떤 파형의 전류로 보낼지 등을 정의한다. 계층 2 :..
·게임서버
임계 영역을 해결하기 위한 방법 뮤택스 공유된 자원(공유자원)의 데이터 혹은 임계영역 등에 하나의 프로세스 혹은 스레드가 접근하는 것을 막아준다. 세마포어 뮤택스는 공유된 자원에서의 동기화 대상이 하나만일때 세마포어는 공유된 자원에서의 동기화 대상이 하나 이상일 때 원자조작 뮤텍스나 임계영역 잠금 없이도 여러 스레드가 안전하게 접근할 수 있는 것 하드웨어의 기능이며, 대부분의 컴파일러에서 원자 조작 기능을 쓸 수 있다. ​ 32비트나 64비트의 변수 타입에 여러 스레드가 접근할 때 한 스레드씩만 처리됨을 보장한다. 변수 값 2~3개 이하에서만 보호해주며, 변수를 읽거나 쓰는 방식이 몇 개 안된다.
·게임서버
스레드 (Thread) 스레드란 어떠한 프로그램(프로세스) 내에서 실행되는 흐름의 단위 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 프로세스 - 팀, 스레드 - 팀장 느낌 스레드의 장점 응답성 향상 자원 공유 효율성 향상 동시성 간결성 스레드의 단점 스레드 간의 상호간섭 성능 저하 동기화 이슈 자원 소비 스레드 C# 예제 멀티스레드 두개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다. 쉬운 일을 여러명이서 처리 할 때 사용 어려운 일 하나를 여러명이서 동시에 할 때 사용 CPU 성능을 최대한 활용해야 할 때 사용 멀티스레드의 장점 응답성 향상 자원 효율성 동시성 간결성 멀티스레드의 단점 임계영역(교착상태) 성..
·프로젝트
📣 2학년 팀프로젝트 우수작 📣 2023년 2학기 5인 팀 프로젝트로 제작한 유니티 3d 퍼즐 게임입니다.   2023년 2학년 2학기 때 약 3주의 교내 팀 프로젝트 기간동안 열심히 만든 팀 프로젝트입니다.3학년 졸업작품까지 이어질 5인 팀을 구성하고 나서 처음으로 제작한 팀 프로젝트였습니다.처음이라 합을 맞춰본 적이 없는 만큼 코드 병합이나 기획 쪽에서 아쉬움도 조금 있었지만 처음으로 제대로 된 팀 프로젝트를해본 느낌이라 좋은 경험이었다고 생각합니다. 게임 다운로드 링크 (구글 드라이브에서 유니티 빌드본으로 다운로드) https://drive.google.com/drive/u/0/folders/126JwCrnMYzucbKwwhnLfojYRwpUPuhqu 엔진 팀프로젝트 - Google Drive이..
·C# 기초
배열 (Array) 배열이란 크기가 고정되어있는 데이터의 집합(컨테이너)이다. ↓ 선언 방식string[] FruitArray = new string[4];private void Awake(){ FruitArray[0] = "Banana"; FruitArray[1] = "Apple"; FruitArray[2] = "Orange"; FruitArray[3] = "Lemon";}//또는 string[] FruitArray = new string[4] { "Banana", "Apple", "Orange", "Lemon" }; ↓ 사용 예시string[] FruitArray = new string[4] { "Banana", "Apple", "Orange", "Lemon" };private ..
·C# 기초
delegate(델리게이트) 프로그래밍을 하다 보면, 매개변수로 값이 아닌 코드 자체를 넘기고 싶을 때가 있다.이럴 때 delegate(델리게이트)를 사용하면 좋다. 델리게이트란, 메서드 대리자이다.델리게이트를 선언하고 그곳에 원하는 메서드를 참조시킬 수 있다. 쉽게 말하면, 박스(델리게이트)를 만들고, 박스 안에 함수를 넣고 나중에 박스를 가져와 함수를 실행시키는 것이다.델리게이트는 형식(Type)이고, private 또는 protected가 아니면 외부에서 실행시킬 수 있다. 사용 방식 (같은 클래스 안의 델리게이트 사용 방식)public class DelegateTest : MonoBehaviour{ delegate void dt(int a); public void func(int a) ..
7785번: 회사에 있는 사람첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는www.acmicpc.net 문제설명  상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오.  입출력  현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다.   풀이 #include #include using namespace std;int main(){ set _s; ..
·강의 공부
이제 퀘스트 시스템의 핵심인 Quest를 만들 차례다. 퀘스트 스크립트를 생성하고 ScriptableObject를 상속받는다. 그리고 Linq를 쓸것이기 때문에 Linq namespace도 적어준다. 우리가 Quest라고 했을 때 필수적으로 떠오르는 것들이 있다. Category, Icon, Quest의 이름, Quest의 설명, 그리고 CodeName 등등.. 이런것들을 구현해주겠다. 기본적인 필드들을 생성해준다. description은 인스펙터 상에서 설명이 길어질 수도 있기 때문에 TextArea를 추가해준다. Quest도 Task처럼 State를 관리할 수 있으면 편리하기 때문에 QuestState enum을 만든다.
입니다최원석
원석의 게임개발 블로그