Консультація для першокурсників CS [закритий]


17

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

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

Я бачу, що багато людей рекомендували XNA, оскільки вона добре абстрагує opengl та directX через свої API. Я також чую, що C # дуже схожий на Java.

Я також розглядав ігрове програмування на Java, оскільки мені це дуже зручно, і я займаюся додатковим читанням на багатопотокових та 2d графічних API.

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

Я не знаю, чи C ++ є гарною відправною точкою, багато публікацій, які я бачив для розробників ігор для початківців, не рекомендують це для першого ігрового проекту.

Буду вдячний за будь-який внесок, особливо з тих, хто потрапив у ігровий розробник із тла Java


5
C ++ важкий, чорт забирай, але в довгостроковій перспективі це простіше, якщо ви спробуєте обернути його навколо, перш ніж Java дійсно його встановить. Однозначно важче намагатись вивчити C ++ на фоні Java, ніж вивчити Java на фоні C ++. joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Девід Янг

1
Я б помер, намагаючись вивчити C ++ після початку Java, я почав зі старого стилю C ++, а потім вивчив Java. Якщо ви переживаєте про перехід на покажчики, рекомендую просто навчитися програмуванню на C та Unix. Це ставить вас у цілком новий спосіб мислення, тому ви рідше застосовуєте непридатні поняття Java.
michael.bartnett

Відповіді:


14

Є багато хороших варіантів. (Я вчу CS1 та CS2, а також ігрове програмування.) Спочатку, звичайно, навчитися думати, як комп'ютер. Не надто зав'язуйте мову, бо поняття справді універсальні.

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

Мені подобається движок FANG (на жаль, я ще не можу розміщувати гіперпосилання, тому шукайте це в Google.) Однією цікавою частиною цього проекту є онлайн-редактор. Це означає, що ви можете почати відразу, не возившись із налаштуваннями затемнення.

Я насправді не фанат Game Maker. GUI чудово підходить людям, які не хочуть навчитися програмувати, і це гідний (але не чудовий) інструмент для створення прототипів. Однак є дві речі в цьому, що мені не подобається. По-перше, це комерційно. Це не погано, але якщо є безкоштовні альтернативи з відкритим кодом, які так само хороші (і є), можливо, вам варто спочатку їх вивчити. Більшою проблемою для Game Maker є мова сценаріїв. Врешті-решт, ви збираєтесь перерости графічний інтерфейс, і вам захочеться фактично почати писати код. Мова сценарію в GM є досить зворотною думкою. Оскільки ви основна особа CS, ви (сподіваюся) зацікавлені у повторному використанні коду, елегантності, чіткості, ефективності та модульності. Мова GM Вас розчарує.

Я люблю Python та Pygame. (Насправді я написав книгу про них. Перегляньте всі мої замітки та онлайн-відео на моєму веб-сайті, якщо хочете. Ви можете вітати до цих ресурсів, чи є у вас книга, чи ні.) Python - це приємна елегантна мова, яка не є ' t занадто складно вивчити (особливо якщо ви вже вмієте програмувати.) Pygame - це обгортка популярного двигуна SDL 2D. Насправді я додав другу пігаму до піггему, щоб зробити її приблизно такою простою, як Flash.

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

Ось ще кілька чудових справ, які можна спробувати. Отримайте копію подряпини від MIT: scratch.mit.edu Це зроблено для дітей, але не дозволяйте це відкладати. Це абсолютно неймовірний інструмент для гри та анімації. У програмуванні використовується плитка, тому з неї легко почати роботу. Ви будете абсолютно вражені тим, що можете зробити з цим.

Ви також можете спробувати Alice від Carnegie Melon www.alice.org Останнє (третє) видання насправді є розширенням до Java, яке використовує Sims2 Моделі.

І Scratch, і Аліса безкоштовні.

Ще одним чудовим інструментом для пошуку є Blender www.blender.org

Це інструмент 3D-моделювання, але багато людей не знають, що це також повноцінна ігрова система з інтерфейсом програмування перетягування. Після того як ви переросли плитку, в неї вбудована підтримка Python.

