Этих тем довольно так-и много, однако.. я имею не малый опыт с работой с начинающими программистами по разработкам : читов, игр, софта, вирусов. Из них, 3 вещи убитые и они мне не нравятся. Если вы увидите "начинающего", который несет полную чушь, смело пишите "иди в баню". Некоторые говорят, что мол, для разработки игр нужны не мыслимые знания и терпение.. отвечу - нет. Это ложь, тут не хватает многого . Для ААА-класса игр, нужно : большая компания/команда с соотв. образованием (левел-дизайнер,дизайнер моделей, аниматоры, звукооператоры и т.д) Для соло - инди - мини - игры, достаточно одного человека с : терпением, небольшим знанием, влечением в своей идее , серьезность, немного лени, уметь читать справку, моделить/тырить модельки, проворность(относится к предыдущему условию), фантазия. К чему вся эта философия. "Новичок", который берется за игрострой, даже не понимает какой он гемор себе намечает. Мне хватило пол года, чтобы оптимизировать мои контроллеры, physics, AI(frendly|enemy), кат-сцен и прочих мелочей. Еще пол года я работал над оптимизацией графики. Как говорили много людей <<seeman,ogasoda и т.д>> , выдавить из юнити можно хорошую графику, лишь бы руки росли не из ... .
Теперь к ведению в синтаксис C#; -------------------------------------- Многим покажется js проще и удобнее.. ..т.к там автоматическое определение переменных, легкий синтаксис и т.д. По мне, C#; С,С++,C# и прочие C-и языки всегда были более математичнее, или же чем pascal,delphi,vbnet; Делфи, это словно блокнот, в котором нужно писать лишь по-английский. С - это же уже калькулятор, приказывающий сложным синтаксисом работать компьютер на нас. Да, программируя, мы не заставляем что-то делать игру, мы заставляем делать действия компьютер. Мы его хозяева и мы приказываем ему показать сообщение. Это ваш раб, ваш слуга. Лишь нужно научится разговаривать с ним. Синтаксис C# не такой гибкий , как С++. Он проще и удобнее(хотя, каждому свое) Что вообще в принципе нужно для игростроя. Знание условий и циклов.
Code
if(условие){действие}else{действие}
Code
switch(переменная){ case 0: ...; break; case 1: ...; break; }
Code
while (условие) { действие; }
Полезные операторы, облегчающие многие задачи и строки.
Code
!= == = || ++ -- && ?
начнем с циклов и условий.
условие (if) Представим, что это наш спор с компьютером. Вы два приятеля и вы забили, что n-ое число равно 3, а компьютер убеждает , что n-ое число равно 1. как я уже говорил if(условие){действие} if(с англ. если) "{" - этим знаком мы открываем блок, в котором пишем действие . Это своего рода хлеб на который мы намазали масло. Хлеб без блока/масла уже не бутерброд. Намажем масла ({ ... }) , будет бутерброд. Для примера, я напишу на русском код, потом уже переведу на C#; если(n-ое число равно 3) выдаем сообщения с победой хозяина закрываем блок или же выдаем сообщение с победой компьютера/ПК это выглядит так : if(n==3) printf("WIN IS MAN") else printf("WIN IS PC"); почему я не открыл блоки, о которых я столько твердил. если дейсвтий <=1 , то можно сделать в одну строчку не открывая блок, а если действий больше чем одно, то блок должен быть открыт обязательно. Если вы не откроете блок, вам выдаст либо ошибку, что ПК вас не понимает(это вроде, как вы не понимаете безграмотный англ., арабский., китайский, татарский, др. греческий.) составим код с действием более одного. если(n-ое число равно 3) тогда открываем блок выдаем сообщение с победой хозяина; выдаем сообщение с поздравлением; закрываем блок или же открываем блок выдаем сообщение с победой ПК; выдаем сообщение с поздравлением; закрываем блок ";" - этот знак должен присутствовать в каждом действие по мере его завершения.(есть искл.) пример :
if(n==3){ printf("WIN IS MAN"); printf("gracio"); } else { printf("WIN IS PC"); printf("gracio me :D"); }
таким образом, наш код вырос более чем. Заключение в условие "if" Это условие вы будете использовать часто и геморойно. Понятно должно быть все в чистом виде. если(условие)действие. Таким образом мы в игре ставим много проверок. Если(Объект по координатам ...) тогда продолжаем игру или же перезагружаем уровень. Почему я пишу на русском? Потому что, вы должны читать код, не на англ. не цифрами, а просто по-русский, словно книгу(роман, фантастику) - это уже что вы придумайте :D
цикл switch(case) цикл switch case довольно туманное цикл. Я пользуюсь им редко, но пользуюсь. Этот цикл, если по-русский сказать, то это множественный if - условие. switch(перемеенная, например n(int)) - таким образом, мы проверяем эту переменную на случаи. Как например, всем в школе говорили про яблоки и куски пирога, так вот. switch(n){ - это мы проверяем пирог. Куски - это случаи.
Code
case 1: (случай 1) действие; break;(сброс/как бы освобождаем)
чтобы он не пытался выполнять каждый убогий раз. пример.
Code
int n = 1; case(n){ case 1: n++;break;// добавляем, чтобы сработал случай 2 case 2: n++;break;// добавляем, чтобы сработал случай 3 case 3: n=1;break;// добавляем, чтобы сработал случай 1 }
n++ ( это полезный оператор, он плюсует нашу переменную на саму себя. Т.е , например в делфи, пришлось бы писать n:=n+1; так вот это действие мы заменяем простым оператором - n++; добавляем кусок пирога. в принципе, этот цикл предназначен для сжатие кода в объеме. Я все равно юзаю if, case мне так сказать, не логичен. не удобен и противен. И я не могу его объяснить внятно. Синоним --
while(x) - этот цикл вам не понадобится, зря я его вписал. Этот цикл смело заменяет таймер проца. Однако перенагружать проц. просто не логично. О чем я? Сейчас расскажу. Таймеры, очень важная часть в игре. Таймеры бывают для полета камеры для попадание бита под музыку, либо вход в триггер и для смута действие-тормоз. я его так называю Т.е компьютер делает действие через опр. время, как например slowmo(замедление) в кат-сценах. Хотя там нужно учитывать, потому что мы там время замедлили и таймер само собой работает медленее. Это не означает, что вы сломали свой компьютер замедлением. Просто вы замедлили ВСЕ, включая таймер(только касательно игры) Как делается таймер:
Code
float n=3;
Code
void UpDate(){ if(n>0)если n больше нуля {n-=Time.deltaTime;} то вычитаем из переменной время.
// вот собстна функция таймера, если в n-ом числе , число больше нуля. Значит минусуем нашу переменную. (n-= - вы скажете, почему например не n--; да потому что он будет минусовать так быстро, что вы не успеете сказать слово : << слово >>; А тут, мы вычитает из нашей переменной время. Время Time.deltaTime; Но тут не задача, он же будет и -1,-2,-3; Это поправимо
Code
if(n<=0){n=0;}
вот такой просто код n<=0 (меньше либо равно нулю) } void UpDate() - это БЛОК/функция/процедура , называйте как хотите, потому что вы будете называть все разными вещами. Нет одинаковых программистов, у них есть своя логика к операторам/функциям/переменным. Этот блок UpDate() - он обновляется в режиме 1фрейм. Очень быстро, но есть и быстрее ( void LateUpDate() ) Это наверное замена __fastcall void UpDate(). Но, введение в скрипты Unity3d уже есть на форуме, почитайте там :)
В остальном, вам вполне поможет справка. Очень важная часть разработки - справка. без справки, не было бы столько программистов просто из-за лени учить учебники ;]
!= - не равно пример :
Code
if(n!=1)printf("n <> 1");
== - какое-то условие, равно переменной пример :
Code
if(n==3)printf("n == 3");
<= - меньше, либо равно пример:
Code
if(n<=3)printf("n <= 3");
>= - больше или равно пример :
Code
if(n>=3)printf("n >= 3");
&& - и , как в предложениях. Я и он пошли морозить ж.. пример :
Code
if(n>=3&&s<=3)printf("n >= 3 и s <= 3");
|| - или , как в предложениях. Я или он украли президентскую вип карту стрип-клуба <<Москва, хорошое настроение, большие с..>> пример
Code
if(n>=3|| n==0)printf("n >= 3 || n == 0");
Добра, если что забыл дополню. P.s справка - учение. P.S.s справка, читай эту вещь!!1 С банальным тутором, был йа.
Сообщение отредактировал thiefbrother - Пт, 07 Дек 2012, 18:41
Читать невозможно. Форматирования нет. Предложения начинаются с маленьких букв. Совершенно непонятно где заканчивается одна мысль, где начинается другая. Ну а идея нормальная. Хотя по опыту - в основном начинающие не понимают не то, что тут написано, а понятия класс, наследование, полиморфизм, инкапсуляция, агрегация... Названия пугающие, но если нормально уяснить их, то жить станет намного легче.
удар ниже пояса. С разжевыванием на "пальцах" в вашем примере согласен. Пытаюсь донести такое же пособие . Перепишу топик когда я "победю" свою лень P.S вот такие мануалы, подобно вашему хотелось бы видеть в инетрнете. А не учебный план, где автор пишет то, что хрен кто вникнет . Хотя, все учатся по разному. Но автор должен донести не только до нескольких особей, но до всех. Объясняя на "пальцах"