개발 관련 피드백

  1. 내가 작성하지 않은 프로그램 코드를 볼 때는 UML 다이어그램을 그려두면 나중에 구조를 파악하기 쉽다.
  2. MVC (Model, Visual, Controller) 디자인 패턴을 적용하자.
  3. 함수 100 line 이상 넘어가면 되도록 작은 task 단위의 함수로 만든다.
  4. 상수성을 제거하는 캐스팅은 최후의 수단이다.
  5. static 변수, 함수는 최후의 수단이다.
  6. 클래스 구조를 만들때 트리 구조를 고려하자.
  7. 재귀 함수는 되도록 stack이나 루프를 사용해서 구현하자.
  8. multi thread 는 single thread로 성능문제가 해결되지 않는 시점부터 고려한다. 사용할 때 상당한 고민이 필요하다.
  9. 개발은 일정과의 싸움이다.
  10. 콜백이 필요할때는 std::function 을 기억하자

I’Think 01

나는 카카오톡 친구 목록을 자주 훑어보는 편이다. 프로필 사진을 보면 내 친구들의 근황을 볼 수 있어서 그렇다.

프로필 사진을 처음부터 끝까지 보다보면 내 전 여자친구의 프로필 사진이 보인다. 사진을 눌러 그녀가 무엇을 하는지 유심히 관찰 한다. 그녀가 어떻게 살고있는지 보고있자면 데이트 하던 옛 생각이 난다.

확실히 기억이 나지 않지만 헤어질 때 1년 후 다시 연락할거라고 했었던 기억이 난다. 하지만 난 그렇게 하지 않았다. 1년이 지나도 2년이 지나도 나도 그녀도 서로 연락하지 않았다. 둘다 자존심을 꺾지 못했다. 이제는 하고 싶어도 못할 것이다.

내가 기억하는 모습과 사진속 그녀의 모습을 보면 헤어진 때로부터 시간이 많이 지났음을 느낀다.

나는 지난 5년간 왜 연애를 하지 못 했을까? 주변에 이성이 없었나? 그건 아닌것 같다. 기회는 많지 않았지만 몇번 있었던 것 같다. 대학교에 복학 했을 때에도 취업을 했을 때에도 소개팅을 했을 때에도 기회는 늘 있었다. 스스로 생각하기에 나는 용기가 없었다. 과감히 다른 사람을 만날 용기, 다른 사람에게 내 모습을 보여줄 용기 또는 자신감.

문제는 나에게 있었다. 그동안 내 실패한 연애사를 포장하여 핑계로 삼고 있었던 것 같다. 보이지 않는가 내 전 여자친구는 다른 사람도 만나고 잘 지내고 있음을…

과거의 그녀가 나의 투정을 조금이라도 이해 했더라면, 그런일은 없었을 것이다 라고 탓을 해본다한들 위로가 되지 않는다. 답답한 마음만 더 생길 뿐.

돌이켜 보면 애초에 그 사람은 나와 안 맞았던 것 같다. 나는 과거의 연애에 있어서 내가 할 수 있는 모든 것을 했다고 생각했는데 그게 아니었나 의심이 든다. 나만의 착각인가?

애착을 가질 다른 사람이 나타나지 않아 이렇게 푸념이나 하고 있는 걸까? 연애는 할 수 있을까? 나는 좋은 사람과 결혼 할 수 있을까? 평생 혼자 일까? 언제쯤 이면 이런 구질구질한 생각을 하지 않고 살 수 있을까? 의문이 꼬리에 꼬리를 물고 나면 결국에는 나도 이제 새로운 사람을 만나고 싶다 라는 종착역에 도착한다.

나는 이제 마음에 드는 다른 사람을 찾기 시작했다. 하지만 여전히 이것저것 재면서 망설인다. 나도 모르겠다 내가 어떤 사람을 원하는지 예쁜 사람도 착한 사람도 모르겠다 판단이 서질 않는다.

