레이블이 ProjectOne인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ProjectOne인 게시물을 표시합니다. 모든 게시물 표시

2015년 4월 8일 수요일

로그인 윈도우 제작

로그인 윈도우를 만들었습니다.

안드로이드 백버튼 터치 시 종료창 팝업

안드로이드 백버튼 터치 시 종료창이 팝업되도록 만들었습니다.

멀티 캔버스 문제 발생

시스템 팝업창을 편리하게 관리하기 위해 멀티 캔버스를 사용했는데요. 제대로 동작이 안되는(버튼이 겹칠경우, CanvasGroup로 블록을 지정할 경우 등) 부분을 발견했습니다.
내일은 멀티캔버스에서 싱글 켄버스로 전환하는 작업을 해야 겠군요

다음작업

멀티 켄버스를 싱글 켄버스로 전환
로그인 코드 작업
회원가입 작업
약관 작업

2015년 4월 6일 월요일

타이틀 화면 로딩바 제작, 에셋번들 다운로드 코드 작업

타이틀 화면 로딩바 제작

타이틀 화면에서 에셋번들을 다운로드 받을 시 나오는 로딩 바를 제작했습니다. 그러나 현재 에셋번들이 너무 작기 때문에 비활성화 시켰습니다.

에셋번들 다운로드 코드 작업

테이블DB의 에셋번들이 다운로드 되고 버전이 낮을 경우 업데이트 되도록 코드작업을 완료 했습니다.

다음작업

로그인 화면 작업
회원가입 작업
약관 작업

2015년 4월 3일 금요일

시스템 팝업창 버튼 이벤트 스크립트 등록 모듈 완성

스크립트 이벤트가 순차적으로 등록되고 확인버튼을 눌렀을 시 등록된 이벤트가 순차적으로 실행되는 로직을 완성했습니다.

통신 오류 팝업창

완성

클라이언트 버전 업데이트 팝업창

완성

점검 시간 팝업창

완성

다음작업

에셋번들 다운로드 모듈 (로딩바 포함)
서버 로그인 작업 (팝업창)
로그인 오류 처리(팝업창)
자동 로그인 작업

2015년 4월 2일 목요일

Text.text 버그 , 시스템 메세지 팝업창 작업, 통신 딜레이시 로딩 이미지 팝업

Text.text 버그 

현재 Text.text에 버그?가 있습니다. ;;
스크립상에서 직접 쓴 String 문일 경우 "\n"이 동작하지만, 바이너리 파일에서 가져온 String일 경우 "\n"이 동작하지 않고 화면에 뿌려집니다. ㄷㄷ;
와 이거 때문에 몇 시간을 날렸군요. 해답은 Replace를 사용하면 됩니다 이런!! 젠장..!!!

시스템 메세지 팝업창 작업

통신 및 기타 시스템에서 사용되는 팝업창이 완성되었습니다. 그리고 접속 오류시 팝업 메시지가 팝업되도록 작업되었습니다.

통신 딜레이시 로딩 이미지 팝업

통신 딜레이시 로딩 이미지가 나오도록 하였습니다.

다음작업
팝업 버튼에 상황에 따른 이벤트 등록
최초 접속 시 상황에 따른 팝업 메시지 작업
서버 로그인 작업
로딩 화면 작업


2015년 4월 1일 수요일

5.0.04f 버전 버그로 고생, TableDB 바이너리 파일

5.0.04f 버전 버그로 고생

갑자기 바이너리 파일이 에셋번들로 안만들어 지기 시작하면서 2시간 정도 날린 것 같습니다. 프로젝트를 새로 생성하고 에셋버들 빌드를 해보니 정상적으로 빌드 되더군요;;

TableDB 바이너리 파일 

TableDB 바이너리 파일을 로컬(Editor, Android)에서 게임 실행 시 읽어오도록 작업했습니다. 여러가지 이유가 있겠지만 가장 큰 이유 중 하나는 클라이언트 업데이트 이후에 에셋 번들(바이너리 파일)을 재 다운로드 시키지 않을려는 이유입니다. (StreamingAssets 폴더에서 바이너리 파일이 있으면 해당 바이너리 파일을 모바일에서 로딩이 가능하기 때문이죠)

다음작업

Loading 윈도우 서버 연결대기시 나타나도록 하기
최초 접속 시 상황에 따른 팝업 메시지 작업
서버 로그인 작업
로딩 화면 작업

2015년 3월 31일 화요일

