Чи розвиваючі ігри найкращий спосіб вивчити програмування? [зачинено]


21

Нещодавно я почув інструктора ментінона, що розробка ігор - найкращий спосіб навчитися програмуванню. Окрім того, що все потрібно було створити в коді, він сказав, що ви дійсно маєте повний досвід та впровадження OOP у свої програми. Іншими словами, все, що ви робите в грі, є буквальним об'єктом як технічно, так і концептуально. Чи безпечно зробити це припущення? Або завжди є винятки при вивченні програмування?

Зауважте, він орієнтований на розробку .net / xna / c #.


3
"факт, що все потрібно було створити в коді". Що з 3D-моделями, текстурами, звуками та іншими ресурсами? Ви можете створити ігровий двигун без них, але повноцінна гра з дуже невеликими ресурсами, навіть якщо не неможлива, буде досить складною задачею.
POSIX_ME_HARDER

@ Чешир: Ну, ви можете запрограмувати такі речі, як «Обробка». Я не кажу, що це дуже практично.
Анто

2
@ Чешир: Так, деякі люди приймають це завдання дуже безпосередньо, створюючи все процедурно. Не надто часто зустрічається в комерційних іграх (наскільки я знаю), але популярний лише для того, щоб довести, що це можна зробити, і я бачив кілька таких вражаючих демонстрацій.
FrustratedWithFormsDesigner

6
Я припускаю, що це питання означає «розвиток ігор», а не «ігри в ігри», коли питаєте про ігри? Неможливо перейти на інтелектуальний стрибок з Call of Duty на C ++ ...
HorusKol

1
Якщо ви хочете, щоб гра була граючою, то ви цілком можете виявити, що вам потрібно скомпрометувати чистий дизайн OO на користь швидкості.
Пітер Тейлор

Відповіді:


25

Розробка ігор - це одна з найскладніших розробок, на мою думку. Давайте розглянемо всі концепції, які повинна знати одна людина, яка створює шутер від першої особи:

  • Графіка
    • 3d обчислення
    • Оптимізація швидкості
    • Взаємодія з графічним обладнанням
  • Гра
    • Структури даних
    • Формати файлів для збереження
    • Загальний дизайн, інакше ви створите безлад, до якого неможливо додати функції
    • Знання мережі, якщо гра багатокористувацька
  • Алгоритми AI
    • Шлях пошуку
    • Бойові бої
  • Видавництво
    • Знання ОС, наприклад, як працюють інсталятори
    • Можливо, веб-розробка для отримання слова

Розумієте, одна гра може охопити багато областей одночасно. Це робить його відмінним інструментом для навчання, якщо ви готові витратити час і зробити це добре.

Що стосується ООП, то це одна модель, яка добре працює. Ви можете використовувати гру як інструмент навчання, щоб практикувати хороші методи дизайну.

Однак, щоб відповісти на ваше запитання, це не єдиний спосіб навчитися програмуванню. Як тільки ви станете проміжним розробником, створення гри дозволить вам торкнутися безлічі понять і рівнів програмування. Крім того, це весело!


12
Ви забули одне, історію для цієї гри, а іноді - це все, що має значення.
Махмуд Хоссам

Це передбачає, що це 3D-гра.
Адам Харте

1
@Adam: Це так, але 2d теж має свої розрахунки. Зараз я навмисно виключаю тестові RPG;)
Майкл К

1
@Mohmoud НІКОЛИ "все, що має значення". Це настільки ж велика помилка, як і погана / відсутня історія. Є багато аспектів, які входять у створення гарної гри. Я не хочу грати в нудну гру, незалежно від того, наскільки велика історія. Також найбільш успішні головоломки не мають історії.
Адам Харте

Теорія ігор також зручна.
VirtuosiMedia

46

Не бути тавтологічним, але програмування - найкращий спосіб навчитися програмуванню. Якщо вас цікавлять комп'ютерні ігри, то ігри з програмуванням можуть стати прекрасним способом навчитися програмуванню.

