Перейти к содержимому
Tim640

Sonic: Eggman Attack

Рекомендуемые сообщения

Потом я полез в исходники... Это просто Тихий Ужас. В совершенстве.

Куча неспаренных тегов. Никаких отступов. Куча пустых строк в середине кода. Как ты вообще можешь разобраться в таком??

Интересно, все ли мегакрутые CIS'овские Gamemaker-проекты написаны в таком `стиле`?

 

1) нефиг лезть в исходники

2) Тихий Ужас эт у нас имя собственное

3) никаких отступов, это подтверждает пункт 1) автор делает для себя, а не для тех кто будет лезть в исходники.

4) куча пустых строк.... 'стиле'. у каждого свой стиль, как я пишу скрипт на гм, я пока таких дуриков не видел tO.o

 

 

первый уровень прошёл без труда, со второго раза, не сразу понял в чем прикол, потом на втором левеле, пустил в бадника два колечка, я как понимаю от этого он продвигается "немного" вперед, и меня раздавило. взбесил фон с анимацией, отвлекаешься на него, и соник перед нажатием на стрелку думает "фрогги?"

ну вообще то помоему плюсов не меньше минусов))

Изменено пользователем vektor

Поделиться сообщением


Ссылка на сообщение

Я конечно понимаю, что писалось на JS, но игра примитивнейшая. Уж лучше на Flash что-нибудь стоящее сделать.

Поделиться сообщением


Ссылка на сообщение

Вообще-то отступы делают в первую очередь для себя, а не для "тех кто будет лезть в исходники". Я совершенно не против собственных стилей, это ваше личное национальное дело. Попробуйте написать сравнительно крупный проект (пусть даже для себя) в стиле "как попало" и без документации. Если вам понадобится срочно что-то серьезно изменить через годик-другой, вам станет очень весело...

Поделиться сообщением


Ссылка на сообщение

Напишу по порядку...

1. ИГРА НЕ ДЕЛАЛАСЬ ДЛЯ ТОГО, ЧТОБЫ КТО-ТО ТАМ ЛЕЗ В ИСХОДНИКИ. Пока делаю на том уровне, на котором умею. И не собираюсь пока углубляться в профессиональные скрипты. На IE работает, и там только однин глюк - после "убиения" робот еще некоторое время продолжает двигаться. Из-за этого вы и умирали. НЕ ЛЕНИТЕСЬ ПРОЛИСТАТЬ ТЕМУ, ЭТО ТОЖЕ НЕ РАЗ ПИСАЛОСЬ.

2. ДЕЛАЛОСЬ ТОЛЬКО ДЛЯ IE. Писалось не раз и на сайте, и в Хэлпе игры.

3. Я_не_говорил, что это мегакрутой проэкт.

4. Почему ускорение роботов ужасная идея?) Иначе слишком легко XD

5. LinesPrower, преклоняюсь перед сей перепиской уровня 0о* ОБЯЗАТЕЛЬНО разберусь, ОГРОМНОЕ спасибо!

Поделиться сообщением


Ссылка на сообщение

вааау, Тим, тебе повезло, я редко видел чтобы ктото так помогал, я сам бы поленился столько написать, да ещё так подробно

 

и всёже нужно делать игру под оба браузера, иначе теряеш почти половину популярности

Изменено пользователем Gold-sonic

Поделиться сообщением


Ссылка на сообщение

Именно это я теперь и буду делать. Я начинаю переписывать игру на этом движке.

Поделиться сообщением


Ссылка на сообщение

В общем, идея понравилась O_O

Пару слов в защиту JS: на нём можно написать нормальную игру. И даже видел, и играл. Обычный Тетрис)) Ну, к примеру, вот такой: http://www.bereal.ru/demo/ajax/tetris/ . Правда, здесь ещё есть и серверная сторона, плюс пресловутый Аякс... Ну да неважно. Самое главное, что на скриптовых языках можно писать не только текстовые игры :) Подчёркиваю: _можно_ .

Касательно проекта: не забрасывать ни в коем случае. Одна такая игра позволит освоить все тонкости JS одним махом. Тут и работа с DOM-ом, и динамические эффекты, и обработка событий... В общем, глобальненько так. И... Я могу ещё вот что сказать: JS по большей части язык математического характера. Изначально он действительно предназначался для нетривиальных целей, типа проверки полей форм, но со временем... Со временем он переметнулся на сторону динамических эффектов. А это неизбежно означает вмешательство рассуждалки и умения моделировать, что тесно связано с математическим представлением. С прибавлением Аякса, как... Признанной технологии, оно теперь может выдаться и в языки программирования полноценные на клиентской части s=)

Что советую:

- Изучить php. Котеров, Костарёв, "PHP 5 в подлиннике" - наше всё.

- SQL. Взять томик поувесистее... Просто работа с базами данных в нашем мире необходима)

- Ajax. Никаких книжек - как можно написать об одном XMLHttpRequest пусть даже 300 страниц?! - а просто прочитать основные детали и применение. Но обязательно после изучения зыка серверной части.

- Изучить фреймворк какой-нить, типа Jquery или Motools. Чтобы быстрее писать наиболее узкие участки кода, а к тому же велосипед не придумывать. Но это обязательно после глобального понимания JS, чтобы знать "каково оно, изнутри".

 

И вот после этого... Можно ой как много чего прикрутить к игре будет sl;)

Удач. Наблюдаю за развитием s=)

 

З.Ы.: И вообще: я сторонник того, что каждый должен написать свой велосипед, чтобы начать понимать мотороллеры)

З.З.Ы: Flash ни к месту здесь вообще: на нём создаётся воистину куча мелких игр, и это не... Не столь необычно.

Поделиться сообщением


Ссылка на сообщение

Громадное, просто необъятное пушистое спасибо! Поддержка, тем более модераторов, мне ОЧЕНЬ нужна. Еще раз ОГРОМНОЕ спасибо!

Поделиться сообщением


Ссылка на сообщение
Пару слов в защиту JS: на нём можно написать нормальную игру.

 

Да, согласен. Есть много хороших игр, где геймплей завязан не на крутой графике. Однако с точки зрения нормального 3D - без шансов. Из всех операций над картинками доступны только сдвиг и растяжение-сжатие по осям s=) Причем тормозит безбожно. После изучения DirectX и шейдеров такие возможности и производительность совсем не радуют bl>:](

 

Никаких книжек - как можно написать об одном XMLHttpRequest пусть даже 300 страниц?!

Да уж. К сожалению, большинство наших IT-книжек (к сожалению, не только наших) - это просто делание денег из воздуха (надо бы тоже заняться s=))

Лично сам обычно все изучаю по официальной документации. Если там есть how to get started и tutorials - вообще замечательно. А в особо тяжелых случаях юзаю Гугл. Главное - правильно составить запрос))

Поделиться сообщением


Ссылка на сообщение

Ух, однако этот движок возвратил мне интерес к деланию этой игры XD Появилось куча идей по дизайну. Вообще выложу демо на НГ as the New Year present - то бишь как подарок на НГ XD Сообщу пока только, что графический дизайн будет схож с Некст-Геновским))

 

Потом - большая, просто невероятно ОГРОМНАЯ благодарность LinesPrower'у - он доработал движок почти что до максимума) То бишь есть пауза, есть launcher. Лаунчер - первая страничка, где можно будет выбирать размер окна с игрой. Пока что есть только 1024х768 - вроде самое распространенное сейчас разрешение. То бишь игра будет отлично работать на разрешении экранов 1024х768 и больше. На меньших экранах игра тоже будет работать, но фон будет немного скроллиться. Но не беда, дабы подровнять, просто при начале игры нажмите пробел, и он автоматически выровняет вам игровую зону. Но не думаю, что это понадобиться - максимум фон будет сдвигаться вправо-влево, т.к. меньше 678px только 600px, которое встречается вроде только в разрешении экрана 800х600, которое, в свою очередь, встречается сейчас довольно редко. А то, что фон будет сдвигаться при беге вправо\влево - даже в какой-то мере выглядит как эффект.

 

Потом насчет запуска в разных браузерах. Еще раз преклоняюсь перед этим движком - игра работает на ура как в ИЕ, так и в ФайрФоксе (на других пока не тестировал). Но, конечно, есть различия - и главное различие состоит в том, что в ИЕ будут работать некоторые дополнительные эффекты (как плавный переход со страницы на страницу, робот, летающий в меню по экрану) и музыка. В ФайрФоксе же пока что ни то, не другое не работает, зато игра идет намного плавнее и быстрее.

 

Так что огромное человеческое спасибо LinesPrower'у и всем, кто поддерживает проект. Вообще еще, надеюсь, будет нормальное сохранение через куки (cookie), однако тут все туманно XD Однако работа (по крайней мере по дизайну) идет полным ходом, ждите к НГ дему с законченным меню и первым уровнем (может, даже и со вторым XD).

Поделиться сообщением


Ссылка на сообщение
1) нефиг лезть в исходники

3) никаких отступов, это подтверждает пункт 1) автор делает для себя, а не для тех кто будет лезть в исходники.

4) куча пустых строк.... 'стиле'. у каждого свой стиль, как я пишу скрипт на гм, я пока таких дуриков не видел t:.

 

Я надеюсь, ты не хочешь в будущем быть программером, да? Отрасль и так перегружена быдлокодерами...

 

Изначально он действительно предназначался для нетривиальных целей, типа проверки полей форм, но со временем... Со временем он переметнулся на сторону динамических эффектов.

Он умел это давно, но мужики то не знали (с). Не было кроссбраузерных фреймворков и никто не заморачивался, хотя можно было..

Зачем ты советуешь ему котерова? Ему не нужен тут PHP. :) Соотвественно отметаются всякие взаимодействия с сервером, в данном случае ajax. SQL тут тоже не нужен.

 

Вообще, надо начинать с культуры кода, которая тут отсутствует напрочь. Если серьезно - нужно просто знать любой язык программирования на среднем уровне и очень внимательно прочитать Совершенный Код Макконнела (книжка сложная, аналогов не знаю).

 

------------

Если в целом... ну, конечно, этот проэкт - ни о чем совершенно. Так, поиграться, потренироваться - не более.

Если за каким-то лешим вам необходимо, чтобы "оно работало в браузере" - есть <canvas> (вики, марио ;), moar) и Flash / Silverlight!

Кстати, с 10 версии флеш умеет Alchemy - это, считайте, возможность использовать бинарный код в окружении флеша. Разрабатывается альтертанива от гугла - Google Native Client.

На алхеми портировали Doom, на гугловский Quake.

 

Это всё хорошо и круто, но вопрос в том - а нужно ли вживлять бинарный код в браузер, если можно его скомпилировать и предоставить в виде отдельной программы? В большинстве случаев ответ - нет.

 

P.S. HTML - не язык программирования, а язык разметки, @^#%!^.

P.P.S. Cheerz to LinesPrower, я думал среди наших пользователей нет программеров нормальных. о_О Заинтриговал прямо.

;)

Чтобы не плодить глобальных переменных, почему бы не сделать объект CONST и туда всё засунуть? CONST = {sonic_speed: 5, key_left: 37 ....... } Да и вообще, разнести скрипты по файлам наконец...

 

На Core Duo все летает, как на Firefox 3, так и на IE7

На P4 2.4GHz IE 6 показал себя просто потрясающе (один из немногих тестов, где IE в лидерах :))

FF3 все время очень быстро выделял память, и каждые несколько секунд делал garbage collection, освобождая все, что выделил из-за чего сильно лагал... Вывод: FF3 не оптимизирован для JS-игр ;)

А вот Opera 8 вообще отказалась выполнять мой скрипт. Разбираться было лень.

 

У файрфокса самая медленная отрисовка в случае обновления большой области, лидирует с огромным отрывом вебкит (сафари/хром), ие посередине. Опера - недобраузер, вплоть до версии 9.5 там с JS, да и не только, была крайне нехорошая ситуация.

Да, еще в FF не понадобится собирать мусор, если ты будешь деревца двигать, а не создавать заново каждый раз. removeChild физически не удаляет объект, только удаляет его из DOM.

Поделиться сообщением


Ссылка на сообщение
Зачем ты советуешь ему котерова? Ему не нужен тут PHP.

Вэр, погодь: ведь это.. Можно ж сделать сейвы, таблицу рекордов t:. Здесь уже JS не обойдёшься.

 

P.S. Хотя там и пыхпыха в две строчки будет..)

Поделиться сообщением


Ссылка на сообщение

Это последняя стадия, до которой еще совсем долго. Да и код весь навиду, защиты от подделывания никакой... лишнее это.

Поделиться сообщением


Ссылка на сообщение
...очень внимательно прочитать Совершенный Код Макконнела.

Спасибо за ссылку. Судя по аннотации книжка интересная. Почему-то думал, что о таких вещах книжки не пишут, и даже никому не рассказывают :) .Почитаю, когда будет время.

 

P.P.S. Cheerz to LinesPrower, я думал среди наших пользователей нет программеров нормальных. о_О Заинтриговал прямо.

Спасибо. Не думал, (но догадывалсяt:.), что у сайта такие квалифицированные админы.

 

;)

Чтобы не плодить глобальных переменных, почему бы не сделать объект CONST и туда всё засунуть? CONST = {sonic_speed: 5, key_left: 37 ....... } Да и вообще, разнести скрипты по файлам наконец...

