1. 게임은 완성해야 한다.
2. 가장중요한 요소를 먼저 완료한다.
3. 새로운것 보다는 제일 잘하는것과 제일 잘되는것을 먼저 생각한다.
1. 게임은 완성해야 한다.
2. 가장중요한 요소를 먼저 완료한다.
3. 새로운것 보다는 제일 잘하는것과 제일 잘되는것을 먼저 생각한다.
Scrum, kanban, XP(eXtreme Programming)와 같은 애자일 소프트웨어 개발 프레임워크는 DevOps 및 CI/CD(지속적 통합/지속적 배포)와 같은 대중적인 소프트웨어 개발 프로세스의 기반을 형성합니다.
스크럼
분석, 설계, 개발, 테스트 반복
폭포수 모델중 일부를 반복
온보딩 - 신입개발자
직무교육
인프라교육 : 구글 클라우드, 사내 서버
핵심가치 : 익스트림 프로그랭밍 중 차용
용기: 문서로 변명하기 보단 진실되고 용기있게 개발
존중: 개발자의 역량을 존중하고 충분한 권한과 권리 부여
의사소통: 이해관계자 모두가 팀원이라는 생각으로 모든 사항 공유
피드백: 의사소통에 따른 즉각적인 피드백
단순성: 필요한 것은 하지만 더이상은 하지 않음
Fine scale feedback
Pair Programming: 하나의 작업을 2명의 프로그래머가 코딩·리뷰 공동 수행
: 하나의 작업을 멘토와 진행하고 소스는 모두 공유하고 주기적인 코딩리뷰
Planning Game: 게임처럼 선수와 규칙, 목표를 두고 기획 수행
: 개발 계획
Test Driven Development: 선 단위 테스트후 실제 코드 작성
: 코드작성
Whole Team: 개발 효율을 위해 고객을 프로젝트 팀원으로 상주
: 한나의 개발팀으로 묶음 , 기획,클라이언트프로그래머,서버프로그래머
Continuous process
Continuous Integration: 상시 빌드 및 배포가 가능한 상태로 유지
: CI 툴 활용 jenkins 누구나 빌드, 배포가 가능하도록
Design Improvement: 코드 개선 작업 수행(가시성, 성능 등), 불필요한 기능 제거 및 리팩토링
:
Small Releases: 짧고 잦은 릴리즈로 고객이 변경사항을 볼 수 있게 함 → 잦은 피드백
: 지속적인 내부 테스트 가능하도록
Shared understanding
Coding Standards: 표준화된 관례에 따라 코드 작성
: 표준 코딩 인벤션 사용, 디자인패턴 관련 용어
Collective Code Ownership: 시스템에 있는 소스코드는 팀의 모든 프로그래머가 언제라도 수정 가능
Simple Design: 가능한 가장 간결한 디자인 상태 유지
System Metaphor: 최종적으로 개발 되어야 할 시스템의 구조를 조망
: 전체 개발의 목표 , 조망
Programmer welfare
Sustainable Pace: 오버타임 지양
능률 우선, 시간 절약 방밥
agora.io 사용시 방리스트 구현이 안되어 있음
1. 웹서버로 구션 : db 는 메모리, redis, mongodb
우선 몽고 db로 구현후 속도 여하에 따라 redis 구현할것
2. 소켓서버로 구현 : 별도 서버 필요, 수평확장이 용이하도록 구현하기 위해선 여러가지 필요
3. agora.io 로 방 리스트 구현 방식 고민
별도 채널을 방리스트 구현가능하나 최대 인원수 문제로 제약이 심함
간단한 채팅일 경우 구현 가능할듯
4. redis cloud 로 구현
동시 접속 30 제한으로 별도 서버로 구현해야함
unity webgl 시 minimal 로 빌드하면 모바일에서 경고 메세지가 나오지 않음
테두리까지 화면을 쓸려면 아래 내용을 추가할것
body {
touch-action: none;
}
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link type="text/css" rel="stylesheet" href="main.css">
<title>Unity WebGL Player | html5</title>
<style>
body {
touch-action: none;
}
</style>
</head>
<body style="text-align: center">
<div id="unity-container" style="position: absolute; width: 100%; height: 100%">
<canvas id="unity-canvas" width={{{ WIDTH }}} height={{{ HEIGHT }}} style="width: 100%; height: 100%"></canvas>
</div>
<script src="Build/bin.loader.js"></script>
<script>
if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
// Mobile device style: fill the whole browser client area with the game canvas:
var meta = document.createElement('meta');
meta.name = 'viewport';
meta.content = 'width=device-width, height=device-height, initial-scale=1.0, user-scalable=no,minimum-scale=1.0, maximum-scale=1.0, shrink-to-fit=yes';
document.getElementsByTagName('head')[0].appendChild(meta);
}
createUnityInstance(document.querySelector("#unity-canvas"), {
dataUrl: "Build/bin.data",
frameworkUrl: "Build/bin.framework.js",
codeUrl: "Build/bin.wasm",
streamingAssetsUrl: "StreamingAssets",
companyName: "DefaultCompany",
productName: "html5",
productVersion: "0.1",
// matchWebGLToCanvasSize: false, // Uncomment this to separately control WebGL canvas render size and DOM element size.
// devicePixelRatio: 1, // Uncomment this to override low DPI rendering on high DPI displays.
});
</script>
</body>
</html>
unity 에서 화상채팅 솔루션 비교
webrtc
서버 구축이 문제
https://assetstore.unity.com/packages/tools/network/webrtc-video-chat-68030
agora.io
비용이 문제
https://assetstore.unity.com/packages/tools/video/agora-video-sdk-for-unity-134502
채팅 솔루션과 비디오 솔루션이 있지만 p2p 이미로 방생성관리 기능이 없음
이부분을 따로 구현해야 함