Я не дбаю про ігри, але я люблю математику, тому багато моїх навчальних проектів були дуже математичними.

Суть полягає в тому, що вам потрібно знайти способи вирішення проблем з кодом, а ігри працюють для багатьох людей.


це те, що я думав спочатку. Але вважайте своїм абсолютно новим у програмуванні. Ігри здаються відмінним інструментом для вивчення багатьох різних понять. Майкл перераховує деякі з них. Якщо чесно, я хотів би, щоб я навчився спочатку OOP з ігрової точки зору. Але це могло бути пов’язане з тим, що це було недостатньо пояснено, або що розробка бізнес-додатків ускладнює розуміння концепції. Однозначно цікаво спостерігати за обома аргументами.
Едвард

@penguin, як би грати Call of Duty або Halflife навчила вас програмуванню?
jwenting

13

Це спосіб навчитися програмувати, поряд з іншими способами. Коли ви пишете код, ви дізнаєтесь речі. Тепер це найкращий спосіб? Не так точно.

Принаймні, дві причини, наведені вашим учителем, не є дійсними .

  • "все потрібно було створити в коді" : коли ви пишете діловий додаток, ви фактично пишете код. Це не буде написано магією. Так, є помічники, які дозволяють використовувати автоматично згенерований код. Ні, використовувати їх не обов'язково. До речі, автогенеровані деталі, як правило, найбільше дратують програмування (не додаючи елементи керування в Windows Forms, ви дізнаєтесь щось цікаве та корисне).

  • "Ви дійсно отримуєте повний досвід і впроваджуєте OOP у свої програми" : хтось повинен мені пояснити, чому це справедливо лише для ігор, але недійсно для будь-якого іншого. Якщо ви розумієте OOP і хочете використовувати його, ви можете використовувати його і в бізнес-програмах. Якщо ви цього не отримаєте або не хочете користуватися ним (і віддаєте перевагу, наприклад, використовувати функціональне програмування), розвиток ігор не змусить вас змінитися.

Але:

Розробка ігор може бути цікавою . Більшість молодих людей люблять ігри, тому їм більше подобається розвивати гру, а не писати діловий додаток, що для більшості з них буде вкрай нудно. Побачивши це, вчителі можуть почати вірити, що насправді ігри - це найкращий спосіб вивчити програмування, і тоді вони спробують знайти логічне пояснення цьому.

Це, як кажуть, ці вчителі закінчуються тим, що роблять розробки ігор настільки нудними для молоді, як і розвиток ділових додатків. Якщо вони вважають, що ігри потрібно робити для того, щоб навчитися OOP тощо, тоді вони попросять своїх учнів робити ті проекти, які зовсім не приємні. Це була одна з найбільших помилок моїх викладачів, коли я навчався в коледжі. Вони дуже часто давали нам ігрові проекти писати в Ада в консольному режимі. Ніякої графіки. Не смішно. Немає користувачів. За все життя і свою кар’єру я ніколи не бачив проектів настільки нудними.


4
Ігри добре працювати з ООП , тому що це дуже легко побачити , як кожен BadGuy, Weapon, PowerUp, та інші предмети в грі можуть легко бути об'єктом. Ви можете програмувати взаємодію між об'єктами та бачити їх на екрані. Я думаю, що візуальна частина - це те, що робить його таким привабливим. Бізнес - додатки , які мають ієрархій типові ServerTaskScheduler, AbstractDataProcessor, UserQueryAgentі т.д. ... не так захоплююче , незважаючи на те, що вони можуть навчити ті ж концепції об'єктно - орієнтованого програмування , як і в іграх.
FrustratedWithFormsDesigner

4
@FrustratedWithFormsDesigner: можливо, я просто не розумію цього, тому що витратив занадто багато часу на розробку бізнес-додатків, але не розумію, чому було б складніше зрозуміти, як Customerі Productчи Transactionможуть бути об’єкти. Але я розумію, що набагато приємніше мати справу з BadGuys, ніж нудно Transaction.
Арсеній Муренко

