Vector2D Δημοσ. 21 Ιουλίου 2015 Δημοσ. 21 Ιουλίου 2015 Καλησπέρα, θέλω να φτιάξω ένα AutoPlay BOT για MMO-RPG παιχνίδι. Είπα να ασχοληθώ λίγο με το να μάθω κάποια πράγματα γύρο από αυτό... λοιπόν, Ψάχνω ΕΛΛΗΝΙΚΑ(αν γίνεται...) βιβλία για το πως να παίρνεις αποφάσεις στα παιχνίδια. Δηλαδή θέλεις να αυτοματοποίησεις διαδικασίες, πως θα πάρεις τις αποφάσεις ; Decision Trees αν σας λέει κάτι...
StathisG Δημοσ. 22 Ιουλίου 2015 Δημοσ. 22 Ιουλίου 2015 Κατ' αρχήν, καλά τα Ελληνικά για την κατανόηση όρων, αλλά θα πρέπει να τους μάθεις οπωσδήποτε και στα Αγγλικά, καθώς πέρα απ' ό,τι διαβάζεις στα βιβλία, θα χρειαστεί να κάνεις και το δικό σου research, όπου -σε πολλές περιπτώσεις- τα Αγγλικά είναι μονόδρομος. Από εκεί και πέρα, πιστεύω πως αυτό που ζητάς παραείναι γενικό. Πολύ απλοϊκή εξήγηση, αλλά η ίδια η κεντρική ιδέα της τεχνητής νοημοσύνης είναι η λήψη αποφάσεων για οποιονδήποτε τομέα. Αυτό που θέλω να πω είναι πως υπάρχουν ένα σωρό τρόποι με τους οποίους μπορείς να πάρεις αποφάσεις και μπορούν να εφαρμοστούν σε ένα μεγαλύτερο σωρό από υλοποιήσεις (ιατρικά θέματα, γραμμές παραγωγής, παιχνίδια, κλπ). Πριν συνεχίσω, να αναφέρω πως μπορεί η απάντησή μου να είναι λίγο... "over-engineered". Δε γνωρίζω τι ανάγκες έχει η υλοποίηση ενός bot (π.χ. τι tools προσφέρει το ίδιο το παιχνίδι κλπ), οπότε μπορεί να χρειάζεσαι πολύ πιο απλά πράγματα από αυτά που θα αναφέρω. Κατά τη γνώμη μου, θα πρέπει αρχικά να ανακαλύψεις το είδος των αποφάσεων που θέλεις να πάρεις. Για παράδειγμα, αν ένα από τα πράγματα που θα χρειαστείς είναι να βρεις την πιο σύντομη διαδρομή από το ένα μέρος στο άλλο, θα χρειαστείς μία υλοποίηση ενός αλγόριθμου που χρησιμοποιείται σε pathfinding (πχ A*). Μπορεί φυσικά αυτό να μη χρειάζεται (να σου δίνει τη δυνατότητα το ίδιο το παιχνίδι να χρησιμοποιήσεις το δικό του pathfinding σύστημα). Ανακαλύπτοντας λοιπόν συγκεκριμένα είδη αποφάσεων που θέλεις να πάρεις, μπορείς να κάνεις πιο στοχευμένες αναζητήσεις ή ερωτήσεις: Π.χ. "θέλω να βρω έναν τρόπο ώστε όταν ο χαρακτήρας μου δέχεται επίθεση, να λαμβάνω υπ' όψιν τα stats του αντιπάλου και το status του χαρακτήρα μου ώστε να αποφασίσω αν θα αντεπιτεθώ ή θα τραπώ σε φυγή". Θα αναφέρω 2 από τις τεχνικές που έχω χρησιμοποιήσει ή έχω δει να χρησιμοποιούνται σε παιχνίδια, ώστε να ψάξεις μερικά πράγματα γι' αυτές και να πάρεις μερικές ιδέες γι' αρχή: - Finite-State Machines (δες μία επεξήγηση για υλοποίησή τους σε παιχνίδια εδώ - με μια γρήγορη ματιά που έριξα στο άρθρο, νομίζω πως εξηγεί τη γενική ιδέα). - Planning & re-planning algorithms. Εδώ πάμε σε πιο πολύπλοκες καταστάσεις από τα FSMs. Η κεντρική ιδέα (και πάλι αρκετά απλοϊκή εξήγηση) είναι πως -συνήθως- γνωρίζεις κάποια πράγματα για το περιβάλλον στον οποίο λειτουργεί ο αυτόνομος πράκτοράς σου (autonomous agent), δηλαδή το bot που θέλεις να φτιάξεις, και γράφεις διάφορους κανόνες ώστε να μπορεί ο αλγόριθμος να βρει το βέλτιστο πλάνο για να πετύχει τον σκοπό του. Αν πχ θέλεις να ξεδιψάσεις, με βάση αυτά που γνωρίζεις για το περιβάλλον, ένα πλάνο μπορεί να είναι πως θα πας στο πλησιέστερο πηγάδι, θα βγάλεις νερό, θα γεμίσεις το φλασκί σου και θα πιείς. Φυσικά, σε τέτοιες υλοποιήσεις θα πρέπει να λάβεις υπ' όψιν τι θα γίνει αν το υπάρχον πλάνο αποτύχει ή διακοπεί για οποιονδήποτε λόγο (εκεί έρχεται το re-planning). Θυμήσου όμως πως αυτές είναι απλά 2 τεχνικές· υπάρχουν πάρα πολλές άλλες που ίσως να κάνουν καλύτερη δουλειά γι' αυτό που θέλεις. Είναι πολύ πιθανό επίσης να πρέπει να συνδιάσεις τεχνικές. Όπως λογικά θα κατάλαβες από την απάντησή μου, δεν έχω κάποιο πολύ συγκεκριμένο βιβλίο για να σου προτείνω αποκλειστικά για games. Αντ' αυτού, θα προτείνω ένα αρκετά μεγάλο και αρκετά γενικό (σαν εισαγωγή στον κόσμο της τεχνητής νοημοσύνης), που αν σε ενδιαφέρει ο τομέας θα πρότεινα να διαβάσεις ώστε να κατανοήθεις θεμελιώδεις έννοιες και γενικές τεχνικές: Artificial Intelligence: A Modern Approach (ίσως υπάρχει μεταφρασμένο και στα Ελληνικά, καθώς είναι πολύ γνωστό). Από Ελληνικά, έχω διαβάσει (πριν πολλά χρόνια) μόνο το Τεχνητή Νοημοσύνη. Απ' ότι θυμάμαι, είναι σαν μια πιο μικρή έκδοση του προαναφερθέν αγγλικού και ενώ είναι γραμμένο στα Ελληνικά, αναφέρει και τους αντίστοιχους Αγγλικούς όρους, κάτι που μου είχε κάνει ευχάριστη εντύπωση.
Moderators Kercyn Δημοσ. 22 Ιουλίου 2015 Moderators Δημοσ. 22 Ιουλίου 2015 Στα Ελληνικά. Έχεις δει σε ταινίες τους μάγους που βγάζουν κάτι τεράστια σκονισμένα βιβλία από τη βιβλιοθήκη και τα φυσάνε; Ένα τέτοιο πράγμα φαντάσου. 2
javavall Δημοσ. 22 Ιουλίου 2015 Δημοσ. 22 Ιουλίου 2015 Στα Ελληνικά. Έχεις δει σε ταινίες τους μάγους που βγάζουν κάτι τεράστια σκονισμένα βιβλία από τη βιβλιοθήκη και τα φυσάνε; Ένα τέτοιο πράγμα φαντάσου. Με το συγκεκριμένο βιβλίο μπορεί να αποκτάς γενικές γνώσεις, αλλά δε σε βοηθάει ούτε το μάθημα της σχολής να περάσεις, πόσο μάλλον να φτιάξεις bot για παιχνίδι. Φαντάζομαι πάντως ότι δε χρειάζεται ΑΙ αυτό που θέλει να κάνει ο θεματοθέτης. Πρακτικά όπως το αναφέρει, θέλει να αυτοματοποιήσει διαδικασίες, κάτι το οποίο είναι αρκετά πιο απλό. πχ άλλο αυτό και άλλο να φτιάξεις κάτι που να δέχετε εντολές με βάση κάποιο input, με σκοπό κάποιου είδους αυτοματοποίηση. Εν τέλη, γι'αυτό που θέλεις να κάνεις τα Αγγλικά είναι μονόδορομος. http://www.blizzhackers.cc/viewtopic.php?t=409747
Vector2D Δημοσ. 23 Ιουλίου 2015 Μέλος Δημοσ. 23 Ιουλίου 2015 Τι θα κάνει το BΟΤ, συνοπτικά: Υπάρχουν 3 lanes, θα ξεκινάει σε κάποιο για αρχή Στην αρχή απλά θα φαρμαρει και θα αποφεύγει τον πόλεμο Όταν φτάσει σε κάποια Level, θα μπορεί να πάει All-IN(να πολεμήσει) Όσο βρίσκεται σε ένα Lane, θα πρέπει να προσέχει να μην φτάσει στο Enemy Tower. Να μην πολεμήσει κοντά σε Enemy Tower. Να χτυπάει το Tower μόνο αν δεν υπάρχουν enemies κοντά και έχει minions (ώστε να μην μας βαράει το Tower) Στην φυγή, να βρει το καλύτερο μέρος ώστε να πάει να κάνει RECALL Πηγαίνοντας προς το μέρος, αν προκύψει κάτι ξαφνικό (εμφανιστεί κάποιος εχθρός) να αλλάξει απόφαση. 1. Άλλο σημείο 2. Δεν υπάρχει σωτηρία, οπότε πολέμα και ψώφα. Αν έχει Push-αρει το Lane του, να δει αν μπορεί να αλλάξει και να παει να βοηθήσει τους άλλους Ξεχωριστά αυτά, μπορούν να γίνουν... το θέμα είναι πως τα συνδέεις. Παράδειγμα: Farm Decision Tree Fight Decistion Tree Escape Decision Tree Lane Pick Desision Tree Το θέμα είναι ότι όλα αυτά τα δέντρα είναι πολύ περιληπτικά. Δηλαδή υπάρχουν κύκλοι που αποτελούν ολόκληρο Decision Tree. Και 2ον... πως τα συνδέεις αυτά... καλά είναι να προγραμματίζεις Decision Tree για 1 Case. (Farm or Fight or Whateva)
Apoll Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Τι θα κάνει το BΟΤ, συνοπτικά: Υπάρχουν 3 lanes, θα ξεκινάει σε κάποιο για αρχή Στην αρχή απλά θα φαρμαρει και θα αποφεύγει τον πόλεμο Όταν φτάσει σε κάποια Level, θα μπορεί να πάει All-IN(να πολεμήσει) Όσο βρίσκεται σε ένα Lane, θα πρέπει να προσέχει να μην φτάσει στο Enemy Tower. Να μην πολεμήσει κοντά σε Enemy Tower. Να χτυπάει το Tower μόνο αν δεν υπάρχουν enemies κοντά και έχει minions (ώστε να μην μας βαράει το Tower) Στην φυγή, να βρει το καλύτερο μέρος ώστε να πάει να κάνει RECALL Πηγαίνοντας προς το μέρος, αν προκύψει κάτι ξαφνικό (εμφανιστεί κάποιος εχθρός) να αλλάξει απόφαση. 1. Άλλο σημείο 2. Δεν υπάρχει σωτηρία, οπότε πολέμα και ψώφα. Αν έχει Push-αρει το Lane του, να δει αν μπορεί να αλλάξει και να παει να βοηθήσει τους άλλους Ξεχωριστά αυτά, μπορούν να γίνουν... το θέμα είναι πως τα συνδέεις. Παράδειγμα: Farm Decision Tree Fight Decistion Tree Escape Decision Tree Lane Pick Desision Tree Το θέμα είναι ότι όλα αυτά τα δέντρα είναι πολύ περιληπτικά. Δηλαδή υπάρχουν κύκλοι που αποτελούν ολόκληρο Decision Tree. Και 2ον... πως τα συνδέεις αυτά... καλά είναι να προγραμματίζεις Decision Tree για 1 Case. (Farm or Fight or Whateva) Για να κάνεις αυτό που λες, ιδίως αν προσπαθείς να κάνεις κανένα bot που να κάνει inject την παραπάνω λογική σε υπάρχον παιχνίδι και όχι σε κάτι που φτιάχνεις εσύ αυτή τη στιγμή, θα πρέπει να μάθεις πως να κάνεις hack τον client του παιχνιδιού πρώτα. Και να μπορείς να περνάς απλές μακροεντολές στον server. Μόλις το καταφέρεις αυτό, τα υπόλοιπα είναι εύκολα, μιας και κάνωντας sniffing τα πακέτα και παιχνιδιού μπορείς να γράψεις την λογική τριγύρω με βάση τα δεδομένα που μαζεύεις. Αν μου έλεγες να γράψεις κώδικα για κανένα robot σε MSRDS, θα μπορούσα να σε βοηθήσω, αλλά και πάλι γενικολογείς.
Vector2D Δημοσ. 24 Ιουλίου 2015 Μέλος Δημοσ. 24 Ιουλίου 2015 Για να κάνεις αυτό που λες, ιδίως αν προσπαθείς να κάνεις κανένα bot που να κάνει inject την παραπάνω λογική σε υπάρχον παιχνίδι και όχι σε κάτι που φτιάχνεις εσύ αυτή τη στιγμή, θα πρέπει να μάθεις πως να κάνεις hack τον client του παιχνιδιού πρώτα. Και να μπορείς να περνάς απλές μακροεντολές στον server. Μόλις το καταφέρεις αυτό, τα υπόλοιπα είναι εύκολα, μιας και κάνωντας sniffing τα πακέτα και παιχνιδιού μπορείς να γράψεις την λογική τριγύρω με βάση τα δεδομένα που μαζεύεις. Αν μου έλεγες να γράψεις κώδικα για κανένα robot σε MSRDS, θα μπορούσα να σε βοηθήσω, αλλά και πάλι γενικολογείς. Είσαι λίγο εκτός... το API για Injection (πρόσβαση στις λειτουργίες του Client) υπάρχει. Και δεν νομίζω να γενικολογώ μετά και την 2η απάντηση... απλά πρέπει να γνωρίζεις και λίγο από παιχνίδια, και κυρίως MMORPG. Αν κάποιος ξέρει από RPG, το "θελω να φτιάξω BOT για MMORPG" είναι υπερ-αρκετό. Φιλικά...
Xvipes Δημοσ. 28 Ιουλίου 2015 Δημοσ. 28 Ιουλίου 2015 RPG και μάλιστα MMO το Lol? χμ.... Να κάνω και εγώ ένα injection στο API του thread και να ρωτήσω αν υπάρχει γενική μεθοδολογία για sniff των πακέτων ενός παιχνιδιού ή πάει ανά παιχνίδι? Π.χ έστω ότι ήθελα να διαβάσω (και μετά να αλλάξω ) τα πακέτα του Lineage, από που θα έπρεπε να ξεκινήσω?
Moderators Kercyn Δημοσ. 28 Ιουλίου 2015 Moderators Δημοσ. 28 Ιουλίου 2015 Αν μιλάς για server στημένο με L2J, θα έλεγα να ρίξεις μια ματιά στον default κώδικά του για να πάρεις μια ιδέα (GitHub). Από κει και πέρα Wireshark με φίλτρα για να βλέπεις μόνο το L2 και υπομονή. Δεν έχω ασχοληθεί ιδιαίτερα με το συγκεκριμένο κομμάτι, οπότε είναι πιθανό κάποιος άλλος να σου πει κάτι καλύτερο.
παπι Δημοσ. 29 Ιουλίου 2015 Δημοσ. 29 Ιουλίου 2015 RPG και μάλιστα MMO το Lol? χμ.... Να κάνω και εγώ ένα injection στο API του thread και να ρωτήσω αν υπάρχει γενική μεθοδολογία για sniff των πακέτων ενός παιχνιδιού ή πάει ανά παιχνίδι? Π.χ έστω ότι ήθελα να διαβάσω (και μετά να αλλάξω ) τα πακέτα του Lineage, από που θα έπρεπε να ξεκινήσω? Το sniff είναι απλή διαδικασία. Για αυτό το λογο όλα τα παιχνίδια κωδικοποιούν τα πακέτα. Δηλαδή πακέτο. Για l2 που λες είχα φτιάξει ένα bot. Είχα hackαρει τον client, βρήκα το private key μπλα μπλα. ψέματα λεω, απλά το εφτιαξα με autoit. Readpixel μια for με /targets και δύο τρεία if. Δοκίμασε το, δεν είναι τίποτα. Α θες το spy++ για να βρεις τα coords της hp bar.
Xvipes Δημοσ. 29 Ιουλίου 2015 Δημοσ. 29 Ιουλίου 2015 Το sniff είναι απλή διαδικασία. Για αυτό το λογο όλα τα παιχνίδια κωδικοποιούν τα πακέτα. Δηλαδή πακέτο. Για l2 που λες είχα φτιάξει ένα bot. Είχα hackαρει τον client, βρήκα το private key μπλα μπλα. ψέματα λεω, απλά το εφτιαξα με autoit. Readpixel μια for με /targets και δύο τρεία if. Δοκίμασε το, δεν είναι τίποτα. Α θες το spy++ για να βρεις τα coords της hp bar. Pixel bot είχα φτιάξει σε java με την robot library και κάνοντας printscreen την εικόνα κάθε φορά, αλλά όχι για παιχνίδι. οκ αυτό που λες αλλά σε φτάνει μέχρι κάποιο σημείο... άρα το να διαβάσεις τα πακέτα πρέπει να τα αποκρυπτογραφήσεις πρώτα. Όντως με wireshark τα "πιάνεις"?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα