Я решил написать игру на MASM. Кто-нибудь писал игры на Ассемблере ? За сколько месяцев можно написать игру уровня Prince of Persia на современном Асме с интернетом и книгами ?
Спроси Роннику как.
nes
> Спроси Роннику как.
И он обязательно вставит какую-нибудь картинку :)))
раб вакуумной лампы
> Я решил написать игру на MASM.
На самом MASM не получиться. Представьте длину цепочки от "принц двинул ручкой" до "загружаем полученное значение в регистр AX". Придется придумать какой-то промежуточный язык, который будет ставить в соответствие одному движению персонажа сотни операций кода. Таких языков дофига, как специальных - движки, конструкторы - так и универсальных - C, FORTH... Конечно, этот промежуточный язык может быть и целиком бумажным - какая-нибудь супер-пупер навороченная система блок-схем... Но, все равно, этот промежуточный уровень необходим.
gudleifr
Но Мекнер как-то писал же ? Притом в одиночку. Я создам макросы для типовых наборов команд и код не будет таким длинным.
Объявляю старт ПРОЭКТА ! В этой ветке буду постить достижения свои а-ля Повелительница или Мизантроп (не в обиду, чел). Только надо идею придумать.
раб вакуумной лампы
> Но Мекнер как-то писал же ? Притом в одиночку. Я создам макросы для типовых
> наборов команд и код не будет таким длинным.
Многие писали. Я не говорю, о том что макросы написать невозможно. Я говорю, что Вы должны научиться воспринимать их как язык. Причем, с masm-om связанный очень опосредованно.
Например, кусок программы на masm, для работы c OpenGL:
invoke SetLightSource,GL_LIGHT0,ADDR LightSourcePosition,ADDR LightAmbient
invoke SetLightSource,GL_LIGHT1,ADDR LightSource2Position,ADDR Light2Ambient
invoke SetLightSource,GL_LIGHT2,ADDR LightSource3Position,ADDR Light3Ambient
invoke CreateSphere,1,GLU_FILL,GLU_SMOOTH,ADDR Sphere1Color,ADDR Sphere1Radius,sphere1Parts
mov GlSphere1,eax
invoke CreateSphere,2,GLU_FILL,GLU_SMOOTH,ADDR Sphere2Color,ADDR Sphere2Radius,sphere2Parts
mov GlSphere2,eax
invoke CreateSphere,3,GLU_FILL,GLU_SMOOTH,ADDR Sphere3Color,ADDR Sphere3Radius,sphere3Parts
mov GlSphere3,eax
invoke CreateSphere,4,GLU_FILL,GLU_SMOOTH,ADDR Sphere4Color,ADDR Sphere4Radius,sphere4Parts
mov GlSphere4,eax
invoke CreateSphere,5,GLU_FILL,GLU_SMOOTH,ADDR Sphere5Color,ADDR Sphere5Radius,sphere5Parts
mov GlSphere5,eax
invoke CreateSphere,6,GLU_FILL,GLU_SMOOTH,ADDR Sphere6Color,ADDR Sphere6Radius,sphere6Parts
mov GlSphere6,eax
invoke CreateSphere,7,GLU_FILL,GLU_SMOOTH,ADDR Sphere7Color,ADDR Sphere7Radius,sphere7Parts
mov GlSphere7,eax
; Set global flags
invoke glEnable,GL_DEPTH_TEST
invoke glEnable,GL_LIGHTING
invoke glEnable,GL_CULL_FACE ; Don't render back faces
invoke glShadeModel,GL_SMOOTH
invoke glEnable,GL_NORMALIZEСамого MASM-а тут фиг да не фига, голимый OpeNGL, со своим языком. А если на этом OpenGL будет написана игра, то будет еще и язык игры.
раб вакуумной лампы
>Я решил написать игру на MASM.
Почему именно на ассемблере? Просто ради интереса?
Genx
> Почему именно на ассемблере?
Нет никакой разницы на чем писать. Просто надо учитывать, что за пределами решения уже решенных задач "то, на чем писать" тоже придется писать.
Genx
Чтобы руку набить, скилл поднять, да и чтобы разобраться в устройстве компьютера по-настоящему.
gudleifr
Я решил обойтись без OpenGL, думаю с видео работать напрямую насколько это возможно. Буду ориентироваться на программистов 80-90-х, писавших для антикварных теперь приставок.
раб вакуумной лампы
> Я решил обойтись без OpenGL
При чем тут OpenGL? Это просто пример "языка". Вы что думаете, что язык "работы с видео напрямую" будет выглядеть сильно иначе?
gudleifr
Видно будет. Я на эту ветку буду регулярно постить всё. И код исходный и файлы и сюжет. Проэкт свободный будет.
Если есть интересные предложения по поводу сюжеты - выкладывайте. Неинтересные тоже посмотрим.
Вам, думаю, пока рано, но если кому понадобятся языки, на которых пишутся игры (а не их контент), то именно им и посвящены мои заметки - http://www.gudleifr.h1.ru/c8.html#C8.
Тема в архиве.