'분류 전체보기'에 해당되는 글 495건

  1. 2014.01.07 [디버깅] GDB 사용하기
  2. 2014.01.07 [디버깅] ndk stack 사용법
  3. 2014.01.07 adb 패스 설정
  4. 2014.01.07 [디버깅] visual studio에서 GDB 실행?
  5. 2014.01.07 [디버깅] cocos2d-x Debug 팁
  6. 2014.01.07 cocos2d-x 소스 코드 주소
  7. 2014.01.07 [디버깅] cocos2d-x Ant 사용법
  8. 2014.01.07 [팁] 안드로이드 cocos2d-x 디버깅 시
  9. 2014.01.06 실전 유니티 3D 입문과 완성UNITY 3D 4.2 이상
  10. 2014.01.06 5가지 실전 게임으로 배우는 코코스2d-x

[디버깅] GDB 사용하기

|
  • GNU 디버거
    소프트웨어/앱
  • 보통은 GDB라고 부르는 GNU 디버거는 GNU 소프트웨어 시스템을 위한 기본 디버거이다. GDB는 다양한 유닉스 기반의 시스템에서 동작하는 이식성있는 디버거로, 에이다, C, C++, 포트란 등의 여러 프로그래밍 언어를 지원한다. 위키백과

  • ndk gdb 를 연결해서 디버깅 하셔야 합니다. 
    android manifest 에서 debuggable true 로 주는 옵션이 있는데
    댓글로 설명하긴 조금 복잡하네요.
    ndk gdb 연결해서 debug 하는 방법을 한번 찾아보셔요


    에뮬에서만 되고 단말기에서는 안되나봄?


    Trackback 0 And Comment 0

    [디버깅] ndk stack 사용법

    |

    I made a bit of a progress and I want to share what I did.

    When you get errors like this on the LogCat, they are saved on $PROJECT_PATH/obj/local/armeabi where $PROJECT_PATH is the path to your cocos2d-x android project. To symbolicate the messages to something understandable, you can use the ndk-stack tool.

    Open up the Terminal (or Cygwin, not sure though) and type in

    cd $ANDROID_NDK
    adb logcat | ./ndk-stack -sym $PROJECT_PATH/obj/local/armeabi 
    

    where:
    $ANDROID_NDK is the path to your android NDK
    PROJECT_PATH is the path to your cocos2d-x android project

    After that, you will get a stack trace which points to certain files and line number where the crash occurred. Something like this:

    ********** Crash dump: **********
    Build fingerprint: 'generic/blaze/blaze:2.3.4/GINGERBREAD/6.3.1_user_4107920:user/release-keys'
    pid: 16346, tid: 16354  >>> com.mycompany.myapp <<<
    signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
    Stack frame #00  pc 002a13f0  /data/data/com.mycompany.myapp/lib/libmyapp.so: Unable to locate routine information for address 2a13f0 in module
    Stack frame #01  pc 0012e81e  /data/data/com.mycompany.myapp/lib/libmyapp.so: Routine updateNode in jni/../../Classes/TowerObj.cpp:150
    Stack frame #02  pc 000f3648  /data/data/com.mycompany.myapp/lib/libmyapp.so: Routine updateLayer in jni/../../Classes/BuilderLayer.cpp:107
    Stack frame #03  pc 0010bb94  /data/data/com.mycompany.myapp/lib/libmyapp.so: Routine updateGame in jni/../../Classes/MainGameLayer.cpp:172
    
    ( more here pointing to cocos2d-x classes )
    

    From the dump above, you can see that on Stack frame #01 points to TowerObj.cpp:150, so I can now go to TowerObj.cpp at line 150 and fix stuff.

    Hope this helps.


    Trackback 0 And Comment 0

    adb 패스 설정

    |

    C:\Android\adt-bundle-windows-x86-20130729\adt-bundle-windows-x86-20130729\sdk\platform-tools



    ADB(Android Debug Bridge)


    http://developer.android.com/tools/help/adb.html


    adb 는 Android Debug Bridge 의 약자로 안드로이드 디버그 기능을 한다고 보면 됩니다.
    adb를 사용해서 에뮬레이터 및 장치를 이용할 수 있습니다.

    adb 명령을 알아보기 위해 우선 adb.exe 가 있는 곳으로 이동합니다.

    제가 테스트하는 환경에서 Android SDK 는 아래와 같습니다.

     




    adbshell 에서 쓸수 있는 명령어 모음 입니다.


    adb logcat -v time [filter]


    시스템 기본정보: 하드웨어, 커널 등
    cat /proc/version : 커널 버전
    cat /proc/cpuinfo : 프로세서 정보, CPU타입, 모델 제조사 등
    cat /porc/meminfo : 메모리 정보, 실제 메모리 및 가상 메모리
    cat /proc/devices : 현재 커널에 설정되어 있는 장치 목록
    mount : 마운트된 모든 장치 정보
    df : 하드디스크 사용량
    cat /porc/filesystems : 커널에 설정되어 있는 파일시스템 목록
    cat /proc/swaps : 스왑 파티션의 크기와 사용량
    cat /proc/interrupts : 장치가 사용중인 인터럽트(IRQ)목록 표시
    cat /proc/ioports : 현재 사용중인 input/output 포트
    cat /proc/partitions : 파티션 정보
    cat /proc/uptime : 시스템이 얼마나 살아있었는지
    cat /proc/stat : 시스템 상태에 관한 다양한 정보, CPU 사용 통계, 부팅이후 page fault 발생 횟수 등
    cat /proc/zoneinfo : ZONEINFO
    dmesg : 시스템 부팅시 나왔던 메시지
    ps : 실행중인 프로세스 정보
    ps -p - t : 프로세스와 쓰레드 목록
    set or printenv : 환경설정값 출력


    시스템 리소스 사용 현황
    vmstat : 시스템 리소스 상황 모니터, CPU, I/O, Memory 등
    cat /proc/diskstats : 디스크 utilization과 throughput. 즉 디스크 I/O현황
    top : 시스템 프로세스 상황 모니터링/ 프로세스별 CPU사용량, 메모리와 스왑 사용량 등
    procrank : 프로세스별 메모리
    dumpsys meminfo [PID] : 해당 프로세스 메모리 상세 정보
    cat /proc/[PID]/stat : 해당 프로세스에 대한 정보, 시작시간, 상태, CPU 사용량 등
    cat /proc/[PID]/maps : 해당 프로세스의 메모리 맵 정보
    cat /proc/vmstat : 버추얼 메모리 통계?
    librank : 라이브러리별 메모리 사용량?


    네트워크 관련
    cat /proc/net/netlink : 네트워크 정보
    netcfg : 네트워크 인터페이스와 IP주소 목록
    netstat : 네트워크 연결상태 확인
    nc : 네트워크용 cat 명령어(netcat)
    ifconfig : 네트워크 인터페이스 설정 정보. 장치명을 파라미터로 받음. ip 주소. 서브넷마스크 등
    tcpdump : 실시간 패킷 모니터링
    iftop : 네트워크를 위한 top
    route : 해당 호스트까지 연결하는 중간 경로 정보인 라우팅 테이블 표시
    ping : 원격 호스트와의 연결 테스트
    cat /proc/net/route : Route


    안드로이드 제공
    logcat : 로그캣 보기
    pm : package manager의 약자. 패키지/permission/instrumentation/feature 목록, 패키지 설치/제거 등
    am : activity manager의 약자, 액티비티 시작, Intent 브로드캐스팅, Instrumentation 시작, profiling 시작 / 중지 등
    service : 안드로이드 서비스 목록 표시, 서비스에 명령 전달
    monkey : 애플리케이션에 랜덤 이벤트 발생시킴. 사용자 이벤트, 시스템 이벤트의 무작위 발행
    cat /data/anr/traces.txt : VM TRACES (쓰레드 덤프)
    cat /proc/binder/proc/[PID] : 바인더 프로세스 상태
    cat /proc/binder/xxx : 바인더 관련 정보(xxx은 transaction, transaction_log, failed_transaction_log, stats 등)
    cat /data/system/packages.xml : 설치된 패키지 세팅 정보
    setprop : system property 셋팅
    getprop : 셋팅된 system property 목록 출력


    종합 리포트 
    dumpsys [service] : app/service 상태정보 덤프, 서비스별로 추가 파라미터 받을 수 있음
    dumpstate : device 상태정보 덤프. 상태정보를 추출하는 여러 명령어들의 조합으로 구성
    dumpcrash : 애플리케이션이 crach될 때의 상태정보 덤프
    bugreport : logcat + dumpsys + dumpstat

    ---------------------------------------------------------------------------------------------
    ADB Shell Command - 15가지 팁 

    Basic Android Terminal and ADB Shell Command List

    1. How to open a cmd in Android Phone
      Method 1: “Start” ? “”Program”-” “Accessories” ? “” Command Prompt ”
      Method 2: “Start” ? “” Run “, type cmd ENTER

     

    2. How to restart Android Phone
      When the phone and Computer is connected to the data cable, you can enter the following command

      adb shell reboot === ENTER

     

    3. Restart Android into Recovery Mode
      With the data cable connected to your phone and computer, enter the following command


      adb shell reboot recovery === ENTER

     

    4. Convert back to ext2 partition
      Restart the phone into Recovery mode, press “Alt + X” into the console. Open cmd and enter the following command


      adb shell === ENTER    
      tune2fs-O ^ has_journal / dev/block/mmcblk0p2 === carriage return 
      e2fsck / dev/block/mmcblk0p2 === carriage return (optional, can be a problem area in section 2, when used)

     

    5. Pulling applications from Android phone to computer

      adb pull /system/sd/app app  
      adb pull /system/sd/app-private app-private

     

    6. Pushing applications back to android phone from the computer

      adb push app /system/sd/app    
      adb push app-private /system/sd/app-private

     

    7. Delete existing apps on Android SD

      adb shell rm -r /system/sd/app  
      adb shell rm -r /system/sd/app-private 
      
    8. Repair gravity System or switch to screen
      Sometimes frequent brushing of phone can cause gravity system or switch to screen failure. Just follow the steps below-
      Restart the phone into Recovery mode, press “Alt + X” into the console
      Open cmd and enter the following command

      mount / data === carriage return   
      rm / data / misc / akmd * / data / misc / rild * === ENTER

     

    9. Ext2/ext3/ext4 formatted partition
      Enter the following command in the cmd

      adb remount === ENTER    
      adb shell === ENTER  
      rm-r / system / sd / * === carriage return 
      
    10. Remove/ system / app under the application
      Under normal circumstances / system / app is not under an application. Use the following methods to remove these applications.
      Open cmd and enter the following command
      
      adb remount === ENTER    
      adb rm / system / app / Stocks.apk === Enter

     

    11. If the start Time is too Long
      Just enter the following command in order to view the boot process.

      adb logcat === ENTER

     

    12. Through Terminal Partition SD card
      It will erase everything on your SD card

      $  su   
      # cd /data  
      # wget 
    http://64.105.21.209/bin/lib/droid/sdsplit  
      # chmod 555 sdsplit  
      # /data/sdsplit -fs *size* (add -nc to the end for JFv1.5ADP)

     

    13. From the Recovery Screen, send an update file to your SD card.

      adb shell mount /sdcard  
      adb shell rm /sdcard/update.zip  
      adb push *filename* /sdcard/update.zip

     

    14. Restoring a nandroid backup via Fastboot
      Start command-prompt/terminal cd to the nandroid folder and enter following commands

      fastboot erase boot  
      fastboot erase recovery  
      fastboot flash system system.img  
      fastboot flash boot boot.img  
      fastboot flash userdata data.img  
      fastboot flash recovery recovery.img  
      fastboot reboot

     

    15. Clear Search History in Android

      Search History is accounted for Mobile Memory. It can also leak your privacy information as well. Just follow the steps below to clear android history.  
      Steps are as follows:

      1. Make sure your mobile phone has Root authority.
      2. Open the super-terminal.
      3. Enter the following command
        su 
        rm / data / data / com.android.vending / databases / suggestions.db 
      4. Exit Hyper Terminal and restart the phone.

    ---------------------------------------------------------------------------------------------

    adb devices

    adb 서버가 인식한 휴대폰과 에뮬레이터 목록을 보여준다.
    연결된 devices의 TCP/IP 포트 번호를 알아낼 때 도움이 된다.

    다른 명령어를 사용할 때, -s나 -e 옵션은 여러 개의 장치를 연결했을 때 특정한 디바이스를 지정할 때 사용한다.

    예)
    디바이스 검색
    adb devices

     

    adb shell

    타겟 시스템의 쉘에 연결하고 # 프롬프트를 띄운다. 쉘은 간소한 유닉스 쉘 같아서 간단한 명령으로 타겟 시스템을 탐색하고 수정할 수 있다.

    예)
    여러 단말기 중에 하나를 선택해서 접속할 때,
    adb -s emulator-5554 shell

     

    adb install [-l][-r] file_spec

    app을 설치하거나 재설치할 때 사용한다.
    -l : 다른 장치로 복사돼 넘어가는 것을 막는다.
    -r: 이미 존재하는 app 데이터를 지우지 않은 채 어플리케이션을 재설치 한다.
    file_spec: 설치할 app의 .apk 파일

    예)
    파일 설치시
    adb install c:\download\HangulKeyboard.apk

     

    adb uninstall [-k] package

    패키지 이름을 가진 app을 제거하다. 
    -k : app의 데이터를 보존한다.
    package: 패키지의 전체 경로, .apk 확장자는 빼야 한다.

    예)
    패키지 삭제시
    adb unstall com.falinux.android.hello

     

    adb push local remote

    개발자 컴퓨터에 있는 local이란 이름을 가진 파일을 타겟 시스템에 remote란 이름으로 복사한다.

    예)
    com.falinux.android.rose.apk 파일을 안드로이드 기기 /data/app/ 폴더 안으로 집어넣을 때,
    adb push c:\com.falinux.android.rose.apk /data/app/

     

    adb pull remote local

    타겟 시스템에 있는 remote라는 파일을 개발자 컴퓨터에 local이란 이름으로 복사한다.

    예)
    안드로이드 기기 /data/app/com.falinux.android.rose.apk 파일을 C 드라이브로 가져올 때,
    adb pull /data/app/com.falinux.android.rose.apk c:\com.falinux.android.rose.apk

     

    adb reboot

    안드로이드 시스템을 리부팅 시킨다.

     

    adb kill-server

    adb 에 문제가 있을 경우, adb를 종료시킨다.

     

    adb start-server

    종료된 adb를 실행 시킨다.



    Trackback 0 And Comment 0

    [디버깅] visual studio에서 GDB 실행?

    |

    http://visualgdb.com/tutorials/android/

    '잡다한것들전부 > ' 카테고리의 다른 글

    [디버깅] GDB 사용하기  (0) 2014.01.07
    [디버깅] ndk stack 사용법  (0) 2014.01.07
    [디버깅] visual studio에서 GDB 실행?  (0) 2014.01.07
    [디버깅] cocos2d-x Debug 팁  (0) 2014.01.07
    cocos2d-x 소스 코드 주소  (0) 2014.01.07
    [디버깅] cocos2d-x Ant 사용법  (0) 2014.01.07
    Trackback 0 And Comment 0

    [디버깅] cocos2d-x Debug 팁

    |

    NFIsNOT//최근 버전에서는 ndkgdb.sh 파일이 추가되었습니다.

    환경변수만 복사해서 이클립스에 추가하고 디버깅 걸어주면 디버깅이 뙇!!



    ndk-stack 한번 써보세요 
    네이티브에서 뻗으면 스택이 찍혀요

    Trackback 0 And Comment 0

    cocos2d-x 소스 코드 주소

    |

    https://github.com/syuhari/cocos2dx_recipe


    cocos2d-x 개발하시는 분들에게 제일 필요한 말대신 상황별 예제만 모아놓은 책


    Trackback 0 And Comment 0

    [디버깅] cocos2d-x Ant 사용법

    |
  • Apache Ant
    소프트웨어/앱
  • Apache Ant는 자바 프로그래밍 언어에서 사용하는 자동화된 소프트웨어 빌드 도구이다. 유닉스나 리눅스에서 사용되는 make와 비슷하나 자바언어로 구현되어 있어 자바 실행환경이 필요하며 자바 프로젝트들을 빌드하는데 표준으로 사용된다. make와 눈에 띄는 가장 다른 부분은 빌드를 위한 환경구성을 XML 파일을 사용한다는 점이다. 기본적인 빌드 파일명은 build.xml 이다.







  • cocos2d-x 로 개발하면서 디버그는 포기했네요....

    이클립스 안 쓰고 Ant 로도 가능해요.
    근데 어차피 JNI 부분 추가하다보면 결국에 쓰게 되더라구요.




    추가로 cygwin도 좋지만 저는 걍 맥에서 개발합니다.
    배시쉘이나 기타 쉘에 path는 따로 지정해야 하며 툴 위치 역시 지정해야 합니다.
    그리고 cocos sdk폴더가 아닌 외부에서 빌드하실려면 코코스 위치 정보를 지정해야 합니다.
    거기에 필요한게 ndk_module_path 인데요.
    ($(call import-module,cocos2dx) 같은거 호출을 위해 필요)
    이건 프로젝트 폴더에 보면 buid_native.sh가 있습니다. 그안에 젤 밑에 줄에 보면 있어요.
    거기에 지정하시면 됩니다.;
    그러면 빌드되요. 
    이후 ant를 써서 ant debug라고 치시면 패키징이 만들어집니다.
    이 패키지를 adb install을 통해 디바이스에 올리시면 됩니다.

    그리고 디버깅은 포기하세요.. ㅋㅋ vc환경에서 dll물려서 하는 방법도 있긴 하지만 그건 비추이구요.;










    '잡다한것들전부 > ' 카테고리의 다른 글

    [디버깅] cocos2d-x Debug 팁  (0) 2014.01.07
    cocos2d-x 소스 코드 주소  (0) 2014.01.07
    [디버깅] cocos2d-x Ant 사용법  (0) 2014.01.07
    [팁] 안드로이드 cocos2d-x 디버깅 시  (0) 2014.01.07
    cocos2d-x 로딩 관련  (0) 2014.01.06
    cocos2d-x 샘플 소스 소개  (0) 2014.01.06
    Trackback 0 And Comment 0

    [팁] 안드로이드 cocos2d-x 디버깅 시

    |

    출처 : http://www.androidpub.com/1943024


    ndk 디버그








    안드로이드 ant

    Apache Ant

    위키백과, 우리 모두의 백과사전.
    Apache Ant (Another Neat Tool)
    Apache Ant Logo
    개발자아파치 소프트웨어 재단
    최근 버전1.9.2 / 2013년 7월 12일, 179일 경과
    프로그래밍 언어자바
    운영 체제크로스 플랫폼
    종류빌드 도구
    라이선스아파치 라이선스 2.0
    웹사이트http://ant.apache.org

    Apache Ant는 자바 프로그래밍 언어에서 사용하는 자동화된 소프트웨어 빌드 도구이다. 유닉스나 리눅스에서 사용되는 make와 비슷하나 자바언어로 구현되어 있어 자바 실행환경이 필요하며 자바 프로젝트들을 빌드하는데 표준으로 사용된다.

    make와 눈에 띄는 가장 다른 부분은 빌드를 위한 환경구성을 XML 파일을 사용한다는 점이다. 기본적인 빌드 파일명은 build.xml 이다.

    로고는 이름(ANT)에 따라 개미 모양으로 만들어졌으나 이는 Another Neat Tool의 약어라고 한다. [1]

    최초 빌드 도구로서 제작되었으나 점점 많은 기능이 추가되면서 빌드와 배포, 유닛 테스트 등을 포함하는 통합 툴로서 발전되고 있다.

    역사[편집]

    Ant는 선 마이크로시스템즈에서 나중에 톰캣으로 발전하게 되는 JSP/Servlet 표준구현 엔진을 오픈소스화 하던 중 제임스 던컨 데이비슨에 의해 최초로 구상되었다. 사유 소프트웨어인 make를 이용하여 솔라리스에서 작업했으나 다른 환경에서는 이를 수행할 수 있는 오픈소스 소프트웨어가 없었기 때문이다.

    Ant의 최초 버전은 시스템 독립적으로 톰캣을 빌드하기 위한 툴로서 생겨났으며 2000년 7월 19일 독립형 제품으로서 발표되었다(1.1 버전). 처음에는 자카르타 프로젝트의 하위 프로젝트로서 시작했으나 2002년 10월 18일 아파치의 최상위 프로젝트로 승격해서 현재에 이르고 있다.

    수많은 오픈소스가 Ant 를 통한 자동 빌드를 지원하고 있으며 명실상부한 자바 프로젝트의 공식적인 빌드 도구로서 사용된다.

    버전별 최소 요구 자바 버전[편집]

    Apache Ant는 각 버전별로 다음과 같은 최소 자바 버전을 요구한다. 단, 컴파일 작업이 필요하기 때문에 JRE가 아닌 JDK가 필요하며 일부 필수 패키지가 아닌 선택적 패키지의 경우는 아래 내용보다 더 높은 버전을 요구할 수 있다. [2]

    버전별 최소 요구 자바버전
    Ant 버전최소 자바 버전
    1.1 ~ 1.5.41.1
    1.6.0 ~ 1.6.51.2
    1.7.0 ~ 1.7.11.3
    1.8.0 ~ 1.8.31.4
    현재 개발버전(SVN trunk)1.5(5.0)

    같이 보기[편집]

    참고 자료[편집]

    1. 이동 (영어) Apache Ant - FAQ아파치 소프트웨어 재단. 2012년 6월 17일에 확인.
    2. 이동 (영어) Which version of Java is required to run Apache Ant?아파치 소프트웨어 재단. 2012년 6월 17일에 확인.

    바깥 고리[편집]








    ndk-stack 사용하


    NDK 작업시 Error 메세지가 아래와 같이 휴머니즘이 부족할때
      -> symbol로 표시된 주소에 정보가 숨어 있다. 이때 ndk-stack을 사용하자..
          ndk-stack 은 gdb objdump 를 쉽게 해주는 명령어 같다..

    1. 해당 프로젝트로 이동
    cd /Users/user/Downloads/cocos2d-cocos2d-x-124aee8/HelloWorld/android 

    2. ndk-stack 를 환경페스로 잡아준다. 파란색은 프로젝트 경로
    adb logcat |  ndk-stack -sym /Users/user/Downloads/cocos2d-cocos2d-x-124aee8/HelloWorld/android/obj/local/armeabi

      
    3. 결과 
    ********** Crash dump: **********
    Build fingerprint: 'kt_kr/htc_ace/ace:2.3.3/GRI40/98479:user/release-keys'
    pid: 20454, tid: 20466  >>> org.cocos2dx.application <<<
    signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
    Stack frame #00  pc 00015dd8  /system/lib/libc.so
    Stack frame #01  pc 0001ca5c  /system/lib/libc.so
    Stack frame #02  pc 000f0f6e  /data/data/org.cocos2dx.application/lib/libcocos2d.so: Routine initFromNormalSprite in jni/../../../cocos2dx/menu_nodes/CCMenuItem.cpp:501
    Stack frame #03  pc 000f1464  /data/data/org.cocos2dx.application/lib/libcocos2d.so: Routine initFromNormalImage in jni/../../../cocos2dx/menu_nodes/CCMenuItem.cpp:628
    Crash dump is completed

    id: 그냥가자그냥가자

    저는 그냥 gdb로 직접 조회하는 편이긴 한데... /obj/local/armeabi 이게 핵심이네요...

    댓글
    2012.01.17 14:02:37
    id: 아즈라엘아즈라엘

    ndk-gdb 사용하시는가봐요?

    .so 위치에서 해야 되는거 같기도 하고..하도 삽질을 이상하게 해서 기역이 가물하네요 ..

    예전에 해봤을땐 잘 안붙는거 같은데 .. 디바이스 gdb서버가 안좋은거 같기도 하고..^^

    아니면 제가 명령어를 잘 몰라서 그런거 일수도 있고..ㅜㅜ

    댓글
    2012.01.17 17:29:21
    id: 그냥가자그냥가자

    저는 그냥 arm-eabi-gdb 씁니다. ndk-gdb도 동작이 좀 희한해서 ㅡㅡㅋ

    댓글
    2012.01.17 20:53:14
    id: 아즈라엘아즈라엘

    한번 시도해 봐야겠네요..^^

    좋은 정보 감사합니다.


    Trackback 0 And Comment 0

    실전 유니티 3D 입문과 완성UNITY 3D 4.2 이상

    |



    실전 유니티 3D 입문과 완성

    저자
    박승제 지음
    출판사
    제이펍 | 2013-10-25 출간
    카테고리
    컴퓨터/IT
    책소개
    유니티를 활용한 게임 개발 가이드. 게임 개발에 관심이 있는 초...
    가격비교 글쓴이 평점  



    유니티 관련 책 예제 위주로 되있어서 초보자들에게는 괜찮은 내용이 많은듯.



    책소개

    『실전 유니티 3D 입문과 완성』은 게임 개발에 관심이 있는 초보자들을 대상으로 유니티를 이용해서 PC 및 웹, 모바일 버전의 게임을 개발하는 과정을 기초부터 설명해주는 책이다. 장르가 다른 7개의 PC용 게임을 직접 따라하며 배울 수 있으며, 이렇게 만든 게임을 웹과 모바일 게임으로 변환하는 전 과정을 보여준다. 유니티의 사용법은 물론 개발에 필요한 지식과 다양한 테크닉, 핵심적인 알고리즘을 배울 수 있어 게임 실무를 익히는데 적합하다.

    저자소개

    저자 : 박승제 
    저자 박승제는 여주컴퓨터 학원과 고려컴퓨터 학원의 원장을 지냈으며, (주)ITMax 대표이사를 지내기도 하였다. 어셈블러와 C, C++, 델파이 등을 이용한 여러 게임과 관리 시스템을 만들었으며, 학생 상벌점 관리 안드로이드용 앱을 비롯한 다수의 모바일 앱을 제작하였다. 
    안드로이드사이드와 유니티코리아에서 ‘저녁놀’이라는 필명으로 게임 강좌를 진행하고 있다. 지은 책으로는 《UNITY3D 실전 게임 개발》, 《웹 퍼블리셔를 위한 워드프레스 입문과 완성》, 《실전 앱 프로젝트 안드로이드 게임 개발편》, 《따라하기 비주얼베이식 새내기편》, 《컴퓨터 그래픽과 음악의 세계》를 비롯한 20여 권이 있으며, 《마이크로소프트웨어》 등의 컴퓨터전문 월간지에 다양한 글을 기고하였다. 
    SK T아카데미 유니티 3D 교수. 
    그린아카데미 유니티 3D 교수.

    목차

    머리말 

    CHAPTER 01 UNITY 3D의 개요 1 
    1.1 왜 게임 엔진을 사용하는가? 2 
    1.2 UNITY 3D 소개 3 
    1.3 UNITY 3D의 특징 4 

    CHAPTER 02 컴퓨터 그래픽 13 
    2.1 컴퓨터 그래픽의 구분 14 
    2.2 3D 모델의 종류 16 
    2.3 3D 모델링 방법 17 
    2.4 서피스 모델의 종류 19 
    2.5 3D 오브젝트의 구성 요소 21 
    2.6 Light와 Camera 23 
    2.7 평면 좌표와 공간 좌표 25 

    CHAPTER 03 유니티의 인터페이스 27 
    3.1 UNITY 3D 설치 28 
    3.2 유니티의 환경 설정 35 
    3.3 유니티의 인터페이스 39 
    3.3.1 새 프로젝트 시작 39 
    3.3.2 GameObject 설치 41 
    3.3.3 툴바 42 
    3.3.4 씬 뷰 43 
    3.3.5 게임 뷰 50 
    3.3.6 하이어라키 뷰 52 
    3.3.7 프로젝트 뷰 52 
    3.3.8 인스펙터 53 

    CHAPTER 04 게임 제작의 기초(1) 55 
    4.1 유니티의 거리 단위(Unit) 56 
    4.2 컴포넌트와 속성 56 
    4.3 유니티의 좌표계 59 
    4.4 유니티의 Vector 62 
    4.5 Light 63 
    4.6 Camera 67 
    4.7 오브젝트에 색깔 넣기 68 
    4.8 오브젝트에 텍스처 넣기 70 
    4.9 오브젝트의 낙하 73 
    4.10 오브젝트의 반사 74 
    4.11 사운드 연주 76 
    4.12 충돌의 판정 77 
    4.13 오브젝트 움직이기 81 
    4.14 월드 좌표와 로컬 좌표 84 
    4.15 Key로 이동 및 회전하기 86 
    4.16 계층적인 오브젝트 89 
    4.17 사용자 키 정의 94 
    4.18 탱크 3D 모델 제어하기 104 
    4.19 유니티의 각도 시스템 109 
    4.20 프리팹 만들기 112 
    4.21 Spawn Point 활용 114 
    4.22 포탄 발사 115 
    4.23 GameObject.Find/transform.Find 117 
    4.24 Instantiate-프리팹 복제 118 
    4.25 충돌의 판정 120 
    4.26 태그 활용 125 
    4.27 파티클의 활용 128 
    4.28 카메라 이동 134 
    4.29 스카이박스 사용하기 136 
    4.30 탱크에 콜라이더 추가 138 
    4.31 적군 벙커 만들기 144 
    4.32 LookAt-목표물 바라보기 145 
    4.33 Raycast-목표물 탐색 149 
    4.34 Debug 출력 153 

    CHAPTER 05 게임 제작의 기초(2) 155 
    5.1 가위바위보 게임 156 
    5.2 Animation 만들기 159 
    5.3 GUI Text 사용하기 163 
    5.4 글꼴(Font) 추가 165 
    5.5 Button 만들기 166 
    5.6 C#에서 한글 사용하기 168 
    5.7 Visual Studio 사용하기 170 
    5.8 유니티의 GUI 174 
    5.9 난수 만들기 176 
    5.10 오브젝트의 이미지 바꾸기 177 
    5.11 GUI Skin 180 
    5.12 파티클 사용하기 184 
    5.13 슈팅 게임 만들기 186 
    5.14 Jet 화염 Particle 만들기 190 
    5.15 배경 화면 스크롤 192 
    5.16 World 좌표와 Screen 좌표 195 
    5.17 Normal Map 사용하기 199 
    5.18 Object의 크기 및 색깔 설정 200 
    5.19 폭파 불꽃 파티클 만들기 205 
    5.20 미사일 만들기 208 
    5.21 SendMessage 210 
    5.22 미사일 연속 발사 211 
    5.23 yield와 Coroutine 215 
    5.24 오브젝트 보이기/감추기 216 
    5.25 운석 만들기 220 
    5.26 전투기의 충돌 처리 221 
    5.27 전역 변수와 점수 표시 223 
    5.28 게임 오버 처리 226 
    5.29 GUI Skin 사용하기 227 
    5.30 Rich Text 230 
    5.31 Cell Animation 232 
    5.32 1×1 Plane 사용하기 240 
    5.33 길찾기(Nav Mesh Agent) 243 

    CHAPTER 06 계란받기 게임 257 
    6.1 게임의 개요 258 
    6.2 게임 제작의 학습 목표 259 
    6.3 게임의 리소스 260 
    6.4 게임의 흐름도 261 
    6.5 3D Object의 기본 설정 262 
    6.6 Game Object 만들기 264 
    6.7 스테이지 디자인 273 
    6.8 Object에 Tag 달기 277 
    6.9 배경 화면 스크롤 277 
    6.10 Game Manager 만들기 278 
    6.11 배경 음악 설정 280 
    6.12 폭탄의 이동 280 
    6.13 계란의 이동 283 
    6.14 바구니의 이동 286 
    6.15 새(Bird)의 이동 288 
    6.16 게임 초기화 292 
    6.17 게임 루프 293 
    6.18 Score 표시와 Game Over 처리 296 
    6.19 Esc 키로 게임 중지하기 298 
    6.20 PC Platform Build 298 
    6.21 Web Player Build 301 
    6.22 Android Platform으로 빌드 303 
    6.23 Android 단말기의 개발 환경 설정 307 

    CHAPTER 07 Flying Owl 311 
    7.1 게임의 개요 312 
    7.2 게임 제작의 학습 목표 313 
    7.3 게임의 리소스 314 
    7.4 게임의 흐름도 315 
    7.5 카메라와 Light 설정 316 
    7.6 Object 만들기 316 
    7.7 Object에 Collider 추가 319 
    7.8 Object에 Tag 달기 320 
    7.9 프리팹 만들기 321 
    7.10 게임 화면 디자인 321 
    7.11 배경 화면 스크롤 323 
    7.12 화면을 벗어난 나뭇가지 제거 324 
    7.13 Gift 스크립트 작성 326 
    7.14 참새의 이동 328 
    7.15 득점 및 감점 표시 330 
    7.16 올빼미의 이동 332 
    7.17 게임 초기화 334 
    7.18 게임 루프 335 
    7.19 올빼미의 점프 335 
    7.20 올빼미의 좌우 이동 336 
    7.21 카메라의 이동 338 
    7.22 Bird와 Gift 만들기 340 
    7.23 Gift의 개수 제한 342 
    7.24 충돌의 판정 343 
    7.25 득점 및 게임 오버 표시 344 
    7.26 모바일 기기의 중력가속도 센서 346 

    CHAPTER 08 클레이 사격 349 
    8.1 게임의 개요 350 
    8.2 게임 제작의 학습 목표 351 
    8.3 게임의 리소스 352 
    8.4 게임의 흐름도 353 
    8.5 3D Object의 Scale Factor 설정 353 
    8.6 Object 만들기 355 
    8.7 엽총 만들기 362 
    8.8 엽총의 회전 366 
    8.9 엽총의 애니메이션 만들기 368 
    8.10 배경 화면 스크롤 380 
    8.11 접시의 이동 380 
    8.12 Oops 표시 382 
    8.13 참새의 이동 384 
    8.14 실탄의 이동 388 
    8.15 게임 루프 389 
    8.16 게임 초기화 394 
    8.17 OnGUI 함수 작성 396 

    CHAPTER 09 Dungeon의 Alien 399 
    9.1 게임의 개요 400 
    9.2 게임 제작의 학습 목표 401 
    9.3 게임의 리소스 402 
    9.4 게임의 흐름도 403 
    9.5 3D Object의 Scale Factor 설정 404 
    9.6 Object 만들기 404 
    9.7 자동문 만들기 416 
    9.8 Stage 만들기 427 
    9.9 Laser 이동 스크립트 437 
    9.10 FireBall 이동 스크립트 438 
    9.11 Alien 이동 스크립트 441 
    9.12 Human 이동 스크립트 444 
    9.13 GUI 화면 만들기 457 

    CHAPTER 10 Temple Run 463 
    10.1 게임의 개요 464 
    10.2 게임 제작의 학습 목표 465 
    10.3 다리(Bridge) 만들기 466 
    10.4 Human 만들기 482 
    10.5 스테이지 만들기 485 
    10.6 다리 설치 스크립트 487 
    10.7 주인공 이동 스크립트 작성 494 
    10.8 GUI 설정 503 
    10.9 모바일 기기의 처리 505 
    10.10 게임의 배경 만들기 506 
    10.11 Android 플랫폼으로 변환 510 

    CHAPTER 11 Memory Test 513 
    11.1 게임의 개요 514 
    11.2 게임 제작의 학습 목표 515 
    11.3 게임의 흐름도 516 
    11.4 게임 리소스 추가 516 
    11.5 배경 화면 만들기 517 
    11.6 카드 애니메이션 524 
    11.7 Map 만들기 533 
    11.8 Game Manager 537 
    11.9 카드의 Touch 처리 544 
    11.10 카드 섞기 547 
    11.11 게임의 상태 표시 549 
    11.12 카드 판정 552 
    11.13 스테이지 클리어 555 
    11.14 Sound 처리 560 
    11.15 득점의 표시 563 
    11.16 기타 기능 추가 567 
    11.17 게임 타이틀 만들기 571 
    11.18 Scene의 등록 577 

    CHAPTER 12 운석 피하기 581 
    12.1 게임의 개요 582 
    12.2 3D 오브젝트 만들기 586 
    12.3 2D 오브젝트 만들기 612 
    12.4 우주선 움직이기 616 
    12.5 배경 화면 스크롤 620 
    12.6 레이저 발사 626 
    12.7 우주선의 무적 상태, 전투 모드와 운행 모드 633 
    12.8 적기의 이동 639 
    12.9 충돌의 판정과 처리 647 
    12.10 운석과 기뢰의 이동 651 
    12.11 운석과 기뢰 만들기 658 
    12.12 Game Manager의 활용 662 
    12.13 게임의 Stage 668 
    12.14 보너스 아이템 만들기 679 
    12.15 보너스 아이템 처리 683 
    12.16 적기의 등장 687 
    12.17 우주선의 충돌 판정과 처리 689 
    12.18 우주선의 보호막과 미니맵 표시 693 
    12.19 게임 타이틀 697 
    12.20 모바일 기기의 버튼 처리 706 

    찾아보기 714

    Trackback 0 And Comment 0

    5가지 실전 게임으로 배우는 코코스2d-x

    |



    코코스2d x 모바일 2D 게임 개발

    저자
    로저 잉글버트 지음
    출판사
    에이콘출판 | 2013-10-21 출간
    카테고리
    컴퓨터/IT
    책소개
    코코스2d-x를 활용한 게임 프로그래밍 가이드. 단계별로 5가지...
    가격비교 글쓴이 평점  




    『코코스2d x 모바일 2D 게임 개발』은 단계별로 실전적 예제를 통해 코코스2d-x의 활용법을 알기 쉽게 설명한 책이다. 각 예제를 통해, 프레임워크에 대해 좀더 깊이 이해하고 짧은 시간 안에 우리들의 게임에 파티클 효과, 애니메이션, 사운드, UI 요소를 비롯한 온갖 멋진 요소들을 추가해주는 매력적인 기법들을 배울 수 있다. 뿐만 아니라, iOS와 안드로이드 양쪽 기기에 올리는 방법과 여러 가지 화면 사이즈에 대응하는 방법까지 배우게 될 것이다.

    저자소개

    [ 저자 ]
    로저 잉글버트(Roger Engelbert)
    온라인 게임 개발 경력이 10년이 넘는 게임 개발자다. 그는 비디오 게임에 파묻혀 자랐으며, 고전 8비트 게임 타이틀을 예술의 일종이라고 생각한다. 그는 게임 개발과 디자인에 관한 가이드로 가득 찬 블로그 'Done With Computers'의 저자다. 로저는 모든 세대의 사람들에게 자신만의 게임을 만드는 기쁨을 경험할 수 있는 지식과 기회가 주어지는 그런 세상이 머지않아 다가오리라고 진심으로 믿고 있다.

    [ 역자 ]
    박지유
    1990년대부터 IT업계에 종사해 온 실무자이자 기획자로서, IT 산업 전반과 게임 분야에 특히 관심이 많다. 다양한 기사와 도서의 번역가로도 활동 중이며, 번역서로는 에이콘출판사에서 출간한 『오픈소스와 소프트웨어 산업, 상생의 경제학』(2013)이 있다. 

    목차

    1장 설치 
    ___다운로드와 설치 
    ___실습 예제: 코코스2d-x의 다운로드와 설치 
    ___Hello-x World-x 
    ___실습 예제: 애플리케이션 생성 
    ______폴더 구조 
    _________iOS 연결 클래스 
    _________AppDelegate 클래스 
    _________HelloWorldScene 클래스 
    _________누가 누구를 낳는가 
    ___추가 정보___ 
    ___실습 예제: 테스트 샘플 실행 
    ___그 밖의 도구들 
    ___요약 

    2장 C++와 코코스2d-x 
    ___코코스2d-x 소개 
    ______컨테이너 
    ______디렉터와 캐시 
    ______기타 
    ______하지만 C++를 모른다면? 
    ___인터페이스 
    ___실습 예제: 인터페이스 생성 
    ___구현 
    ___실습 예제: 구현 생성 
    ___인스턴스화와 메모리 관리 
    ______선택 1: 정적 메소드 사용 
    ______선택 2: C++ 코코스2d-x 스타일 
    ___CCObject의 역할 
    ___요약 

    3장 첫 번째 게임: 에어 하키 
    ___게임 환경 설정 
    ___실습 예제: 게임 프로젝트 생성 
    ___실습 예제: 규칙 설정 
    ___레티나 디스플레이 지원 
    ___실습 예제: 이미지 파일 추가 
    ___실습 예제: 레티나 지원 추가 
    ___사운드 효과 추가 
    ___실습 예제: 사운드 파일 추가 
    ___CCSprite 확장 
    ___실습 예제: GameSprite.cpp 추가 
    ___실습 예제: GameSprite 구현 
    ___실제 게임 씬 
    ___실습 예제: GameLayer 인터페이스 작성 
    ___실습 예제: init() 구현 
    ___실습 예제: 멀티터치 처리 
    ___실습 예제: 메인 루프 추가 
    ___실습 예제: 점수 갱신 
    ___요약 

    4장 재미있는 스프라이트: 스카이 디펜스 
    ___스카이 디펜스 게임 
    ______게임 설정 
    ______시작 프로젝트 
    ______유니버설 앱을 위한 화면 지원 추가 
    ______배경음악 추가 
    ______게임 초기화 
    ___코코스2d-x의 스프라이트시트 활용 
    ______스프라이트의 배치 드로잉 
    ___실습 예제: CCSpriteBatchNode 생성 
    ___코코스2d-x의 비트맵 폰트 
    ___실습 예제: 비트맵 폰트 레이블 생성 
    ___실습 예제: 최종 화면 스프라이트 추가 
    ___실습 예제: 오브젝트 풀 생성 
    ___CCAction 요약 
    ___실습 예제: 코코스2d-x 액션 생성 
    ___코코스2d-x의 스프라이트 애니메이션 
    ___실습 예제: 애니메이션 생성 
    ___게임을 작동할 때! 
    ___실습 예제: 터치 처리 
    ___실습 예제: 게임 시작과 재시작 
    ___실습 예제: 게임 업데이트 
    ___실습 예제: 풀에서 오브젝트 반환하기 
    ___플레이 게임! 
    ___요약 

    5장 위기일발: 로켓 조종 
    ___로켓 조종 게임 
    ______게임 설정 
    ______플레이 먼저, 학습은 나중에 
    ______스타트 프로젝트 
    ______화면 설정 
    ___파티클이란 무엇인가? 
    ___실습 예제: 파티클 시스템 생성 
    ___그리드 생성 
    ___코코스2d-x 원시도형 그리기 
    ___실습 예제: 뭔가 그려보자! 
    ___로켓 스프라이트 
    ___실습 예제: 로켓 업데이트 
    ___실습 예제: 터치 처리 
    ___게임 루프 
    ___실습 예제: 메인 루프 추가 
    ___죽음과 재설정 
    ___실습 예제: 재설정과 죽음 추가 
    ___요약 

    6장 쉽고 빠른 스프라이트: 빅토리안 러시아워 
    ___빅토리안 러시아워 게임 
    ___게임 설정 
    ___코코스2d-x를 이용한 신속 프로토타이핑 
    ___실습 예제: 플레이스홀더 스프라이트 생성 
    ___플레이어 오브젝트 
    ___블록 오브젝트 
    ___지형 오브젝트 
    ___실습 예제: 플레이어 코딩 
    ___실습 예제: 블록 오브젝트의 코딩 
    ______지형 클래스 계획 
    ______지형 오브젝트 구축 
    ___실습 예제: 지형 클래스 초기화 
    ___실습 예제: 블록 초기화 
    ___실습 예제: 이동과 재설정 
    ___플랫폼 충돌 로직 
    ___실습 예제: 충돌 탐지 추가 
    ___컨트롤 추가 
    ___실습 예제: 터치 처리 
    ___실습 예제: 메인 루프 코딩 
    ___요약 

    7장 외관 꾸미기: 빅토리안 러시아워 
    ___빅토리안 러시아워 게임 
    ______새로운 스프라이트 
    ______애니메이션 
    ___CCSprite를 이용한 건물 텍스처 처리 
    ___실습 예제: 빌딩의 텍스처 처리 
    ___컨테이너 안의 컨테이너 
    ___패럴랙스 효과 생성 
    ___실습 예제: 패럴랙스 효과 생성 
    ___게임 메뉴 추가 
    ___실습 예제: CCMenu와 CCMenuItem 생성 
    ___게임 튜토리얼 추가 
    ___실습 예제: 튜토리얼 추가 
    ___요약 

    8장 물리 구현: 박스2D 
    ___코코스2d-x 박스2D 프로젝트 생성 
    ___실습 예제: 기본 템플릿 준비 
    ___물리 엔진이란 무엇인가? 
    ______박스2D 소개 
    ______월드 소개 
    ______시뮬레이션 실행 
    ______CCObject가 없는 박스2D 
    ______바디 소개 
    ___미니풀 게임 
    ______게임 설정 
    ______CCSprite + b2Body = b2Sprite 
    ______풀 테이블 생성 
    ______변 생성 
    ______공 오브젝트 생성 
    ______충돌 필터 생성 
    ______큐 공 생성 
    ______콘택트 리스너 생성 
    ______게임 컨트롤 
    ___실습 예제: 터치 이벤트 추가 
    ______메인 루프 
    ___실습 예제: 메인 루프 추가 
    ______게임 타이머 추가 
    ___실습 예제: 타이머 생성 
    ___요약 

    9장 마지막 게임: 에스키모 
    ___에스키모 게임 
    ______게임 설정 
    ______게임의 구성 
    ___코코스2d-x CCScene 활용 
    ___실습 예제: CCScene 전환 생성 
    ___실습 예제: 싱글턴 CCLayer를 이용한 전환 생성 
    ___.plist 파일에서 외부 데이터의 로드 
    ___실습 예제: .plist 파일 생성 
    ______레벨 데이터 로드 
    ___실습 예제: .plist 파일에서 데이터 반환 
    ___게임 데이터 저장 
    ___실습 예제: 완료된 레벨의 저장 
    ___게임 알림 활용 
    ___실습 예제: CCNotificationCenter 활용 
    ___가속도계 활용 
    ___실습 예제: 가속도계 데이터 읽기 
    ___b2Body 재사용 
    ___실습 예제: b2Body 픽스처 변경 
    ___요약 

    10장 코드 재활용 
    ___우선, 버전과 요구조건에 대해 
    ______요구사항 
    ______선택 과정 
    ___실습 예제: 코코스2d-x 안드로이드 프로젝트 생성 
    ___실습 예제: 코드 컴파일 
    ___이클립스 활용 
    ___실습 예제: C++ 컴파일러 설치 
    ___실습 예제: 이클립스에 코코스2d-x 라이브러리 추가하기 
    ___실습 예제: 이클립스에서 프로젝트 열기 
    ______애플리케이션 실행 
    ___이클립스에서 C++ 코드 컴파일하기 
    ___실습 예제: C++ 코드 컴파일하기 
    ___하이브리드 프로젝트 생성 
    ___실습 예제: 하이브리드 코코스2d-x 프로젝트 생성 
    ___박스2D 하이브리드 프로젝트 생성 
    ___실습 예제: 박스2D 프로젝트 생성 
    ___하이브리드 게임 개발 
    ___요약 

    부록A 코코스2d-x 벡터 계산 
    ___벡터란 무엇인가? 
    ______벡터 메소드 
    ___ccp 헬퍼 메소드 활용 
    ______점을 중심으로 한 로켓 회전 
    ______벡터의 내적 활용 
    ______픽셀 기반 속도에서 각도 기반 속도로의 이동 

    부록B 깜짝 퀴즈 정답


    Trackback 0 And Comment 0