Да, еще в FF не понадобится собирать мусор, если ты будешь деревца двигать, а не создавать заново каждый раз. removeChild физически не удаляет объект, только удаляет его из DOM.

Actually, я не веб-девелопер. На JS написал наверно десяток скриптов. Из них 9 - довольно давно)) Так что JS знаю довольно поверхностно, да и целью серьезно его изучать не задавался. Вообще - я математик-программист. Наше всё - это Кормен. Хотя последнее время как-то тянет к ГеймДеву)) В этой отрасли алгоритмистов и математиков явно не хватает.

 

А насчет деревцов)) Для меня прозрачность и гибкость архитектуры куда важнее :) Двигать деревца - это читерство)) Поражаюсь криворукой реализации FF. Просто не понимаю, зачем под 10 деревцов выделяется десяток мегабайт памяти?? А объект по-хорошему должен физически удаляться, когда на него не осталось ссылок. Для интерпретируемого языка, подобного JS, реализовать в браузере счетчик ссылок - не такая уж сложная задача. Ну да фиг с ними. Это их личное дело, как писать свой браузер...

 

P.S. То, как и почему я попал на этот сайт - отдельная история, в которой многое не объясняется формальной логикой))

Изменено пользователем LinesPrower

Поделиться сообщением


Ссылка на сообщение
Actually, я не веб-девелопер. На JS написал наверно десяток скриптов. Из них 9 - довольно давно)) Так что JS знаю довольно поверхностно, да и целью серьезно его изучать не задавался. Вообще - я математик-программист. Наше всё - это Кормен. Хотя последнее время как-то тянет к ГеймДеву)) В этой отрасли алгоритмистов и математиков явно не хватает.

 

А насчет деревцов)) Для меня прозрачность и гибкость архитектуры куда важнее t:. Двигать деревца - это читерство)) Поражаюсь криворукой реализации FF. Просто не понимаю, зачем под 10 деревцов выделяется десяток мегабайт памяти?? А объект по-хорошему должен физически удаляться, когда на него не осталось ссылок. Для интерпретируемого языка, подобного JS, реализовать в браузере счетчик ссылок - не такая уж сложная задача. Ну да фиг с ними. Это их личное дело, как писать свой браузер...

 

P.S. То, как и почему я попал на этот сайт - отдельная история, в которой многое не объясняется формальной логикой))

 

Ты не прафф, что это читерство. Напиши метод, абстрактно создающий дерево, а внутреннюю реализацию ты же делаешь в зависимости от среды - в данном случае лучше их двигать. Гибкость обеспечивает как раз абстракция по большей части.

А в ФФ всегда были огромные проблемы с утечкой памяти... 3 версия ничего толком не решила, вот ждем 3.1.

 

Объект должен удаляться, для этого в JS delete. Я уже начал подзабывать нативный JS, слишком привык к фреймворкам. В mootools при вызове destroy() интеративно обнуляются все свойства объекта и рекурсивно для всех его потомков, но почему-то они потом delete не вызывают...

Просто removeChild подразумевает, что ты можешь его убрать из дерева, а потом вернуть.

 

Offtopic, а меня наоборот сначала сподвиг программинг изучать именно геймдев (с 9 лет лол), писал на qbasicе :) Потом С++ немного. Но всё как-то вяло шло, а вебдевелопингом занялся по сути только благодаря соникворлду, а дальше уже по специальности... Всё хочу вернуться к прикладному программированию, потихоньку читаю. А вышеупомянутую книгу очень сильно рекомендую!

Поделиться сообщением


Ссылка на сообщение

delete, delete... Фигня какая-то, а не оператор. Там же написано, что он удаляет только свойства, но не объекты (ну, еще переменные, объявленные неявно, т.е. без var - удаляет только переменные, но не объекты, на которые они ссылаются)

Пример:

 

	 var tmp = new Coords(10, 20, 30);
 tmp2 = tmp;
 alert(tmp.x); // 10
 alert(tmp2.x); // 10
 tmp2.x = 100;
 alert(tmp.x); // 100
 alert(tmp2.x); // 100 // tmp и tmp2 - ссылки на один и тот же объект
 delete tmp.x
 alert(tmp.x); // undefined
 alert(tmp2.x); // undefined
 alert(tmp); // [object Object]
 alert(tmp2); // [object Object]
 alert(delete tmp); // false  // нелязя удалить - объявили var'ом
 alert(delete tmp2); // true  // удалилась ссылка
 alert(tmp);  // [object Object]
 //alert(tmp2); // causes error!
 alert(typeof(tmp2)); // undefined
 alert(tmp.y); // 20 // объект все еще существует

 