Це більше стосується рівня абстрактного мислення. Деякі програмісти сильно зависають від імен, тому що вони не мають уявлення, з чим це стосуватися. Наприклад, я зустрів деяких чортів, які не мають уявлення, що це Transactionозначає.
Спойк

7

Ігрове програмування - найкращий спосіб навчитися програмуванню ігор. Якщо ви хочете навчитися розробці веб-сторінок, зробіть це, якщо ви хочете навчитися програмуванню систем, зробіть це тощо.

Ігрове програмування є складним завданням, і воно, швидше за все, навчить вас багато всього (Майкл зазначив багатьох у своїй відповіді, і багато з них дуже складні та корисні і поза іграми). Створення RPG або магнату (або подібної гри) навчить вас багато про дизайн OOP, оскільки вони дуже добре піддаються цій парадигмі. Ви також зможете дізнатися багато про міркування щодо продуктивності, деякі хардкор-математики для ігор тощо, залежно від складності вашої графіки та фізики.

Це хороший спосіб і найкращий спосіб дізнатися деякі речі, але це не чудовий спосіб вивчити програмування. Незалежно від того, скільки ігор ви запрограмували, все ж, ймовірно, ви не матимете уявлення про те, як зробити операційну систему. Я думаю, що більшість розробників все-таки можуть щось заробити, розвиваючи гру, навіть якщо вони не роблять це як свою основну дисципліну програмування, доки у них є час.


7

Питання: Який найкращий метод навчитися програмуванню

Відповідь: метод, який ви насправді використовуєте

Тобто, коли ви навчаєтесь чи робите щось, то не так важливо, який метод ви вибираєте так довго, це метод, який ви насправді переживаєте.

Якщо ігри - це щось, що здається вам дуже цікавим, продовжуйте це робити. Якщо вам здається, що розв’язування математичних задач є більш задоволеним, почніть з цього. Існує багато різних видів програмування, і для кожного потрібні різні навички, тому хороша ставка - починати з того, що вам здається найцікавішим, імовірно, з того, з яким ви будете працювати.

... Але так, ігри - це хороший спосіб вивчити досить широкий спектр програмування, оскільки він включає математику, паралельність, алгоритми, oop, графіку тощо тощо


4

Якщо вам подобається грати, то написання ігор буде хорошим способом вступити в розвиток, але я б не сказав, що це найкращий спосіб. Я вважаю, що найкращий спосіб - це курс із ступеня CS, а потім робота з програмним будинком, який інвестуватиме в навчання та наставництво молодшого персоналу.

Окрім цього, напевно, досить помпезної відповіді, так, розвиток ігор навчить вас багатьом хорошим навичкам, я думаю, і якщо ви насолоджуєтесь комп’ютерними іграми, це зацікавить вас процесом розвитку. Це повинно бути цікавіше багатьох інших простих додатків, які ви бачите в книгах.


2

Я б сказав, що найкращий спосіб навчитися кодувати - це зробити його цікавим для вас. Це не повинна бути справжньою грою, а якоюсь грою для вас. Для мене це гра для вирішення деяких математичних задач, що розробляють алгоритми таким чином, щоб я міг вирішити складну проблему найшвидшим способом. Будьте складними для себе, я стаю кращим кодером при кожній спробі вирішити проблему. Чим важче проблема, тим краще.

Щодо вивчення кодексу (найкращих практик), я б сказав, що вам доведеться зіткнутися з більшими проблемами. Виклики вимагають набагато більше одного входу / виходу


2

Я ніколи не чув про твердження, що гра в Halflife або Call of Duty вчить вас навичкам програмування.

