User:Konstantin dev/sandbox

Графични API-та
В днешно време графиката е ключово определящ фактор за повечето игри. Докато до средата на 90-те години 2D графиката е била стандарт при видео игрите, повечето игри в момента използват изцяло 3D компютърна графика. Като това се отнася и за игри, чиито корени са залегнали до голяма степен в 2D, като например "Civilization III".

При видео игрите за настолни компютри, разработчиците разработват продукта си главно за Microsoft Windows, тъй като той е инсталиран на около 90% процента от продадените настолни компютри и има изключително голяма потребителска база. Двете най-известни 3D графични API-та за Microsoft Windows са Direct3D и OpenGL. Предимствата и недостатъците на всяко едно от тях са горещо дискутирани измежду разработчиците на видео игри за Windows.

DirectX е колекция от API-та за видео игри. Direct3D е API за DirectX. Direct3D се разпространява безплатно от Microsoft, както и останалите API-та за DirectX. Microsoft са разработили DirectX за програмистите на видео игри и продължават да добавят разширения към API-то. Спецификацията на DirectX не е контролирана от отворена арбитражна комисия и Microsoft са свободни да добавят, премахват или променят разширенията към DirectX. Direct3D не е портативен; Той е предназначен изцяло и само единствено за Microsoft Windows (въпреки, че подобия на Direct3D се използват на Xbox, мобилните устройства с Windows Phone 7.5 и мобилни устройства, които използват Pocket PC операционна система).

OpenGL е портативна API спецификация. Кодът написан с OpenGL се "портва" лесно между платформите със съвместима имплементация. На пример Quake II, който използва OpenGL е бил "портнат" от Windows към Linux от фен на играта. OpenGL е стандарт установен от Съвета за рецензия на архитектурата на OpenGL - OpenGL Architecture Review Board (ARB). ARB се свиква переодично, за да обнови стандарта чрез добавяне на наложаща поддръжка за характеристиките на новоизлезлите 3D хардуери. Вземайки на предвид това, че е базирано на стандарт и се е задържало най-дълго, OpenGL се използва и изучава в колежи и университети в целия свят. В допълнение, инструментите за разработка предоставени от производителите на някои конзоли за видео игри(Nintendo Game Cube, Nintendo DS и PSP) използват гравични API-та, които наподобяват OpenGL. OpenGL често изостава откъм актуализация на функции поради липса на постаянен екип от разработчици и изискването имплементациите на актуализациите да започват чак след, като се обяви стандарта. Програмистите, които решат да го използват, могат да получат достъп до най-новите 3D функции на някои хардуери, но само чрез нестандартизирани разширения. Ситуацията може да се промени в близкото бъдеще тъй като ARB са прехвърлили контрола над спецификацията към Khronos Group в опит да преодолеят проблема.

Други API-та
За разработката на игри за Microsoft Windows, могат да се използват различните API-та на DirectX за входни сигнали от потребителя, звукови ефекти, музика, работа в мрежа, възпроизвеждане на видео. Има налични много комерсиални библиотеки с помощта на които да се постигне изпълнението на тези задачи, но тъй като DirectX е безплатен е и най-използван.

За разработка на конзолни игри, производителите на конзоли осигуряват апаратури за графично "рендериране" и другите задачи от разработката на видео игри. Производителите на конзоли също така осигуряват цялостни системи за разработка, без които не могат да бъдат пуснати легално игри на пазара или изобщо да бъдат разработвани такива за техните системи. Разработчиците, които се явяват трета страна в разработката също продават библиотеки или инструменти, които да улеснят разработката на една или повече от задачите или да осигурят специални предимства, като възможност за мулти-платформена разработка.

Структура на видео игра
Централния компонент на всяка игра от програмна гледна точка е игровия цикъл. Игровия цикъл позволява играта да върви гладко независимо от входния сигнал подаден от потребителя или липсата на такъв.

Повечето традиционни софтуерни програми реагират на входните сигнали на потребителя и не правят нищо докато не получат такива. Например текстообратоваща програма форматира думи и текст докато потребителя пише. Ако потребителят не пише, текстообработващата програма не прави нищо. Някои функции могат да отнемат повече време да се изпълнят, но всяка от тях се инициира от потребиттеля казвайки на програмата да направи нещо.

Игрите от друга страна трябва да продължават да функционират независимо от входните сигнали подадени от потребителя. Игровия цикъл позволява това. Опростен псевдо код на игрови цикъл представлява нещо подобно:

while( user doesn't exit ) check for user input run AI move enemies resolve collisions draw graphics play sounds end while

Цикълът може да бъде прецизиран и модифициран докато разработката на игра прогресира, но повечето игри са базирани на тази базисна идея.

Игровите цикли се различават в зависимост от платформата за която се разработва играта. На пример игри писани за DOS и много конзоли може да използват наличните ресурси за обработка без ограничение. Въпреки това игрите за модерните операционни системи за персонални компютри, като Microsoft Windows трябва да функционират в рамките на ограниченията от планировчика на задачите. Някои от модерните игри използват многонишкова реализация, за да може изчисляването на изкуствения интелект да бъде отделно от генерирането на плавно движение в играта. Тук идва недостатъка от (значително) прегравяне, но играта може да върви по-гладко и ефективно на хипер-нишкови или мулти-процесорни платформи.Поради тази причина фокуса на компютърната индустрия е върху процесори с повече ядра, които могат да изпълняват повече нишки. Конзоли като Xbox 360 и PlayStation 3 вече имат повече от едно ядро на процесор и изпълняват повече от една нишка на ядро.

Любителско програмиране
Единствените платформи позволяващи на любители да програмират са консуматорските операционни системи. Това е защото разработването на игри върху игрови конзоли изисква специални системи за разработка струващи хиляди долари. Често такива могат да бъдат набавени от производителите на конзоли и биват продавани или давани под наем само на професионални студиа за разработки на видео игри. Въпреки това Microsoft разпространи фреймуърк за разработка на игри - XNA, който работи както на Microsoft Windows така и на Xbox 360. XNA е бил прекратен, но други проекти като MonoGame и SharpDX се опитват да позволят същия достъп за програмиране на игри. Игри написани за Windows често могат да бъдат "портнати" и за Xbox с минимални промени. Това позволява на малки екипи или индивидуални разраработчици да създават игри за конзоли. Някои любители също така разработват самоделни игри, особено за преносими системи или остарели конзоли.

Някои студенти по софтуерно инжинерство програмират игри с цел упражнение при учене на програмни езици или операционни системи. Някои любители могат да използват помощни софтуени пакети като Adobe Flash, Unity, pygame, Adventure Game Studio, GameMaker, Studio, Godot, UDK или Construct, при разработването на видео игри.

Виж още

 * List of gaming topics

Външни връзки

 * GameDev.net, a leading resource for game development
 * DevMaster.net, another popular game development site
 * International Game Developers Association (IGDA)
 * Game Development for Software Engineers, a short 5 day short course offered by MIT with guidance from the mentors of the award-winning MIT Game Lab.
 * One ex-game programmer's experience in the game development industry
 * Game industry veteran Tom Sloper's advice on game programming

Wikis

 * 2D Game Development wiki
 * Game Programming Wiki -GPWiki
 * Game Development Wiki -GDwiki

Category:Video game development