Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γειά σας φίλοι του Insomnia. 

Ίσως να με θυμάστε από το μακρύ thread "Απορίες για τη C#" που είχα κάνει πέρυσι όπου μάθαινα τη γλώσσα, η οποία ήταν η πρώτη μου, και μαζί και κάποιες βασικές αρχές του προγραμματισμού.

 

Από τότε έχω φτιάξει κάποια προγραμματάκια, κυρίως για ιδιωτική χρήση, αλλά και ένα πρωτότυπο το οποίο το δούλευα 3 μήνες, αλλά  δυστυχώς δεν είχα την ευκαιρία να το διαθέσω. Χρήμα να ανοίξω επιχείρηση δεν έχω, και απ' την άλλη το λυπάμαι να το δώσω τσάμπα, σκεπτόμενος ότι ξόδεψα 3 μήνες εργασίας σε αυτό, και δεν υπάρχει άλλη αντίστοιχη εφαρμογή που να κάνει το ίδιο πράγμα.

 

Δεν έκανα όμως αυτό το thread για αυτά, αλλά για κάτι άλλο. Εδώ και κάποιο καιρό ξεκίνησα να φτιάχνω ένα video game με τη Unity Engine, και τη C#, το οποίο είναι το πιο φιλόδοξό  και μεγαλύτερο μου project μέχρι τώρα. Έχω σκοπό όταν φτάσω σε ένα Α επίπεδο να το βάλω στο Steam Early Access, ή Indie GoGo για να πάρω χρήμα να το τελειώσω και να το κυκλοφορήσω.

 

Συμπεραίνω όμως το εξής: Αν και πλέον έχω φτάσει ένα επίπεδο να μπορώ να χρησιμοποιώ τη γλώσσα για να πετύχω αυτό που θέλω, ο κώδικας μου είναι σπαγγέτι! Μόνο 1 μήνα δουλεύω στο video game και ήδη αρκετές φορές τα νεύρα μου γίνονται τσατάλια. Σε φάση αλλάζω κάτι στο κώδικα που διαχειρίζεται το να μη μπορεί ο παίκτης να πάρει άλλο αντικείμενο αν το inventory του είναι full, και ξαφνικά το ηχητικό εφέ της επίθεσης του όπλου σταματά να παίζει!

 

Κάπως έτσι:

giphy.gif

 

 

Θα ήθελα αν μπορείτε να μου πείτε κάποιες συμβουλές ή να μου καταδείξετε κάποιο άρθρο, pdf, οτιδήποτε, που θα με βοηθήσει να οργανώσω καλύτερα το κώδικά μου. Να μην είναι απλά λειτουργικός, αλλά να έχει και ποιότητα.

 

Να πω την αλήθεια, τέτοιο πρόβλημα δεν αντιμετώπισα σε ότι έφτιαξα στο Visual Studio. Ίσως η αλλαγή από το να έχω πλήρες γραμμικό έλεγχο και events στο συνεχές polling μέσω της main loop και το scripting, να έφταιξε λίγο. Και σε ένα βαθμό πιστεύω φταίει και το ότι αν και ξέρω C#, τη Unity ακόμα τη μαθαίνω, και στην αρχή τις πρώτες 2 εβδομάδες ότι έκανα το έκανα ακολουθώντας tutorials στο youtube για να εξοικειωθώ με τη μηχανή και τις βιβλιοθήκες της, τα οποία συνήθως αν και σου δείχνουν πως να κάνεις 1 πράγμα, το δείχνουν απομονωμένο και μη λογαριάζοντας αρχιτεκτονικές κτλπ. Btw, μήπως έπρεπε πρώτα να φτιάξω άλλα μικρότερα projects στη Unity μέχρι να τη μάθω καλύτερα, πριν ξεκινήσω να δουλεύω σε αυτό που θέλω να φτιάξω ?

 

Είμαι σε σημείο να φοβάμαι να αλλάξω κάτι σε κάποιο script, μη πάει και χαλάσω κάτι κάπου αλλού, με το φαινόμενο της πεταλούδας.

  • Moderators
Δημοσ.

Να υπάρχει οδηγός που να λέει έτσι θα πρέπει να σχεδιάζετε το παιχνίδι είναι λίγο δύσκολο. Αυτό που μπορείς να κάνεις είναι αν έχεις αμφιβολίες για κάτι συγκεκριμένο να δεις πώς γίνεται αλλού (υπάρχουν άπειρα άρθρα/παρουσιάσεις που λέει κάποιος πώς έγινε το Χ πράγμα στο Υ παιχνίδι) και να κρίνεις τι απ' αυτά που διαβάζεις θα σε βοηθούσε ή να ζητήσεις βοήθεια γι' αυτό το συγκεκριμένο πράγμα. Η σχεδίαση γενικότερα, νομίζω, είναι πιο πολύ θέμα τριβής κι εμπειρίας παρά θέμα διαβάσματος (προφανώς χρειάζεται πολύ διάβασμα, αλλά το μεγάλο βήμα θα το κάνεις όταν το δοκιμάσεις μόνος σου και δεις τι δουλεύει ή δε δουλεύει). Γι' αυτό και σου είπα να δεις πώς γίνονται τα πράγματα αλλού, όχι για να πας να τα αντιγράψεις αλλά για να πάρεις ιδέες και να διευρύνεις τη σκέψη σου.

 

Μερικά μέρη που θα μπορούσες να κοιτάξεις:

