GithubHelp home page GithubHelp logo

senacand / neojakartawarbot2050 Goto Github PK

View Code? Open in Web Editor NEW
11.0 1.0 2.0 260 KB

Bot yang menjalankan Neo Jakarta War Bot 2050

Home Page: https://www.facebook.com/jakarta2050

License: GNU General Public License v3.0

JavaScript 90.82% HTML 9.18%
bot entertainment indonesia shitpost shitposting

neojakartawarbot2050's Introduction

Neo Jakarta War Bot 2050

Apa ini?

Tahun 2050, pemerintah pusat telah jatuh dan jatuh pula pemerintah kota Jakarta. Jakarta sekarang disebut sebagai Neo Jakarta dengan nama dan pembagian daerah baru yang masing-masing dipimpin dengan kelompok mafia yang berbeda. Tapi Neo Jakarta tidaklah damai. Para kelompok mafia tersebut berusaha keras untuk merebut daerah satu sama lain demi menguasai seluruh Neo Jakarta.

Proyek ini adalah program yang menjalankan bot Neo Jakarta War Bot 2050 di https://www.facebook.com/jakarta2050.

Wait, gimana?

Neo Jakarta War Bot 2050 adalah sebuah halaman Facebook yang menampilkan daerah fiktif bernama Neo Jakarta di mana setiap daerah saling jajah-menjajah daerah lainnya. Pengambilan daerah dilakukan 100% secara acak oleh bot dengan algoritma sebagai berikut:

  1. Bot akan secara acak memilih satu daerah yang ada. Kita sebut daerah terpilih sebagai daerah penyerang.
  2. Bot akan melihat tetangganya, apakah ada tetangganya yang merupakan musuhnya (pemilik daerah tersebut berbeda dengan pemilik daerah penyerang).
  3. Jika tidak ada, kembali ke poin 1.
  4. Bot akan secara acak memilih satu tetangga yang merupakan musuhnya. Kita sebut daerah terpilih sebagai daerah terserang.
  5. Kesimpulan: "Pemilik dari daerah penyerang mengambil alih/menjajah daerah terserang".

Apakah ini toolkit/framework untuk bikin warbot sendiri?

Sayangnya tidak. Kode program ini masih cukup berantakan, semua action berada di satu file, dan tiap fungsi sangat dependen satu sama lain. Namun, kode program ini bisa sekadar untuk melihat bagaimana berinteraksi dengan API Facebook dalam membuat page bot.

Setup

Instruksi di bawah ini adalah instruksi untuk menginstal dan menjalankan Neo Jakarta War Bot 2050.

Kebutuhan

Untuk menjalankan Neo Jakarta War Bot 2050, anda perlu menginstal program ini terlebih dahulu:

  1. Node.js
  2. Node Package Manager (npm)

Instalasi

Mengunduh dependensi dari program

Silakan clone branch master dari repositori ini ke perangkat lokal anda buka Terminal anda dan jalankan perintah berikut pada root folder dari proyek ini:

npm install

Biarkan npm mengunduh semua dependensi yang tercatat di package.json.

Mempersiapkan environment variable

Sebelum menjalankan program ini, anda perlu mempersiapkan file .env pada root folder dari proyek ini yang berisi Access Token Facebook halaman anda, Page ID dari halaman anda, serta clientId Imgur untuk mengunggah peta yang digambar.

Silakan buat file dengan nama .env pada root folder proyek yang berisi:

FB_ACCESS_TOKEN={ACCESS_TOKEN_HALAMAN_ANDA}
FB_PAGE_ID={PAGE_ID_HALAMAN_ANDA}
IMGUR_CLIENT_ID={CLIENT_ID_IMGUR}

Simpan file tersebut.

Persiapan tambahan

Untuk sekarang, skrip bot tidak dapat berjalan jika tidak ada folder outputs. Silakan buat folder kosong bernama outputs di root proyek ini. Ke depannya, skrip akan mengecek terlebih dahulu apakah folder tersebut ada atau tidak.

Menjalankan

Jalankan bot dengan menjalankan perintah berikut:

node index.js

Kontribusi

Silakan tuliskan masalah atau saran melalui fitur Issues GitHub.

Lisensi

Neo Jakarta War Bot 2050 dilisensikan dengan GNU General Public License v3.

neojakartawarbot2050's People

Contributors

senacand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

neojakartawarbot2050's Issues

new mechanics suggestions for 'season 2'

  1. tambah marker kapital/home territory/center of command buat tiap faction, misal berupa outline tebal.
  2. faction yang udah defeated warna nama nya abu2.
  3. "Line of logistics", semua occupied territory yang diambil oleh suatu faction harus terhubung dengan kapital, bila ada yang tidak terhubung maka akan menjadi territory kosong (putih) setelah 3 kali turn tidak dicapture oleh faction lain.
    contohnya bila faction A punya 3 teritori yang berderet lalu ada faction B yang capture satu teritori A yang ada di tengah, maka teritori non kapital yang terputus hubungannya dengan kapital punya chance yang lebih tinggi untuk dicapture oleh faction lain. dan secara visual teritori tersebut berwarna lebih gelap. bila dalam 3 turn tidak ada faction territory yang lepas tersebut maka territory tersebut menjadi empty.
  4. "Faction territory power", tiap territory dari faction memiliki angka yang bisa dianggap sebagai attack power, dengan mekanisme sebagai berikut:
    anggapan AP faction A = 65 dan B = 50, bila faction A menyerang B maka kesempatan faction A menang adalah
    50% + ( ( (A - B)*100 ) / B )
    alias
    50% + ( ( (65-50)*100) / 50 )
    bila A menang, AP faction A ditambah setengah dari AP faction B, lalu dibagi 2, yang satu untuk di territory penyerang, dan yang satu untuk di territory yang baru di capture.
  5. untuk semua territory yang terlepas aksesnya ke kapital, AP nya berkurang sebanyak 25% tiap turn.
  6. AP tiap faction bertambah di tiap turn, jumlah yang ditambahkan adalah 1 AP untuk SETIAP territory kecuali territory kosong.

[Feature] Kemampuan distrik asli untuk 'revolusi' setelah dikuasai

Issue ini adalah feature request seperti yang disosialisasika di laman Facebook

Title dari issuenya sudah menjelaskan, cuman saya juga ng-propose metode untuk membantu jika ingin direalisadikan, lebih detailnya begini:

Gue belum baca-baca source codenya, tapi gue asumsikan daerah itu punya dua state, Masih merupakan distrik asli ("Berkuasa"), atau dikuasai distrik lain("Dikuasai").

Sebelum setiap turn, setiap daerah yang dikuasai mengeluarkan nilai random [0..1). Daerah yang dikuasai dengan nilai terbesar, dijadikan kandidat revolusi.

Asumsikan ada sebuah nilai [0..1) yang merupakan kemungkinan sebuah daerah mengeluarkan nilai True, selebihnya False.

Kandidat revolusi ini, menggunakan nilai probabilitas tadi, menentukan apakah ia akan melakukan revolusi atau tidak.

Jika iya, maka turn kali ini digunakan untuk menunjukkan daerah kandidat tadi meraih kembali kuasa daerahnya dan bisa bermain seperti daerah lainnya.

Jika tidak, berarti turn kali ini dilakukan turn seperti biasanya.

Terus untuk men-suppress revolusi ini juga, turn revolusi tidak akan terjadi dua kali berturut-turut. Worst casenya ya selang seling: revolusi - turn biasa - revolusi - turn biasa, dst.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.