[Hướng Dẫn] Làm game Visual Novel And Android từ A > Z

prince of gamesprince of games Posts: 6Registered
edited August 2019 in Visual Novel
Chào các bạn , cũng lâu rồi k gặp , lần mình viết hướng dẫn làm game Harvest Moon trên RPG maker chắc cũng gần 10 năm trc
lâu rồi mình cũng không làm game và  lớn r thì cũng k còn máu lửa như lúc xưa mà làm nữa nên mình mong muốn sẽ chia sẽ kinh nghiệm vs kiến thức để các bạn nếu ai đang đam mê thì có cơ hội và tài liệu theo đuổi
Nay mình sẽ viết hướng dẫn làm 1 game Online nho nhỏ thể loại visual novel chạy trên nền ANDROID chuẩn phong cách lâp trình và sẽ hướng dẫn luôn cách chèn quảng cáo up lên CH play kiếm tiền nếu muốn (và bạn phaỉ chi 1 khoản 500k đê tạo account), đừng quá lo vì mọi thứ sẽ đơn giản vì mình sẽ gửi code public cho các bạn , những gì các bạn cần làm là copy và past nó vào những nơi mình bảo tuy nhiên mình sẽ chú thích và giải thích cho những bạn muốn hiểu sâu và theo đuổi con đường này còn những bạn k muốn tìm hiểu có thể lấy nó làm động lực và có thể tìm hiểu sau ,trong 1 tương lai nào đó

99co0YSpng

Các phần mình sẽ hướng dẫn cho các bạn như sau :
1. Cài đặt môi trường lập trình game
2. Hương dẫn cơ bản về giao diện và 1 số dòng lệnh cơ bản của phần mềm , tạo máy ảo để test game , xuất ra file chạy trên thiết bị thật
3. Tạo màn hình menu , sự kiện cơ bản , thao tác giao tiếp vs sự kiện cơ bản mà bên RPG maker gọi là event ấy
4. Tạo 1 cuộc đối thoại cơ bản vs Tạo 1 cuộc đối thoại vs nhiều tuỳ chọn
6. Tạo bản đồ di chuyển giữa các bản đồ
5. Tạo shop , chức năng mua đồ 
6. Tạo hệ thống tình cảm cưa cẩm gái trai này nọ
7. Tạo hệ thống chỉ số nhân vật để bạn nào có muốn kết hợp vs RPG 
8. Tạo túi đồ ,vật phẩm hệ thống nhặt đồ
9. Tạo hệ thống đăng kí online , đăng nhập online
10 . Tạo hệ thống chat box online giữa các người chơi

Bonus : nếu còn thơi gian se hướng dẫn tạo hệ thống giao dịch giữa các người chơi online
và thêm 1 số bài nếu thấy cần , vì mình cũng chưa làm full 1 game nào nên cũng k biết còn thiếu gì k 

Vì kiến thức là vô hạn, những gì mình hướng dẫn cũng chỉ là chia sẽ học hỏi nên những bạn k theo phong cách lập trinh của mình hoặc các lập trình viên lão làng thấy xin cũng đừng gạch đá , rất mong chia sẽ và học hỏi ở các phương diện khác
mình sẽ cố gắng 1 tuần post 1 baì vì mình cũng k có nhìu thời gian ,xin cám ơn