UI 윈도우 리소스 스프라이트 패커로 packing, 서버 연걸 딜레이시 팝업되는 Loading 윈도우 작업

UI 윈도우 리소스 스프라이트 패커로 packing

UI를 작업하기 위해 샘플 UI를 가져오고, 스프라이트 패커로 패킹을 했습니다.

서버 연걸 딜레이시 팝업되는 Loading 윈도우 작업

동적으로 움직이는 Loading 윈도우 작업을 진행했습니다.

다음작업

Loading 윈도우 서버 연결대기시 나타나도록 하기
최초 접속 시 상황에 따른 팝업 메시지 작업
서버 로그인 작업
로딩 화면 작업

2015년 3월 30일 월요일

빌드된 에셋번들 서버의 업데이트 폴더로 이동 메뉴 추가

에셋 번들을 서버에서 다운로드 할 수 있도록 에셋번들 폴더를 카피하는 메뉴를 추가하였습니다.

타이틀 화면 백그라운드 작업

타이틀 화면의 백그라운드 작업이 완료되었습니다.

다음작업

WWW 통신 시 로딩 화면 작업
최초 접속 시 상황에 따른 팝업 메시지 작업
서버 로그인 작업
로딩 화면 작업


2015년 3월 29일 일요일

TableConvert.cs 변경에 따른 VisualDesign 작업, 에셋번들 업데이트 테스트 하기

TableConvert.cs 변경에 따른 VisualDesign 작업

자동 코드 생성 작업을 위해 VisualDesign 툴을 수정하는 작업을 진행했습니다. 현재는 VisualDesign이 바이너리 파일을 만들 때 레이블 하나마다 적정성 검사를 통해 바이너리로 변환시키기 때문에 시간이 걸리는 편인데요. 이후 에는 LINQ를 사용하여 시간을 줄일 생각입니다.

에셋번들 업데이트 테스트 하기

버전 업데이트된 바이너리 파일을 서버에서 자동으로 내려받는 테스트 작업을 진행했습니다. 무리없이 잘 되네요 

다음작업

  • 에셋 번들 생성 후 에셋 벤들을 자동으로 서버 다운로드 폴더에 업데이트 되는 코드 작업 혹은 에디터 창에서 메뉴에 에셋번들 파일을 서버에 이동 및 업데이트 하는 버튼 넣기
  • 자동 로그인 서버 작업

2015년 3월 28일 토요일

에셋번들 다운로드(안드로이드에) 성공, PlayerPrefs를 관리하기 위한 Manager 작업 그러나 파기, TableConvert.cs 수정

에셋번들 다운로드(안드로이드에) 성공

에셋번들 때문에 얼마나 헤멘건지 ㄷㄷㄷ;
어쨋든 몇일간의 고생 끝에 바이너리화한 테이블데이터를 안드로이드에!!(PC에서는 진작에 성공했었습니다 ..ㅠ.ㅠ) 다운로드하는 것을 성공했습니다.

PlayerPrefs를 관리하기 위한 Manager 작업 그러나 파기

PlayerPrefs를 Tag처럼 처계적으로 관리하기 위해 Manager화 하는 작업을 진행했지만
오히려 전체적인 모호성만(ClientData가 Manager_PlayerPrefs에서 할당되는) 증가하더군요 그래서 다 만들어 놓고 파기했습니다 ㄷㄷ;

TableConvert.cs 수정

기존에는 WWW 를 직접 bytes[]로 변환해 사용했는데
에셋번들에서을 사용하니 미리 bytes[]를 변환한 데이터를 사용해야 되었으며 이에 관한 코드를 수정했습니다.


다음작업


  • TableConvert.cs 변경에 따른 VisualDesign 작업
  • 에셋 번들 생성 후 에셋 벤들을 자동으로 서버 다운로드 폴더에 업데이트 되는 코드 작업 혹은 에디터 창에서 메뉴에 에셋번들 파일을 서버에 이동 및 업데이트 하는 버튼 넣기
  • 에셋번들 업데이트 테스트 하기



2015년 3월 23일 월요일

Manager_WWW 이 Manager_ServerData 상속, 패치 시스템은 다음에

Manager_WWW 이 Manager_ServerData 상속

Manager_WWW이 Manager_ServerData를 상속받게 했습니다. 기존에는 따로 분리해서 Static으로 데이터를 접근하게 했었는데 로직이 변경되면서 조금 더 구조를 명확하게 하고자 상속받는걸로 변경했습니다. 


패치 시스템은 다음에

