1. 데이터베이스와 데이터베이스 시스템데이터 → 정보 → 지식DB에 저장된 값 : 데이터데이터를 조회, 분석, 가공 : 정보정보를 해석, 축적 : 지식데이터 분류정형 데이터구조화된, 2차원 테이블 ex) 엑셀반정형키-값 으로 유연하게 저장json, xml{ "이름" : "오형준", "나이" : 23, "성별" : "남"}비정형이미지, 영상 등 구조 없고 자유로움범주형(카테고리로 나눌 수 있는지) vs 수치형(숫자)학번: 범주형시험점수: 수치형!!!데이터 검색, 변경 빈도 많을수록 -> 구축 어렵고 -> 최적화 필요!!! 데이터베이스 개념공유 : 함께 소유, 이용하는 공통 데이터 - 여러 사용자 활용통합 : 최소의 중복만. 통제 가능 중복만 허용함 - 중복제거저장 : 하드디스크, 분산 서버에 저장됨, 영구..
1. 데이터베이스와 DBMS데이터베이스는 데이터를 체계적으로 저장하고 관리하기 위한 시스템이다.여러 개의 테이블이 모여 하나의 데이터베이스를 구성하며, 이러한 데이터베이스를 관리하는 소프트웨어를 DBMS(Database Management System)라고 한다.구조를 간단히 표현하면 다음과 같다.테이블 (Table) ↓ 여러 개데이터베이스 (Database) ↓ 관리DBMS (Database Management System) 대표적인 DBMS 종류관계형 DBMS (Relational DBMS)객체지향 DBMS (Object-Oriented DBMS)NoSQL / NewSQL DBMS2. 관계형 데이터 모델관계형 데이터베이스에서는 데이터를 2차원 테이블 형태로 저장 테이블 구성 요소구성요소의미열(Colu..
비공개 방을 만들기로 했다. 처음에는 Room CustomProperties에 비공개(isPrivate), 비번(pw)를 아예 넣어서 로비 리스트에서 읽도록 하려고 했다. 근데 CustomPropertiesForLobby에 pw를 넣으면 보안에 안 좋을 것 같기에… (혹여나 유저가 네트워크 패킷 열어보면?? 그냥 보이니까) 그래서 로비에는 isPrivate 만 보내고, 일단 pw는 보내지 않도록.JoinRoom을 일단 하고, 들어온 직후 방장이 비번 검증해서 틀리면 그냥 퇴장되도록 만들기로 했다.그러기 위해선 가장 간단하게는 OnJoinedRoom에서 방장에게 비번 검증 요청하는 RemoteProcedureCall을 하면 된다. 또 RPC로 방장이 검증해서 허용하거나 강퇴시키거나. 총 RPC 4개 함수가..
1월 26일1) Git 작업 흐름develop 브랜치 최신 내용 가져오기 (pull)로컬에 develop 브랜치 생성/체크아웃시야 시스템 작업용 기능 브랜치 생성feat/sight-system이후 모든 작업은 feat/sight-system 브랜치에서 진행 2) 렌더 파이프라인 세팅(UniversalRP) & 테스트씬 생성Edit → project settings → graphics → set default render pipeline asset 에 UniversalRP 세팅 2D Light & Shadow 사용을 위해 Universal Render Pipeline(URP) 적용Universal RP Asset 생성 및 프로젝트에 적용2D Renderer 사용 설정이후 Light 2D, Shadow Ca..
1월 20일Player & ItemBox Interaction 구현작업 내용 요약Test_Scene_Nam 씬 만들고 작업.플레이어와 아이템상자 간 상호작용 시스템 구현.플레이어가 아이템상자에 접근하면 상호작용 UI (줍기(E)) 텍스트가 표시되며,E키 입력 시 해당 아이템상자가 Photon 서버 기준으로 Destroy 되도록 처리.1. Player 프리팹에 상호작용 추가Player 프리팹에 PlayerInteraction 스크립트 부착이를 프리팹 자체에 적용하기 위해 overrides-apply all아이템 탐지 위해 Interactable 전용 layer 만들고, 이를 Item에 부착플레이어가 Interactable 오브젝트 근처에 접근 시:아이템 상자 윗부분에 줍기(E) UI 표시E키 입력 시:상호..
01.12타이틀씬 완성게임 시작하기 버튼 누르면 다음 ConnectScene으로 이동함. TitleUI 스크립트에서 SceneManager.LoadScene("ConnectScene"); 이용배경 및 버튼들 UI 프리팹화함.게임 방법 버튼은 아직 안함.1월 13, 14일요약:작업: 방 만들기/참여 필수 UI 배치, ConnectSceneManager 스크립트 작성, 버튼-Inspector 레퍼런스 연결검증: 중간 빌드로 Room List 생성 확인 시도 → RoomItem 생성 안 됨이슈 원인: NetworkManager → ConnectSceneManager로 리네임하면서 씬 오브젝트 인스펙터 레퍼런스들이 초기화/미연결 상태해결: 인스펙터 레퍼런스 전부 재연결 후 정상 작동 확인메모(협업): 인스펙터 ..
최근 Unity를 이용한 팀 프로젝트로 2D 멀티플레이 기반 게임을 개발하게 되었다. 여기서 내가 맡은 일은 접속 부분이었다. - Photon PUN2를 사용한 실시간 네트워크- 방 생성 / 방 참여 접속씬 구조 초기에는 접속씬의 ConnectSceneManager.cs 스크립트가 네트워크 연결부터 UI 처리까지 모두 구현하도록 코드를 짜려고 했지만, 암만 생각해도 단일책임의 원칙을 어긴 것이고, 유지보수에 악영향을 끼칠 것 같아 NetworkManager.cs 에 네트워크 관련 코드를 넣고, Init씬(일종의 까만 로딩화면)을 만들어서 거기다가 NetworkManager.cs 를 갖고 있는 오브젝트를 놓기로 했다. 구조 정리 :- InitScene : NetworkManager를 배치해 최초 1회 생..
11월 8일 마피아 게임으로 프로젝트 주제를 정하고 나서,11월 10일 오후 3시부터 오후 10시??쯤까지 figma로 Model, View, Controller, Server, Client 에 관한 클래스 다이어그램을 함께 짰다. 회의를 하다보니 각자 생각한 구조가 달라서 꽤나 오래 걸렸지만 최종적으로 그래도 MVC 패턴과 SOLID원칙 준수, 전략 패턴, 팩토리메소드 패턴 등 다양한 패턴을 사용할 수 있도록 구조를 짜보았다. 이후 사다리타기를 통해 역할 분담을 했는데, 나는 Model과 Controller쪽 코드를 짜기로 결정됐다. Model쪽 Player, ISkill(인터페이스), Kill, Heal, Inspect 클래스들과 Controller쪽 IState 인터페이스와 RoleFactory, ..
JDBC와 비교해보자. 과거의 JDBC 코드import java.sql.*;public class Main { public static void main(String[] args) { // 1) DB 연결 정보 String url="jdbc:mysql://127.0.0.1:3306/test1"; String username = "stdUser"; String passwd = "wkvmtlf2"; // 2) Connection 열기 //try-with-resource라고 한다. ()예외처리 발생하는 모든 걸 계속해서 써도 된다. 여러 line //connection 맺었으면 try (Connection conn = DriverManager.getConnection(url, us..
직업 배정 문제 해결 과정 기존에는 직업 배정을 roleFactory에서 한 후, 이 직업들을 사회자가 갖고 있는 player의 닉네임과 클라이언트매니저에서 받은 닉네임과 비교해서("if(clientManager.getMyName().equals(player.nickname))") 같으면 사회자쪽에서 갖고 있는 직업을 클라이언트매니저-> lobby 클래스의 함수인 setRoleView에 전달해주려고 했었다. 그렇지만 계속 이중 for문 안을 들어가지 못하고 당연히 if문에도 들어가지 못했었다. 이유를 몰랐었는데, 팀원 중 한 명이 싱글톤인 사회자 객체가 서버와 클라이언트 쪽에서 다르게 생성될 것 같다고 했다. 찾아보니... 서버 Java Virtual Machine이 만든 객체, 클라이언트 여러 명의 J..