Почитал родоначальный ЕСМАScript Language Specification - ни слова (может плохо смотрел??) о том, как браузеры должны реализовывать memory management. Значит реализовывают как хотят. Поскольку у пользователя, т.е. программиста, средств удалять самому нет, то единственный нормальный способ - удалять объекты, когда на них не осталось ссылок.

>> Просто removeChild подразумевает, что ты можешь его убрать из дерева, а потом вернуть.

Естественно, но для этого у меня должна остаться ссылка на объект, иначе к нему никак не обратиться, right?

 

Ты не прафф, что это читерство. Напиши метод, абстрактно создающий дерево, а внутреннюю реализацию ты же делаешь в зависимости от среды - в данном случае лучше их двигать.

Конечно, всегда можно найти архитектурное решение. Например создать "менеджер деревьев", который будет хранить список объектов, удаленных из DOM'а, и выдавать именно их по запросу "create" (если таких нет - создавать новый), а также помещать обратно в список по запросу "delete". А если двигать... А вдруг в какой-то момент деревьев станет меньше, чем было? Куда ты их задвинешь? ;)

 

Ну дык я тоже на кубейсике писал тетрис когда-то в начале. Только назыавать это занятие ГеймДевом у меня язык не поворачивается))

Поделиться сообщением


Ссылка на сообщение

removeChild именно оставляет тебе ссылку ;) Ты можешь сделать

 

node.removeChild(sub);

node2.appendChild(sub);

 

Вообще все справедливо по поводу delete, видимо именно поэтому он и не использовался в том фреймворке. Именно поэтому идея с написанием графической игры на JS изначально нехорошая... Ну не предназначен он для этого.

 

Спецификация не описывает реализацию, поэтому в каждом браузере свой движок. V8, который используется в хроме, сейчас вроде как самый совершенный, и вообще в хроме грамотно справляются с утечкой памяти - там каждая вкладка это отдельный процесс, отдельная песочница. Уничтожаешь вкладку, чистится память, всё круто.

 

А как справится с "менеджером деревьев" - это уже зависит от того, как ты этот класс спроектируешь ;)

Например, знаем, что максимум на экране может быть 10 деревьев. Забиваем массив новыми нодами, когда нужно создать 11 дерево, берешь самый 1 элемент, который выплыл, и его возвращаешь, а первым становится второй. Соотвественно, каждое дерево совершает свой путь сверху до низу. Обычная очередь, закольцованная если так можно сказать.

 

Только это всё уже тут является оффтопиком почти. :( Если найдем сомышленников, которыми могут являться Кэл или Арти, можем открыть новую темку... где-нибудь о_О

 

Где-то читал, что это главная ошибка программеров - начинать свой путь с Basic.. ) Это хороший язык, но слишком свободный, поначалу может сильно испортить подход, а исправиться будет сложно

Поделиться сообщением


Ссылка на сообщение

Ну что ж, рановато еще, конечно, но сегодня начались каникулы, совсем скоро уже и НГ, все уже празднуют, ну, я и выложу обещанную игру, тем более что в понедельник уезжаю на неделю XD Все тут:

http://www.freewebs.com/sthea/index.htm

Не ленимся, качаем) Архив маловесный, так как эта игра будет временно без музыки. Все в НекстГен стиле) С Новым Годом, люди!)

Поделиться сообщением


Ссылка на сообщение

Ну отпишусь одним постом.Все наверное знают ка-бы я не смотрел эту тему-никогда в ней не задерживался.

Эта игра мне не нравилась.Но сейчас игра представляет собой огромный интерес.И вес игры тоже нормальный.Но спрайты соника остовляют желать лучшего.(Если делать игру в НГ стиле то надо его всегда учитывать)Желаю удачи проекту если он пойдет такими темпами.

Поделиться сообщением


Ссылка на сообщение
Только это всё уже тут является оффтопиком почти. -_- Если найдем сомышленников, которыми могут являться Кэл или Арти, можем открыть новую темку... где-нибудь о_О

Смотря в чём сомышленников. Я нативный JS ещё больше не помню, чем ты: я учил его очень давно, успел забыть, а когда вновь понадобился, стал сразу юзать мютулсы и не парить себе мозги. Про ньюансы ЖС мне сказать нечего, опыта меньше. Про программинг вообще — было бы мило. ООП — тоже интересно.

 

Или задумал ты пруф ов экзистенс жс-соника запилить?) Я бы лучше сешарпового запилил, лишь бы время и мотивацию найти.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×