패치 시스템 만들는 것을 고민하다 이번 게임은 개인 개발이기 때문에 간단하게 테이블 DB만 업데트 하는 시스템만 만들기로 했습니다.

이유는
1. 패치 시스템으로 업데이트 시 서버비용이 만만치 않다.
2. 안드로이드만 서비스 한다면 구굴에서 지원한느 시스템으로도 충분하다

입니다.

다음작업

1. 시스템 팝업창 작업
 - 게임 팝업
 - 서버 팝업

2015년 3월 22일 일요일

통신 성공

통신 성공

대규모 로직 수정(기억도 잘 안남 ㄷㄷ;)
기존 로직의 7~80%를 뜯어 고쳤습니다. 정신이 하나도 없네요
그리고 서버로 패킷을 보내는 것까지 완료되었습니다.

다음작업

서버 : 변경된 클라이언트 패킷에 대한 서버 수정
 - 에셋번들을 다운로드 할 수 있도록 서버 작업 (대규모 작업 예상)

2015년 3월 20일 금요일

게임 기본 구조 작업

게임 기본 구조 작업

유니티 5.x로 업데이트 하면서 며칠 전에 했던 기본 구조 작업을 다시 하고 있습니다.
이번에는 모든 모둘을 에셋 단위로 구분해서 전과 같이 버전업이 되었을 때 해당 에셋만 고치면 게임이 원활하게 돌아가도록 구성했습니다.

전에 구조는 Sprits 폴더안에 게임 스크립트를 몰아넣어서 폴더 별로 구분했다면
현제는 Asset을 다운로드 한것처럼, 혹은 Export하더라도 다른 곳에서 사요할 수 있게끔 각 모듈 단위로 완전한 독립적인 구조입니다.

즉 게임이 하나의 거대한 Asset의 집합이 되는 것이죠

장점은 기본 Asset 단위로 기능접근이 가능하기 때문에
1. 엔진 업데이트에 대한 리스크가 최소화 된다.
2. 상대적으로 정신적인 스트레스가 적다(문제점 파악이 빠르고 쉽게 대처 가능하기 때문)
3. 이후에 작업인원이 추가될 경우 명확한 업무 분담이 가능하다. (전체 로직을 이해시킬 필요가 없다)
4. 취직한다면(이제 돈이 서서히 떨어져서 ㅠ.ㅠ) 모듈 단위로 프로젝트에 활용할 수 있다.

단점으로는
1. 시간이 걸린다.
2. 시간이 더 걸린다.
3. 매우 느긋하게 시간이 더 걸린다.

이겠죠


다음작업

1. 서버와 통신 모듈 이식 및 수정 (몇 번째 작업이냐!! ㅂㄷㅂㄷ)
2. 에셋 번들 서버연동 다운로드 및 업데이트 테스트
3. 욕설 바이너리화 및 에셋번들 다운로드 및 업데이트 테스트
4. 욕설 메모리에 올리기 및 자동화 작업(VisualDesign)
5. 욕설 및 금지 생성 ID VisualDesign에서 Redis 서버로 전송시키기(현재는 서버 시작 시 Redis 클라이언트에서 텍스트로 읽고 있음, 자동화 작업)

2015년 3월 19일 목요일

에셋 번들 스크립트 수정 및 적용 완료, VisualDesign 수정, 유동IP에 따른 Redis IP 변경

에셋 번들 스크립트 수정 및 적용 완료

에셋 번들 관련 스크립트를 보기쉽게;; 정리하였습니다.
VIsualDesign으로 추출된 바이너리 파일을 에셋 번들로 변환

VisualDesign 수정

엑셀 문서내에서 서버로 접근하는 Ip와 포트를 읽어 오도록 변경하였습니다.(기존에는 소스에서 하드 코딩도어 있었습니다.)

유동IP에 따른 Redis IP 변경

갑자기 Ip가 변경되었더군요. 그래서 그에 관련하여 레디스 서버에 접속하는 클라이언트 접속 IP를 변경하는 작업을 했습니다.

다음작업


  • 욕설, 생성불가 ID를 바이너리로 변경
  • 변경된 바이너리 파일을 AssetBundle로 변경
  • 테이블 바이너리와 욕셜, 생성불가 ID 바이너리 파일이 Assbundle로 제대로 작동하는지 테스트(서버 에서 정상적으로 다운로드 된는가?)
  • 최초 바이너리 파일 다운로드 관련 로딩 화면 제작