은하수 촬영법 & 팁 블로그

촬영 팁

출처: https://busanphoto.tistory.com/39 [감성아재]

은하수 포인트

  • 양평 벗고개
  • 양평 구둔역
  • 양평 중미산천문대
  • 평창 청옥산 육백마지기
  • 횡성 태기산
    • 합천 황매산
    • 국사봉 전망대
  • 보은 원정리 느티나무
  • 강원도 태백시 함백산
  • 강원도 태백 바람의 언덕
  • 강릉 대관령 안반데기 마을
  • 화천 조경철천문대
  • 태안 운여해변
  • 영천 보현산천문대
  • 영양국제밤하늘보호구역
  • 의령 한우산
  • 고성 상족암군립공원
  • 1100고지

Google Play Service Plugin Build Crash

유니티 프로젝트에 GooglePlayGameServices(GPGS)를 연동하기 위해 Plugin최신 버전을 연동하고 간단한 로그인 코드를 작성후 빌드를 해보았는데 다음과 같은 크래쉬가 발생 했다.

        

현상 )Social.localUser.Authenticate 함수를 호출 -> 크래쉬

원인1)Import>GPGS Package>Resolution Failed Error

해결)Android SDK(GooglePlayService) Revision Update

https://github.com/playgameservices/play-games-plugin-for-unity/issues/2116

원인2)Build System>Gradle

해결)Build System>Internal

빌드 시스템에 대한 내용은 나중에 다루어야 겠다.

Unity3D Rendering Issue Tracking – 1

문제상황) 그림과 같이 Primitives를 이용한 Scene 구성후 Android에서 게임 실행시 FPS가 40~50으로 떨어지는 현상이 발생.

이전의 Scene구성보다 Batches 가 2~3배 정도 증가했고 Verts, Tris가 2배정도 되었다.

다른 설정은 딱히 바꾼게 없는 터였고 MeshCombine 은 쓰고 싶지 않은 상황.  LightMap Bake 도 하지 않은 상태.

첫번째 한짓 – MeshRenderer의 Cast Shadow/Receive Shadow 옵션 끄기

결과 –  똑같음

두번째 한짓 – MeshRenderer의 Dynamic Occluded 옵션 끄기

결과 – 똑같음

세번째 한짓 – Edit>Project Settings>Quality>V sync Count -> Don’t Sync 로 바꿈

결과 – 똑같음

네번째 한짓 – LightMap 굽기

결과 – 똑같음, 임의 구간에서 느려짐이 체감됨.

다섯번째 한짓 – Profiler 돌림

결과 – gfx.waitforpresent에서 프레임을 잡아먹는게 보임, 그런데 waitforpresent가 대체 뭘말하는 것인지를 모름. 구글링을 해보니 CPU의 유휴시간을 말하는데 CPU연산은 끝났지만 GPU의 연산이 끝나지 않아 대기하는 시간 이라고 함.(참고)

GPU연산시간? 그게 뭐더라… 한참 이해를 못하다가 Optimizing에대한 Unity Docs를 찾아냄(링크)

해당 문서에 Shader를 체크해 보라는 내용이 있음. (모바일에서 빌트인 쉐이더를 사용할 경우 Mobile 또는 Unlit항목을 사용할 것.)

캐릭터를 제외한 다른 모든 MeshRenderer의 Material Shader를 변경

FPS 60으로 상승

유니티의 Standard Shader(빌트인) 을 사용할 경우 품질은 좋아지지만 모바일에서 성능이 매우 떨어진다(아마도 정점에 대한 빛계산이 여러가지로 많은 탓인듯.. PC에서는 아주 빠르게 동작하지만 모바일 환경에서는 매우 좋지 않다.)

따라서 모바일 게임을 만드는 경우에는 쉐이더를 직접 작성하거나 빌트인 쉐이더를 사용할 경우에는 Mobile항목이나 Unlit항목을 상요하는게 좋겠다.