Comments

  • prince of gamesprince of games Posts: 6Registered
    [align=center][size=large]1.Cài Đặt Môi Trường Lập Trình Game[/size][/align]

    [size=medium]Mình sẽ sử dụng android studio để lập trình thể loại game này,[/size]
    [size=medium]đầu tiên các bạn download hộ mình phần mềm Android Studio tại [/size][size=medium]đây[/size]
    hoặc search "Android Studio download" trên google , vì mình xài Mac nên link hình như trỏ vào Mac OS
    Các bạn download r cài đặt như bình thường thôi
    ppHCxkJ.png


    Xong các bạn mở lên hộ mình , file => new project 

    6am1YOE.jpg

    chọn Empty Activity

    MWTbU8A.png

    ở đây để ý dùm mình caí packetname là id của game bạn sẽ có dạng com.xxx.xxx khá quan trọng khi bạn upload lên CH play

    iU8UclW.png
    ok xong hết thì các bạn chọn ok

    Xog đến khâu tạo máy ảo 

    Bạn vào tools => ADV manager

    JKqmBB0.png

    Chọn Create Vitual Device
    e1IjbrQ.png

    ở đây mình chọn Nexus 6 API 24 , xog next next chờ một hồi là xog khâu cb , thanks đã đọc
  • Black AceBlack Ace Posts: 40Registered
    http://taotrochoi.com/thread-3954.html
    Ko liên quan cho lắm nhưng đây là Harvest Star, project đang dc dev bởi team e. Cũng nhờ có mấy bài tut của anh và demo Harvest Sun nên team em mới có ý tưởng để dev game này :v
  • prince of gamesprince of games Posts: 6Registered
    Cám ơn bạn , mình có xem qua dự án của các bạn và 1 số dự án khác , hầu hết các tính năng đều vượt trội phien bản đầu của mình
    mình rất mong chờ các dự án của các bạn có thể phát triển và ra mắt 1 phiên bản hoàn chỉnh, rất vui vì bài hướng dẫn trc kia của mình giúp đc cho các bạn ít nhiều :)
  • prince of gamesprince of games Posts: 6Registered
    [align=center][size=large]Bài 2 Hướng dẫn cơ bản về giao diện và 1 số dòng lệnh cơ bản của phần mềm [/size][/align]
    [align=center][size=large]Tạo máy ảo để test game , xuất ra file chạy trên thiết bị thật[/size][/align]


    [align=left][size=medium]Phần 1: [/size][/align]

    ok, giờ các bạn mở project ra , mình sẽ nói từ trên xuống dưới , đầu tiên là mục manifest , 

    VMbNh4g.png

    ở mục này bạn chú ý cho mình dòng lệnh
    [size=x-small]<intent-filter>
       <action android:name="android.intent.action.MAIN" />

       <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    [/size]

    dòng này sẽ là dòng quyết định xem màn hình nào của bạn đc khởi tạo trc khi vào game , ở đây ví dụ là 
    <activity android:name=".MainActivity">
       <intent-filter>
           <action android:name="android.intent.action.MAIN" />


           <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
    </activity>

    thì có nghĩa là màn hình có tên class "MainActivity" khi vào game sẽ chạy đầu tiên , mình có thể thay đổi đc nhé .

    , tới nơi mà mình sẽ viết code 

    chương trình sẽ tạo trước cho mình 1 lớp mặc định là MainActivity 

    3iiw7Ky.png

    ở đây sẽ chú ý giúp mình dòng
    [size=x-small]setContentView(R.layout.activity_main)[/size]

    R.layout.activity_main chính là giao diện của lớp này

    Sf1TfHP.png

    muc drawable sẽ là nơi lưu trữ tất cả các hình ảnh của game bạn 

    1cvnyOz.png

    mục layout như mình đã nói sẽ là nơi lưu trữ tất cả giao diện của game bạn , hôm sau mình sẽ nói chi tiết về cách dựng giao diện

    Tổng hợp lại ở hôm nay chúng ta sẽ nói đơn giản ntn
    file Manifests hiện đang quy định màn hình MainActivity chạy đầu tiên , khi màn hình MainActivity chạy thì giao diện của màn hình MainActivity sẽ đc vẽ trong file activity_main
  • prince of gamesprince of games Posts: 6Registered
    ok tiếp tục nhé

    mở hộ mình thư mục layout 

    double click vào activity_main.xml

    tại chỗ này chọn cho mình design

    b8oxltz.png


    tiếp , kế bên chọn cho mình landscape 

    [img]https://i.imgur.com/G7DlcWw.png [/img]

    nhìn xuống dưới chọn cho mình tab "text"

    jeOKPbx.png

    ở chỗ này copy cho mình đoạn code này


    [size=x-small]
    <android.support.v7.widget.RecyclerView
       android:id="@+id/listShop";
       android:layout_width="0dp"
       android:orientation="vertical"
       android:layout_margin="10dp"
       android:gravity="center"
       android:clipToPadding="true"
       android:layout_weight="1"
       android:fitsSystemWindows="true"
       android:stretchMode="columnWidth"
       android:layout_height="match_parent"/>

    [/size]
    <FrameLayout
       android:layout_width="0dp"
       android:layout_weight="1"
       android:layout_height="wrap_content">
       <ImageView
           android:layout_width="match_parent"
           android:id="@+id/imageMain";
           android:src="@drawable/chuquancoffebt";
           android:contentDescription="@string/disription";
           android:layout_height="wrap_content" />
       <Button
           android:layout_width="150dp"
           android:id="@+id/btnMoney";
           android:layout_gravity="bottom|end"
           android:background="@drawable/button";
           android:layout_marginTop="50dp"
           android:textColor="#ffffff"
           android:text="1000$"
           android:layout_height="80dp" />
    [size=x-small]</FrameLayout>
    [/size]



     past vào phía trong 2 thẻ
    [size=x-small]<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android";
       xmlns:app="http://schemas.android.com/apk/res-auto";
       xmlns:tools="http://schemas.android.com/tools";
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       tools:context=".MainActivity">
    [/size][size=x-small]  [/size]

    [size=x-small]</android.support.constraint.ConstraintLayout>[/size]

    nó sẽ trở thành ntn

    OvdYJQ0.png

    Giờ bôi đen thẻ ở trên ntn 
    C7oRyFm.png

    bấm chữ "L" sẽ xuất hiện chữ " LinearLayout" , nhấp vào

    mbjdOeD.png

    nó sẽ trở thành ntn 

    u4DWSii.png

    vào thư mục value tìm file string thêm cho mình dòng này
    [size=x-small]<string name="disription">Main Image</string>[/size]

    aq7Kbe3.png

    cũng thư mục value , file styles thêm dòng này
    [size=x-small]<style name="AppTheme.NoActionBar">
       <item name="windowActionBar">false</item>
       <item name="windowNoTitle">true</item>
    </style>
    [/size]

    eJXARKN.png
    vào build.grade thêm dòng này
    [size=x-small]implementation 'com.android.support:recyclerview-v7:28.0.0'[/size]

    pnhKEG1.png

    sau khi thêm dòng trong build.grade sẽ xuất hiện chữ sycno project ở phía trên màn hình tay phỉa, các bạn bấm vào

    trở lại mục mainifests bạn thay dòng app:theme bằng dòng code này cho mình
    [size=x-small]android:theme="@style/AppTheme.NoActionBar"[/size]

    ulRgM7r.png

    thêm các hình mình đính kemf vào mục drawable v24

    AL1U4vv.png

    chạy run và chọn máy ảo  bằng nút play màu xanh phía trên , máy ảo mình đã hưỡng dẫn các bạn bài trc 

    jG2RtC8.png

    ra đc ntn là thành công

    R0WbKx1.png


    download file drawable [size=large]here[/size]
  • prince of gamesprince of games Posts: 6Registered
    bây giờ mình sẽ nói 1 chút về phần layout - Giao Diện

    đầu tiên các bạn tạo cho mình 1 activity mới tên là TestLayoutActivity bằng cách chuột phải vào folder => new activity => empty activity

    D5AuWGf.png

    mở file giao diện ra 

    Yok1YqX.png

    xong các bạn copy hộ mình đoạn code này dán vào ở giữa thẻ Constrainlayout 
    [size=x-small]<ImageView
       android:layout_width="wrap_content"
       android:id="@+id/imageMain";
       android:src="@drawable/chuquancoffebt";
       android:contentDescription="@string/disription";
       android:layout_centerHorizontal="true"
       android:layout_height="wrap_content" />

    <Button
       android:layout_width="150dp"
       android:id="@+id/btnTalk";
       android:layout_alignParentRight="true"
       android:layout_marginRight="50dp"
       android:background="@drawable/button";
       android:layout_marginTop="50dp"
       android:textColor="#ffffff"
       android:text="Nói Chuyện"
       android:layout_height="80dp" />

    <Button
       android:layout_width="150dp"
       android:id="@+id/btnBuy";
       android:layout_alignParentRight="true"
       android:layout_marginRight="50dp"
       android:layout_below="@id/btnTalk";
       android:background="@drawable/button";
       android:textColor="#ffffff"
       android:text="Mua Hàng"
       android:layout_height="80dp" />

    <Button
       android:layout_width="150dp"
       android:id="@+id/btnGift";
       android:layout_alignParentRight="true"
       android:layout_marginRight="50dp"
       android:layout_below="@id/btnBuy";
       android:background="@drawable/button";
       android:textColor="#ffffff"
       android:text="Tặng quà"
       android:layout_height="80dp" />

    <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:textAppearance="?android:attr/textAppearanceMedium"
       android:id="@+id/txt_dialog";
       android:textColor="#ffffff"
       android:background="#000000"
       android:layout_centerHorizontal="true"
       android:text="Chào mừng quý khách !!"
       android:textAlignment="center"
       android:layout_alignParentBottom="true"
       />
    [/size]

    đổi thẻ ContrainsLayout thành RelativeLayout

    KcsewGM.png

    ở đây chú ý hộ mình dòng mình bôi đen 

    YdNh6FT.png

    background quyết định ảnh nền của layout

    thẻ image này thể hiện nv phục vụ ở trên màn hình

    NkaK8vT.png

    thẻ button này thể hiện button Nói Chuyện

    QSrujPd.png

    tương tự vs các thẻ kia 


    bây giờ mình sẽ thực hiện bắt event khi chạm vào chúng trên đt

    mở file code của TestLayoutActivity ra

    đầu tiên , định nghĩa đối tượng

    4cgSVFY.png
    [size=x-small]String mACTIVITY = "TestLayoutActivity";
    ImageView imageMain;
    Button btnTalk;
    TextView txt_dialog;
    [/size]

    xong , ánh xạ đối tượng vs set sự kiện
    [size=x-small]imageMain = (ImageView)findViewById(R.id.imageMain);
    btnTalk = (Button)findViewById(R.id.btnTalk);
    txt_dialog = (TextView)findViewById(R.id.txt_dialog);
    [/size]
    [size=x-small]imageMain.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Log.e(mACTIVITY,"clicking button Image");
       }
    });


    btnTalk.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Log.e(mACTIVITY,"clicking button Talk");
           txt_dialog.setText("Quý khách cần gì ?");
       }
    });
    [/size]

    ocXKHai.png

    ở đây mình sẽ dùng id để ánh xạ 

    KcsewGM.png

    bạn chú y dòng id mà mình đặt trong file layout qua bước code định nghĩa - ánh xạ thì dùng lại id đó

    dòng setOnClick .... là bước bắt sự kiện touch vào đối tượng đó , ở đây mình thử vs 2 đối tượng là btnTalk vs imgMain

    chạy game

    mở màn hình Logcat phía dưới bên tay trái ra , khi.bạn click vào btnTalk

    YR42u4q.png

    và khi click vào btnImage

    ocXKHai.png

    nhớ vào manifest để thay đổi màn hình khởi tạo khi run

    fCiSXGJ.png

    Đến đây kết thúc bài 3
Sign In or Register to comment.