2015년 3월 17일 화요일

에셋번들 생성 작업

에셋번들 생성 작업

Unity Documentation에 나와있는 스크립트로 에셋번들을 생성했습니다.
그런데 아직 문서가 부실하더군요
게임 데이터 관련해서만 사용하기 때문에 큰 문제는 없겠으나 얼른 업데이트되면 좋겠네요

다음작업

에셋번들 서버에서 다운로드 및 적용
로그인 부분

2015년 3월 15일 일요일

바이너리 파일 로드 문제, Unity3d Log Viewer 도입

바이너리 파일 로드 문제

PC에서 테스트하는 동안은 잘되지만, 안드로이드에서 바이너리 파일을 로드 하거나 서버에서 다시 받을 때 덮어쓰는 등에서 문제가 발생했습니다.
하루동안 해맸고 StreamingAssets에 바이너리를 저장해서 바이너리 파일을 안드로이드에서 불러오는 건 해결했지만 파일 버전 및 사이즈가 다를경우(다운로드 중간에 접속이 끊긴다는 지 등)의 해결책이 애매해 보였습니다.
결국 AssetBundle로 해결해야 되겠다는 생각이 들었습니다.

AssetBundle은 몇달전에 구현했었는데요, 개인프로젝트라 서버에서 에셋을 패치하는게 부담(서버 비용이 .ㅠ.ㅠ)되고 또한 결정적인게, 안드로이드에서는 4기가까지 지원합니다. 물론 기본 다운로드 파일은 50메가 이하이지만 분할해서 올리면 가능하더군요. 아이폰은 잘 모르겠지만. 개인 프로젝트라 아이폰까지;; 코드는 신경쓸 수 있어도 용량문제는 힘들겠더군요 ;;

Unity3d Log Viewer 도입


개인적으로 모바일에서 모바일 화면으로(테스터의 환경에서 직접 보기위해) 디버그를 출력하는 모듈을 만들고 있었습니다.

그러나 우연히 이 에셋을 알게되고 그동안 만든걸 봉인(?)했는데요

정말 유용하고 잘 만들어진 에셋 입니다.

다음작업


  • AssetBundle로 테이블 바이너리 관리
    • 불러오기
    • 버전 업데이트에 따른 다운로드 그리고 다시 불러오기
    • 파일 사이즈에 따른 관리

2015년 3월 14일 토요일

UI 로직 재수정, 서버 오류 팝업창 작업

UI 로직 재수정


좀 더 간편한 관리를 위해 UI로직이 수정되었습니다. 


서버 오류 팝업창 작업

서버 오류관련 팝업창이 작업되었습니다.


다음 작업


  • 모바일에서 통신이 처리되지 않는 부분 수정 필요
  • 로그인 UI
  • 약관 동의 작업 등

2015년 3월 8일 일요일

웹 통신 로딩 이미지 삽입, 서버 연동 부분 관리 클래스 이식 및 수정, 매니저 클래스 그룹 대규모 수정

웹 통신 로딩 이미지 삽입 및 연출

웹 통신시 딜레이가 걸렸을 때 나오는 애니메이션을 수정했습니다. Animator에서 AnimationClip를 사용해 구현했는데요, Unity Ui와 Animator의 연동은 상당한 퀄리티의 연출이 가능할 것 같습니다.

서버 연동 부분 관리 클래스 이식 및 수정

NGUI를 걷어내고 Unity Ui를 이식하면서 전체적으로 클래스를 훑어 봤는데요, 하하하 다시 짜기 잘했다는 생각이 들더군요 ..;;;;;;;;, 원래 코딩이 그런거 아니겠습니까 하하하

매니저 클래스 그룹 대규모 수정

시스템 관리 부분을 완전히 들어 엎었습니다.
과거에는 Ui에 시스템과 연출부분이 같이 있었는데, 이제는 Manager에서 씬을 관리하고 해당 씬은 이 Manager를 기반으로 컨트롤 되도록 변경했습니다.

즉 씬 전환시에는 최소한의 오브젝트(UI, 매니저)의 변경만으로 전체 씬을 관리하도록 한 것이죠

쉽지 않은 작업이었지만 해놓으니 뿌듯하네요 ㅎㅎ

다음작업


  • 로그인 UI,
  • 약관 동의 UI(대규모 Text처리),
  • 회원가입 UI
  • 디버그 관리 시스템

2015년 3월 6일 금요일

Sample BGM 넣기, 사운드 매니저 테스트 및 적용, Manager_Game 구조화 작업