Програмування їх може, але програмувати щось подібне - це не те, що починає навіть спробувати. І особливо для початківців часто виникає враження, що вони можуть створити наступний блокбастер зі своїми неіснуючими знаннями з програмування. Скажіть їм спробувати зробити клон PacMan або Tetris спочатку, і вони кричать, що це не те, що вони хочуть робити, і що ви повинні "дати мені зух кодуз".


1

Не дуже. Існує не кращий тип проекту навчитися програмуванню на. Найкращий тип проекту - це той, який відповідає вашим інтересам.

Наприклад, я спробував навчитися програмуванню пару різних способів, включаючи навчання програмуванню ігор. Це ніколи ніколи не здавалося.

Тоді, коли мені потрібно було навчитися програмувати те, що я робив у своєму дослідженні? Зараз мені достатньо комфортно сказати, що я знаю 2 мови, і працюю над третьою. Чому? Бо це стосувалося моїх інтересів. У мене була причина дотримуватися цього, причина вчитися та більше проблем спробувати, ніж просто "Вправа 8" у книзі.

Це, до речі, не означає, що програмування епідемічних моделей є найкращим способом навчитися програмуванню. Але це був найкращий спосіб для мене. Знайдіть своє. Це можуть бути ігри, але це може бути дуже ні.


+1 для "найкращий тип проекту - це той, що відповідає вашим інтересам". Амінь.
Брайан Оуклі

0

На моєму власному досвіді, написавши гру (припускаючи, що ви робите це власною / невеликою командою розробників), ви змушені не тільки думати про алгоритмічну / аналітичну частину програмування, але й про досвід користувача та дизайн.

На додаток до цього, якщо це досить складна гра, ви будете над цим працювати протягом декількох місяців, і ви зрозумієте важливість документування всього, що ви робите - що згодом зробить вас кращим членом команди.


... але якщо ви пишете будь- яку програму, яка взаємодіє з користувачем, ви не змушені думати про досвід та дизайн користувача? Ви хочете сказати, що з традиційною клієнтською програмою вам не потрібно думати про ці речі, але ігор змушує вас це робити? І чи не можуть великі настільні програми також охоплювати кілька місяців і вимагати від вас зробити документацію? Як все з цього стосується ігрових, але не інших видів програмування?
Брайан Оуклі

0

Я думаю, що це чудова стаття, яка дає зрозуміти про розвиток ігор.

У ньому йдеться про деякі основні сфери, на яких слід зосередити увагу

  1. Пристрасть до розвитку ігор.
  2. Навчальне ставлення.
  3. Важливо насолоджуватися грою в ігри.
  4. Важливість ваших навичок програмування.

0

Я погодився б, окрім ...

Це так само ймовірно, що перший досвід програмування, який багато хто коли-небудь мав, був створення та програмування робота Lego (Mindstorms).

У той час як загальний термін "гра" може визначити категорію, настільки величезну, що охоплює майже все програмування, при використанні в контексті оригінального плаката завжди здається, що це означає "написання ігор у стилі Doom".

Як було сказано тут раніше - найкращий спосіб навчитися програмуванню - мати те, чого ви дійсно хочете, що вимагає програми. Тобто - вивчіть програмування, написавши потрібну програму.

Однією з моїх перших програм Windows була програма MIDI-контролера, тому що я дуже хотів програму контролера MIDI, і Windows здавалася ідеальною (повзунки, кнопки, підтримка SDK для MIDI тощо). Я дізнався багато про програмування Windows (це було ще в програмі Win 3.1 днів) з цієї програми.

Я ніколи не був частковим до ігрового програмування з причин, згаданих тут - я не малюю все так добре, тому будь-яка гра, яку я роблю, матиме біднішу графіку, ніж графіка художника. Я хочу навчитися програмувати, а не керувати "командою зі створення ігор" (похвальна, але зовсім інша вправа).

Зрештою, я зовсім не згоден із твердженням вчителя. Найкращий спосіб навчитися програмуванню - це написати програму, яку ви дійсно хочете.

-R

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.