Зараз мене дуже цікавить HTML5 (Що ледве не HTML - Це насправді HTML, CSS та JavaScript.) Це не зовсім так, як середовище розробки ігор, але я вважаю, що це буде великий гравець. Наступна моя книга про розробку гри в HTML5.

Пощастимо вам, і повідомте мене, якщо у вас виникнуть додаткові запитання.


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

Обробка покажчика не є універсальною = (проклинайте, що я виховую Java.
David Young

Мені хотілося б дізнатися, чому ви вважаєте, що побудувати гру на Java - нудно. Крім того, здається, ви вважаєте, що Python менш стомлюючий. З такою кількістю чудових фреймворків, орієнтованих на ігри Java та бібліотек там, здається, це дуже сміливо робити.
zfedoran

1
Для початківця-програміста все на Java може бути більш втомливим. Порівняйте щось на кшталт printf. У python це частина заяви про друк: надрукуйте "% s, ваш рахунок% d"% (студент, оцінка). У php, ви повинні кинути всі примітиви на класи обгортки, кинути їх на об'єкти та створити масив анонімних об'єктів. Мені подобається Java. (Я викладав це роками і писав про це книгу.) Однак, якщо мета - залучити когось до ігрового програмування, я хочу, щоб мова якомога більше виходила з шляху.
Два пі

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

5

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

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

Гайки і болти: XNA - хороший спосіб занурити пальці ніг на цю арену. Рамка робить для вас багато, але ви можете повільно замінювати кожну частину власним кодом, коли вам стає зручніше за допомогою C #. Навчання C # корисно для майбутніх позицій розвитку ігор, оскільки інструменти часто створюються за допомогою C #.

Ігрове програмування: Єдність - це хороший варіант. Безкоштовно та дозволяє кодувати кількома мовами, включаючи JavaScript та C #. Ви зможете швидко налагодити та працювати, що є приємним стимулом для мотивації. Крім того, ви можете перейти на іншу мову і навіть змішати мови, щоб допомогти вам розширити розуміння.

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


4

Завжди можна робити якісь ігри на базі Java, нічого поганого з цим (http://zetcode.com/tutorials/javagamestutorial/)

XNA і AS3 дуже близькі, і вони можуть створювати ігри настільки ж складними або простими, як бажано. (хоча це справедливо і для Java)

Одне, що потрібно пам’ятати, це завжди практика, а просто пограти з кодом.


3

Java Monkey Engine

Якщо вам найбільше комфортно з Java, ви можете використовувати Java Monkey Engine для рамок, які можна використовувати під час ігор. Він також має пристойну кількість документації / навчальних посібників, включаючи інструкції щодо інтеграції з Netbeans та Eclipse.


Треба сказати, що JMonkeyEngine виглядає добре. Я обов'язково це перевірю. Дякуємо за Ваш вклад
avatarX

2

Єдність

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

Інша класна річ, що стосується єдності, полягає в тому, що ви можете використовувати JavaScript як мову сценаріїв, а також можете публікувати свою гру в Windows, MacOS, Web, iPhone, а також з версією 3 на пристроях Android.

Крім того, вони використовують механізм StackExchange для відповідей Unity, і вони мають прекрасне співтовариство для всіх питань, пов'язаних з вашим Unity.


1

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

C # дуже близький до Java (я іноді жартую, що це обмежена платформа Java з кращими бібліотеками), тому XNA може бути хорошим вибором. Minecraft розробляється на Java за допомогою бібліотеки ігор lwjgl, тому, якщо ви хочете дотримуватися Java, це хороший метод. Звичайно, 3D-розробка є дещо складною; залежно від ваших знань, досвіду та наполегливості, ви можете зачекати на 3D (або навіть 2D в системі, заснованій на 3D), поки ви не отримаєте більше освіти під поясом.

Для 2D рішень: Game Maker дуже простий і використовувався для створення чудових ігор. Ви повинні мати можливість досить легко підібрати його мову сценаріїв, але це може бути занадто просто для того, хто має рік роботи з Java. Я розвиваюсь у Flash, використовуючи чистий AS3 ( підручник ), який досить близький до Java для ваших навичок, щоб легко перекладати.


1

Я настійно рекомендую перейти з XNA. Це досить здібна та добре підтримувана платформа із зростаючою спільнотою. XNA дійсно починає знаходити своє "місце" в екосистемі, коли рамки здійснюються на більш ніж будь-яких платформах (включаючи Windows Phone 7). Що ще важливіше, однак використання XNA змусить вас вивчити C # та загальну розробку .NET. Було б радимо вам набути досвіду роботи з цією платформою незалежно від того, чи вирішили ви займатися розробкою ігор, оскільки розробка .NET зростає і має дуже здоровий ринок роботи. З іншого боку, Java вже деякий час повільно вмирає, і останні події слугували лише прискоренню її загибелі. Якщо ваша програма CS, як та, яку я завершила, сильно орієнтована на Java, то вона буде корисною для того, щоб ви самостійно вивчали C # /. NET.

Навіть якщо Java продовжує працювати, і ви вирішите продовжувати кар’єру в розробці Java, вам, швидше за все, доведеться інтегруватися з системами .NET. Отже, як би все не вийшло, досвід лише допоможе вам у довгостроковій перспективі.


дійсно.com/jobtrends? q= java & l= і дійсно.com/ jobtrends? q= .net & l= є досить представником попиту на обидва ринку. Схоже на те, що Java є реально зростаючою.
Девід Янг

Я не вважав приплив розвитку Java, спричинений успіхом платформи Android. Це, мабуть, має багато спільного з стрибком у відкритих робочих місцях у кінці 2008 року та на початку 2009 року. Буде цікаво побачити, як WP7 та наявність MonoTouch для iOS та MonoDroid для Android впливають на присутність Java в мобільних мережах.
Майк Стробель

1

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


1

Можливо, вам також сподобається використання http://Processing.org . Це прекрасне середовище для вивчення графічного програмування. Хоча це не строго ігровий інструмент, він може запропонувати багато. Це мова - це розширення / спрощення Java, і її можна буде швидко вивчити.


0

Поради, які не стосуються програмування:

Створіть акуратний проект і покажіть його своїм професорам.

Ось так я отримав літню роботу програміста після першого та другого курсу в школі.


Це може бути корисним, але це не дуже вирішує мовний / API кризис, з яким стикається ОП.
Качка комуністична

0

Якщо ви просто шукаєте розробки ігор, навіщо одночасно вивчати іншу мову? Я б дотримувався Java, якщо ви не хочете вивчити нову мову.

Основні варіанти Java, про які я знаю, - це jMonkeyEngine, який є 3D графічним двигуном і, як правило, вважається досить непоганим.

І є jOGL, який є обгорткою Java над OpenGL. Це, природно, значно нижчий рівень.

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

Якщо ви хочете вивчити нову мову, з C # та Python, я б, мабуть, сказав C #. Синтаксис дуже схожий на Java, а XNA і SlimDX дуже хороші для графіки. XNA вищого рівня і зробила деякі речі для вас. Однак це стосується лише обмеження для Windows, без Mono.

Python - це дуже проста мова (можна було взяти мене приблизно тиждень на максимум, при цьому мало уваги від книги, що виходить з року C ++). Pygame - це обгортка навколо бібліотек SDL від C, тому, ймовірно, не має такої ж кількості функціональності, як XNA.


0

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

Двигун Unity дозволить вам абстрагувати більшу частину деталей, щоб ви могли зосередитись на ігровому програмуванні. Неймовірно корисні спільноти на форумах та відповіді на об'єднання, що базуються на стеках . Ви можете програмувати в Javascript або C #. Починаючи з Java, я почав з Javascript, тому що для цього було написано багато підручників, але перейшов на C # (що було досить простим перемикачем).

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

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

Веселіться!


0

XNA - це чудове рішення, якщо ви їдете з Java. C # буде виглядати і читати майже ІДЕНТИЧНО java для вас, так що ви зможете стрибати дуже швидко, не вивчаючи нового синтаксису. Рамка XNA пропонує безліч хороших API, з якими можна працювати, і є безліч безкоштовних відкритих кодів «ліцензії на мікрософт», щоб розпочати роботу над деякими проектами.

Я б не рекомендував вам використовувати Java, більшість графічних інтерфейсів API жахливі, немає тонни 3d підтримки, і взагалі Java просто працює повільно; для більшості програм Java не велика справа, але відеоігри потребують ЛОТІВ продуктивності.

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

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

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

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

Майже все, що ви можете собі уявити, що було б весело, зараз, мабуть, занадто амбітний.

Моя порада: отримайте безкоштовну візуальну студію 2010 Express, якщо у вас її немає. Завантажте ігрову студію XNA та .net Framework 4. Завантажте демонстрацію XNA. Запустіть демонстрацію, потім перегляньте код і подивіться, що робити. Спробуйте прочитати деяку документацію про те, як XNA робить 2D ігри.

ТОГО, виберіть свою улюблену, стару школу, супер просту гру. Pac-man? Понг? Астероїди? Космічні загарбники? Маріо? Виберіть щось STUPID, STUPID легко. Тоді просто переробляйте гру саме такою, якою вона була. Вам достатньо турбуватися з програмуванням та вивченням нового API, який НЕ потрібно турбувати з ігровим дизайном; це просто відверне вас.

Потім, після того, як у вас буде клон Маріо, або все, що ви зробили, ви можете почати експериментувати з геймплеєм і спробувати додати нові речі.

Почніть маленькі, дитячі кроки, і це буде набагато веселіше, і ви дізнаєтесь багато іншого.

Спробуйте перейти на зміну вихідного коду Quake3 в C ++, щоб зробити гру, і ви зіб’єтеся дуже розчаровані, і навіть якщо ви змусите це працювати, ви не збираєтесь багато вчитися цьому робити.

ПОВИННО ВІДБУДАТИ: D


0

Спалах

AS3 Flash - це фантастична мова для обгортання важливих концепцій OOP, не турбуючись про управління пам'яттю та написання файлів заголовків. Це також повноцінний 2D-ігровий двигун, із деревом дисплеїв, системою подій та всіма іншими зручними функціями.

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

Я б стверджував, що Flash - це навіть більш зручна платформа, ніж Java або справді будь-яка інша технологія, крім, можливо, Unity. 99% людей можуть переглядати Flash-матеріали у своєму браузері на робочому столі, тому легко поділитися своїми творами з усім світом. Більшість смартфонів повільно отримують підтримку Flash, а для iOS - єдиної платформи, яка не підтримує Flash в браузері, ви можете створювати додатки за допомогою Flash CS5 (хоча це і має вартість).

Я думаю, що вам буде соромно боротися з чимось складнішим, як C ++ або навіть C #, коли ви можете почати вивчати основи створення ігор прямо зараз з AS3. Як тільки ви зрозумієте AS3, пізніше можна буде легко перейти на інші мови. У власному випадку я був розробником Flash, але навчився програмувати за допомогою Objective-C і встиг зробити хіт-гру на iPhone. Зробіть собі послугу і відвідайте http://www.flashgamedojo.com/ - Я не думаю, що ви будете розчаровані!

Єдність

Unity має багато тих же переваг Flash, але в 3D.

За допомогою Unity ви можете програмувати на C # або UnityScript (що є JavaScript-y). Це не з відкритим кодом, але це безкоштовно. Це дуже добре підтримується і є чудова спільнота. Проблема при розробці 3D-ігор полягає в тому, що для більшості ігор вам знадобиться багато мистецтва та засобів. Це також може бути проблемою з 2D іграми, але, як правило, 3D-мистецтво займає набагато більше часу, і зробити «мистецтво програміста» набагато складніше.

Примітка про відкритий код

Немає нічого поганого у використанні програмного забезпечення з відкритим кодом, але ви обмежуєте себе, якщо використовуєте його лише тому, що це відкритий код. Виберіть найкращу мову та інструменти, які допоможуть вам дізнатися найшвидше з найменшим тертям. З тієї ж лінії, менталітет "спочатку дізнайся найважче" (тобто С ++) божевільний. Те, що ви насправді повинні вчитися, - це логіка, а не синтаксис, тому вивчіть, якою мовою є найменше багажу та перешкод для входу. На мою думку, це AS3.

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