Sample BGM 넣기

약간 웅장한 BGM 샘플을 넣음

사운드 매니저 테스트 및 적용

NGUI와 연동되어 있던 부분을 수정 했습니다. 기존 NGUI 경우 전체 UI 사운드 볼륨을 하나의 파라미터만 제어하면 되었는데, Unity UI는 그런게 없더군요. 그래서 Manager_Sound 클래스를 참조하여 Audio Source의 옵션을 조정하는 클래스를 만들고 그 클래스를 On Click() 이벤트에 등록하는 형태로 작업했습니다.

사운드 옵션을 위한 BGM, EffectSound의 음소거 및 볼륨 조절은 잘 작동되는 것 같습니다.

Manager_Game 구조화 작업

기존에는 Singleton(MonoBehaviour를 상소한, 사실적으로 GameObject를 생성하고 생성된 오브젝트를 참조하는)을 써서 매니저를 참조했었는데요 이렇게 하면 에디터 상테서 테스트할 때 Hierachy 창이 지저분해 지는 것 같아 이제는 DontDestoryOnLoad()를 걸어놓고 Manager_Game을 구조화 했습니다. 즉 Scene, Sound, Camera, UI, ServerConnect 등을 관리하는 Manager를 구조하 시켜서 게임을 테스트 하는 동안 어느정도 게임 내에서 돌아가는 정보를 볼 수 있도록 하는 것이죠

다음작업

  • 서버 연동 모듈 넣기
    • 다른 부분은 문제가 안되지만 NGUI -> UNITY UI 변경에 따른 팝업메세지 관련 부분이 전부 수정될 예정
  • Manager_Game 클래스 프레임 작업
    • 전체 게임을 관리하는 모듈 작업임(이거 설계 잘해야 함.;;; 안그러면 헬게이트 열림. ㅠ.ㅠ)

2015년 3월 5일 목요일

Manager_Tags 클래스 작업, Login 화면에 사용하는 백그라운드 이미지 작업, Login 화면 이펙트 추가, Login 화면 버튼 및 텍스트 추가

Manager_Tags 클래스 작업

Tag를 관리하는 Class

Login 화면에 사용하는 백그라운드 이미지 작업

포토샵으로 샘플이미지와 타이틀 및 서브 에프소드 이름 작업(기본적인 이펙트 추가)

Login 화면 이펙트 추가

화면이 너무 정적인 느낌이어서 간단한 이펙트 추가

Login 화면 버튼 및 텍스트 추가

"화면을 터치하세요" 버튼 추가, 버튼 크기는 전체화면을 뒤엎는 크기로 작업됨
텍스트의 페이드인 아웃 연출

다음작업

  • Sample BGM 넣기
  • 사운드 매니저 테스트 및 적용
    • 음소거 및 볼륨 조절에 따른 게임 내 사운드 관리 클래스
  • 서버 연동 모듈 넣기
    • 다른 부분은 문제가 안되지만 NGUI -> UNITY UI 변경에 따른 팝업메세지 관련 부분이 전부 수정될 예정
  • Manager_Game 클래스 프레임 작업
    • 전체 게임을 관리하는 모듈 작업임(이거 설계 잘해야 함.;;; 안그러면 헬게이트 열림. ㅠ.ㅠ)

2015년 3월 4일 수요일

Android SDK 재설치, PlayerMaker 도입, UnityVS 재설치, 프로젝트 로고 삽입

Android SDK 재설치
4.6으로 업데이트 하고 난 이후
빌드 시 오류가 계속 나더군요. 그래서 안드로이드 매니저를 통해 SDK를 업데이트 했지만 그래도 계속 오류가 났습니다.
결국 SDK를 재설치하니 이제야 정상적으로 작동하네요

PlayerMaker 도입
이번에 한번 써보자는 생각으로(어짜피 처음부터 재작업이니.. ㅠ.ㅠ) PlayerMaker를 설치했습니다.(내돈.. .ㅠㅠ)
생각보다 다양한 기능을 지원하고,
Unity에서 부족한 부부을 채워주는 에셋 같더군요
코드가 많이 줄것 같습니다. 껄껄~

UnityVS 재설치
유니티를 업그레이드 하니 UnityVS를 인식하지 못하더군요
그래서 제어판에 들어가 Repair로 재설하니 이제야 제대로 인식됩니다.

프로젝트 로고 삽입
간단하게 프로젝트 로고를만들어서 넣었습니다.