GameDev, forum για ό,τι έχει σχέση με game development, από κώδικα και γραφικά μέχρι marketing.

Gamasutra, site με διάφορα άρθρα για game design/development

Το κανάλι του GDC, παρουσιάσεις από το Game Development Conference

 

Αν θες πάντως βάλε το project σου κάπου και θα προσπαθήσω να του ρίξω μια ματιά (ίσως σήμερα-αύριο και μετά από Τρίτη) και να σου πω κάποια πράγματα.

  • Like 1
Δημοσ.

Για το σπαγγέτι σου προτείνω να μην βάζεις ηλίθια 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 που θα είναι αδιάφορα στον 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 κινήσεις ο χαρακτήρας για να γλυτώσεις την πολυπλοκότητα στην υλοποίηση.

  • Like 2
  • Moderators
Δημοσ.

Συγνώμη αλλά αυτό δεν έχει καμία σχέση με την ποιότητα του software , οπότε θεωρώ λίγο άκυρη την προτασή σου .

Σαν να του λές ας κάνει μόνο 2 κινήσεις ο χαρακτήρας για να γλυτώσεις την πολυπλοκότητα στην υλοποίηση.

 

keep on feeding them

 

Ειλικρινά. Μιλάς σε άνθρωπο που δηλώνει προγραμματιστής και γράφει ότι οι κληρώσεις του τζόκερ είναι στημένες γιατί βγαίνουν πολύ συχνά νούμερα κάτω από 10.

Δημοσ.

Η ποιότητα του κώδικα πώς μετριέται ακριβώς? όσο πιό απλός είναι και όσο πιό δύσκολα προβλήματα λύνει είναι και πιό "έξυπνος" αρα πιό ποιοτικός? ή όσο πιο λίγη μνήμη χρησιμοποιείς τόσο πιό ποιοτικός είναι? 

Δημοσ.

Συγνώμη αλλά αυτό δεν έχει καμία σχέση με την ποιότητα του software , οπότε θεωρώ λίγο άκυρη την προτασή σου .

Σαν να του λές ας κάνει μόνο 2 κινήσεις ο χαρακτήρας για να γλυτώσεις την πολυπλοκότητα στην υλοποίηση.

 

Εγώ μιλάω για το σπαγγέτι και του λέω "όσα λιγότερα τόσο πιο καθαρό (άρα και ποιοτικό) κώδικα θα έχεις". Με αυτή τη λογική.

Δημοσ.

Η ποιότητα του κώδικα πώς μετριέται ακριβώς? όσο πιό απλός είναι και όσο πιό δύσκολα προβλήματα λύνει είναι και πιό "έξυπνος" αρα πιό ποιοτικός? ή όσο πιο λίγη μνήμη χρησιμοποιείς τόσο πιό ποιοτικός είναι? 

 

Μπορείς να θέλεις να ρίξεις μια ματιά στο Link.png Site: ISO25010 που αναφέρει τα standards για την ποιότητα του κώδικα

Δημοσ.

Η ποιότητα του κώδικα πώς μετριέται ακριβώς? όσο πιό απλός είναι και όσο πιό δύσκολα προβλήματα λύνει είναι και πιό "έξυπνος" αρα πιό ποιοτικός? ή όσο πιο λίγη μνήμη χρησιμοποιείς τόσο πιό ποιοτικός είναι? 

 

Όσο περισσότερα copy paste και όσο περισσότερο code duplication τόσο το καλύτερο :P

Δημοσ.

Να υπάρχει οδηγός που να λέει έτσι θα πρέπει να σχεδιάζετε το παιχνίδι είναι λίγο δύσκολο. Αυτό που μπορείς να κάνεις είναι αν έχεις αμφιβολίες για κάτι συγκεκριμένο να δεις πώς γίνεται αλλού (υπάρχουν άπειρα άρθρα/παρουσιάσεις που λέει κάποιος πώς έγινε το Χ πράγμα στο Υ παιχνίδι) και να κρίνεις τι απ' αυτά που διαβάζεις θα σε βοηθούσε ή να ζητήσεις βοήθεια γι' αυτό το συγκεκριμένο πράγμα. Η σχεδίαση γενικότερα, νομίζω, είναι πιο πολύ θέμα τριβής κι εμπειρίας παρά θέμα διαβάσματος (προφανώς χρειάζεται πολύ διάβασμα, αλλά το μεγάλο βήμα θα το κάνεις όταν το δοκιμάσεις μόνος σου και δεις τι δουλεύει ή δε δουλεύει). Γι' αυτό και σου είπα να δεις πώς γίνονται τα πράγματα αλλού, όχι για να πας να τα αντιγράψεις αλλά για να πάρεις ιδέες και να διευρύνεις τη σκέψη σου.

 

Μερικά μέρη που θα μπορούσες να κοιτάξεις:

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.

Δημοσ.

Unit testing

Dependency Injection

Inversion of Control

Interfaces

Abstract Classes

 

Για αρχή.

 

Μετά, με την εμπειρία, θα μάθεις πιό advanced τεχνικές και θα καταλαβαίνεις μόνος σου τι πρόβλημα μπορεί να προκύψει αργότερα.

Επίσης, κάνε μικρές μεθόδους, μη γράφεις μία ρουτίνα με 1000 γραμμές, μόνο προβλήματα θα σου προκαλεί.

 

https://msdn.microsoft.com/en-us/library/aa260844(v=vs.60).aspx

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...