Alithinos Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Γειά σας φίλοι του Insomnia. Ίσως να με θυμάστε από το μακρύ thread "Απορίες για τη C#" που είχα κάνει πέρυσι όπου μάθαινα τη γλώσσα, η οποία ήταν η πρώτη μου, και μαζί και κάποιες βασικές αρχές του προγραμματισμού. Από τότε έχω φτιάξει κάποια προγραμματάκια, κυρίως για ιδιωτική χρήση, αλλά και ένα πρωτότυπο το οποίο το δούλευα 3 μήνες, αλλά δυστυχώς δεν είχα την ευκαιρία να το διαθέσω. Χρήμα να ανοίξω επιχείρηση δεν έχω, και απ' την άλλη το λυπάμαι να το δώσω τσάμπα, σκεπτόμενος ότι ξόδεψα 3 μήνες εργασίας σε αυτό, και δεν υπάρχει άλλη αντίστοιχη εφαρμογή που να κάνει το ίδιο πράγμα. Δεν έκανα όμως αυτό το thread για αυτά, αλλά για κάτι άλλο. Εδώ και κάποιο καιρό ξεκίνησα να φτιάχνω ένα video game με τη Unity Engine, και τη C#, το οποίο είναι το πιο φιλόδοξό και μεγαλύτερο μου project μέχρι τώρα. Έχω σκοπό όταν φτάσω σε ένα Α επίπεδο να το βάλω στο Steam Early Access, ή Indie GoGo για να πάρω χρήμα να το τελειώσω και να το κυκλοφορήσω. Συμπεραίνω όμως το εξής: Αν και πλέον έχω φτάσει ένα επίπεδο να μπορώ να χρησιμοποιώ τη γλώσσα για να πετύχω αυτό που θέλω, ο κώδικας μου είναι σπαγγέτι! Μόνο 1 μήνα δουλεύω στο video game και ήδη αρκετές φορές τα νεύρα μου γίνονται τσατάλια. Σε φάση αλλάζω κάτι στο κώδικα που διαχειρίζεται το να μη μπορεί ο παίκτης να πάρει άλλο αντικείμενο αν το inventory του είναι full, και ξαφνικά το ηχητικό εφέ της επίθεσης του όπλου σταματά να παίζει! Κάπως έτσι: Θα ήθελα αν μπορείτε να μου πείτε κάποιες συμβουλές ή να μου καταδείξετε κάποιο άρθρο, pdf, οτιδήποτε, που θα με βοηθήσει να οργανώσω καλύτερα το κώδικά μου. Να μην είναι απλά λειτουργικός, αλλά να έχει και ποιότητα. Να πω την αλήθεια, τέτοιο πρόβλημα δεν αντιμετώπισα σε ότι έφτιαξα στο Visual Studio. Ίσως η αλλαγή από το να έχω πλήρες γραμμικό έλεγχο και events στο συνεχές polling μέσω της main loop και το scripting, να έφταιξε λίγο. Και σε ένα βαθμό πιστεύω φταίει και το ότι αν και ξέρω C#, τη Unity ακόμα τη μαθαίνω, και στην αρχή τις πρώτες 2 εβδομάδες ότι έκανα το έκανα ακολουθώντας tutorials στο youtube για να εξοικειωθώ με τη μηχανή και τις βιβλιοθήκες της, τα οποία συνήθως αν και σου δείχνουν πως να κάνεις 1 πράγμα, το δείχνουν απομονωμένο και μη λογαριάζοντας αρχιτεκτονικές κτλπ. Btw, μήπως έπρεπε πρώτα να φτιάξω άλλα μικρότερα projects στη Unity μέχρι να τη μάθω καλύτερα, πριν ξεκινήσω να δουλεύω σε αυτό που θέλω να φτιάξω ? Είμαι σε σημείο να φοβάμαι να αλλάξω κάτι σε κάποιο script, μη πάει και χαλάσω κάτι κάπου αλλού, με το φαινόμενο της πεταλούδας.
Moderators Kercyn Δημοσ. 23 Φεβρουαρίου 2017 Moderators Δημοσ. 23 Φεβρουαρίου 2017 Να υπάρχει οδηγός που να λέει έτσι θα πρέπει να σχεδιάζετε το παιχνίδι είναι λίγο δύσκολο. Αυτό που μπορείς να κάνεις είναι αν έχεις αμφιβολίες για κάτι συγκεκριμένο να δεις πώς γίνεται αλλού (υπάρχουν άπειρα άρθρα/παρουσιάσεις που λέει κάποιος πώς έγινε το Χ πράγμα στο Υ παιχνίδι) και να κρίνεις τι απ' αυτά που διαβάζεις θα σε βοηθούσε ή να ζητήσεις βοήθεια γι' αυτό το συγκεκριμένο πράγμα. Η σχεδίαση γενικότερα, νομίζω, είναι πιο πολύ θέμα τριβής κι εμπειρίας παρά θέμα διαβάσματος (προφανώς χρειάζεται πολύ διάβασμα, αλλά το μεγάλο βήμα θα το κάνεις όταν το δοκιμάσεις μόνος σου και δεις τι δουλεύει ή δε δουλεύει). Γι' αυτό και σου είπα να δεις πώς γίνονται τα πράγματα αλλού, όχι για να πας να τα αντιγράψεις αλλά για να πάρεις ιδέες και να διευρύνεις τη σκέψη σου. Μερικά μέρη που θα μπορούσες να κοιτάξεις: GameDev, forum για ό,τι έχει σχέση με game development, από κώδικα και γραφικά μέχρι marketing. Gamasutra, site με διάφορα άρθρα για game design/development Το κανάλι του GDC, παρουσιάσεις από το Game Development Conference Αν θες πάντως βάλε το project σου κάπου και θα προσπαθήσω να του ρίξω μια ματιά (ίσως σήμερα-αύριο και μετά από Τρίτη) και να σου πω κάποια πράγματα. 1
tsofras Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Μήπως θα βοηθούσε κάποιο εργαλείο για code metrics ? http://answers.unity3d.com/questions/594896/code-quality-measurment-for-unity-projects.html http://stackoverflow.com/questions/38635/what-static-analysis-tools-are-available-for-c
Tsalikis177 Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Για το σπαγγέτι σου προτείνω να μην βάζεις ηλίθια features που θα είναι αδιάφορα στον Gamer και εσένα θα σε δυσκολέψουν. Για παράδειγμα, ένας χαρακτήρας έχει κάποια βασικά χαρακτηριστικά όπως HP MP AD AP DEF MDEF κλπ. Μην μου το κάνεις σαν το Lineage 2 που έχει 30 stats και χάνεις τη μπάλα. Ούτε σαν μερικά Web-based που έχει 10 εκδοχές των χρημάτων. Gold, Bronze Stone, Silver Stone, Gold Stone, Diamond, Platinum etc.
tsofras Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Για το σπαγγέτι σου προτείνω να μην βάζεις ηλίθια features που θα είναι αδιάφορα στον Gamer και εσένα θα σε δυσκολέψουν. Για παράδειγμα, ένας χαρακτήρας έχει κάποια βασικά χαρακτηριστικά όπως HP MP AD AP DEF MDEF κλπ. Μην μου το κάνεις σαν το Lineage 2 που έχει 30 stats και χάνεις τη μπάλα. Ούτε σαν μερικά Web-based που έχει 10 εκδοχές των χρημάτων. Gold, Bronze Stone, Silver Stone, Gold Stone, Diamond, Platinum etc. Συγνώμη αλλά αυτό δεν έχει καμία σχέση με την ποιότητα του software , οπότε θεωρώ λίγο άκυρη την προτασή σου . Σαν να του λές ας κάνει μόνο 2 κινήσεις ο χαρακτήρας για να γλυτώσεις την πολυπλοκότητα στην υλοποίηση. 2
Moderators Kercyn Δημοσ. 23 Φεβρουαρίου 2017 Moderators Δημοσ. 23 Φεβρουαρίου 2017 Συγνώμη αλλά αυτό δεν έχει καμία σχέση με την ποιότητα του software , οπότε θεωρώ λίγο άκυρη την προτασή σου . Σαν να του λές ας κάνει μόνο 2 κινήσεις ο χαρακτήρας για να γλυτώσεις την πολυπλοκότητα στην υλοποίηση. keep on feeding them Ειλικρινά. Μιλάς σε άνθρωπο που δηλώνει προγραμματιστής και γράφει ότι οι κληρώσεις του τζόκερ είναι στημένες γιατί βγαίνουν πολύ συχνά νούμερα κάτω από 10.
kostaszabos Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Η ποιότητα του κώδικα πώς μετριέται ακριβώς? όσο πιό απλός είναι και όσο πιό δύσκολα προβλήματα λύνει είναι και πιό "έξυπνος" αρα πιό ποιοτικός? ή όσο πιο λίγη μνήμη χρησιμοποιείς τόσο πιό ποιοτικός είναι?
Tsalikis177 Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Συγνώμη αλλά αυτό δεν έχει καμία σχέση με την ποιότητα του software , οπότε θεωρώ λίγο άκυρη την προτασή σου . Σαν να του λές ας κάνει μόνο 2 κινήσεις ο χαρακτήρας για να γλυτώσεις την πολυπλοκότητα στην υλοποίηση. Εγώ μιλάω για το σπαγγέτι και του λέω "όσα λιγότερα τόσο πιο καθαρό (άρα και ποιοτικό) κώδικα θα έχεις". Με αυτή τη λογική.
tsofras Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Η ποιότητα του κώδικα πώς μετριέται ακριβώς? όσο πιό απλός είναι και όσο πιό δύσκολα προβλήματα λύνει είναι και πιό "έξυπνος" αρα πιό ποιοτικός? ή όσο πιο λίγη μνήμη χρησιμοποιείς τόσο πιό ποιοτικός είναι? Μπορείς να θέλεις να ρίξεις μια ματιά στο Site: ISO25010 που αναφέρει τα standards για την ποιότητα του κώδικα
ZAKKWYLDE Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Η ποιότητα του κώδικα πώς μετριέται ακριβώς? όσο πιό απλός είναι και όσο πιό δύσκολα προβλήματα λύνει είναι και πιό "έξυπνος" αρα πιό ποιοτικός? ή όσο πιο λίγη μνήμη χρησιμοποιείς τόσο πιό ποιοτικός είναι? Όσο περισσότερα copy paste και όσο περισσότερο code duplication τόσο το καλύτερο
Alithinos Δημοσ. 24 Φεβρουαρίου 2017 Μέλος Δημοσ. 24 Φεβρουαρίου 2017 Να υπάρχει οδηγός που να λέει έτσι θα πρέπει να σχεδιάζετε το παιχνίδι είναι λίγο δύσκολο. Αυτό που μπορείς να κάνεις είναι αν έχεις αμφιβολίες για κάτι συγκεκριμένο να δεις πώς γίνεται αλλού (υπάρχουν άπειρα άρθρα/παρουσιάσεις που λέει κάποιος πώς έγινε το Χ πράγμα στο Υ παιχνίδι) και να κρίνεις τι απ' αυτά που διαβάζεις θα σε βοηθούσε ή να ζητήσεις βοήθεια γι' αυτό το συγκεκριμένο πράγμα. Η σχεδίαση γενικότερα, νομίζω, είναι πιο πολύ θέμα τριβής κι εμπειρίας παρά θέμα διαβάσματος (προφανώς χρειάζεται πολύ διάβασμα, αλλά το μεγάλο βήμα θα το κάνεις όταν το δοκιμάσεις μόνος σου και δεις τι δουλεύει ή δε δουλεύει). Γι' αυτό και σου είπα να δεις πώς γίνονται τα πράγματα αλλού, όχι για να πας να τα αντιγράψεις αλλά για να πάρεις ιδέες και να διευρύνεις τη σκέψη σου. Μερικά μέρη που θα μπορούσες να κοιτάξεις: GameDev, forum για ό,τι έχει σχέση με game development, από κώδικα και γραφικά μέχρι marketing. Gamasutra, site με διάφορα άρθρα για game design/development Το κανάλι του GDC, παρουσιάσεις από το Game Development Conference Αν θες πάντως βάλε το project σου κάπου και θα προσπαθήσω να του ρίξω μια ματιά (ίσως σήμερα-αύριο και μετά από Τρίτη) και να σου πω κάποια πράγματα. Μπαίνω που και που στα GameDev και Gamasutra. Δεν ξεσκονίζω τα αρχεία των άρθρων τους, αλλά κοιτάω τις νεότερες ειδήσεις, και άμα βρω τίποτα ενδιαφέρον το διαβάζω. Για το σπαγγέτι σου προτείνω να μην βάζεις ηλίθια features που θα είναι αδιάφορα στον Gamer και εσένα θα σε δυσκολέψουν. Για παράδειγμα, ένας χαρακτήρας έχει κάποια βασικά χαρακτηριστικά όπως HP MP AD AP DEF MDEF κλπ. Μην μου το κάνεις σαν το Lineage 2 που έχει 30 stats και χάνεις τη μπάλα. Ούτε σαν μερικά Web-based που έχει 10 εκδοχές των χρημάτων. Gold, Bronze Stone, Silver Stone, Gold Stone, Diamond, Platinum etc. Μα δε βάζω ηλίθια features. Ίσα ίσα κρατάω το gameplay σχετικά λιτό, και το UI ακόμα λιτότερο. Το πρόβλημα που εντοπίζω δε φαίνεται με κανέναν τρόπο στο παίκτη. Φαίνεται όμως όταν πάω να αλλάξω κάτι σε μια κλάση, και χαλάει κάτι σε μια άλλη. Μπορείς να ξεκινήσεις απο εδώ Χμ... Έβλεπα χθες και προχθές βίντεο αυτού του κυριούλη στο Youtube από ομιλίες που έχει κάνει. Πολύ συμπαθητικός, και εξηγεί με ωραίο τρόπο. Αυτό που χρειάζομαι απ' ότι καταλαβαίνω είναι να μου γίνουν συνήθεια η αρχές του S.O.L.I.D. Θα κοιτάξω αν το βρω να το διαβάσω αυτό το βιβλίο γιατί μου έχει κάνει αρκετά καλή εντύπωση ο "θείος" Martin.
Zaytsev Δημοσ. 24 Φεβρουαρίου 2017 Δημοσ. 24 Φεβρουαρίου 2017 Unit testing Dependency Injection Inversion of Control Interfaces Abstract Classes Για αρχή. Μετά, με την εμπειρία, θα μάθεις πιό advanced τεχνικές και θα καταλαβαίνεις μόνος σου τι πρόβλημα μπορεί να προκύψει αργότερα. Επίσης, κάνε μικρές μεθόδους, μη γράφεις μία ρουτίνα με 1000 γραμμές, μόνο προβλήματα θα σου προκαλεί. https://msdn.microsoft.com/en-us/library/aa260844(v=vs.60).aspx 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα