Насчет модификаций. Для начала нужно узнать на каком движке сделана игра. Вбиваем в гугл NFS Shift 2, переходим по ссылке на википедию, находим движёк на каком сделана игра (это The MADNESS Engine). Проделываем то же самое с названием движка в гугле, в итоге нас выбрасывает по такому адресу. Из описания узнаем что на этом движке сдела на предыдущая игрушка (Need For Speed SHIFT). Вбиваем (вы не поверите!) опять в гугле что-то типа Need For Speed: Shift Tools, и переходем по наиболее понравившейся ссылке, например сюда. Так как за 15 минут я не нашел "ресурсов" в интернете с готовыми инструментами по модификации данной игры, я вам предложил такой вариант. И ещё, то что я здесь напечатал - это всего лишь теория, у вас есть возможность подкрепить её практикой (так как у меня нет возможности проверить "инструменты" от первого шифта на втором). ------------------------------------------------------------------------------------------------------------------------------------ Есть еще одна вот такая ссылочка http://www.nfsplanet.de/en/nfsshift2/files/ MaximTG
Сообщение отредактировал burlachenko - Вторник, 14 Февраля 2012, 01:17
100% пирамида. А называть вы её можете как хотите. Поинтересуйтесь историями их созданий и последствиями. Наведите пример "долгоживущей" и "процветающей" пирамиды (уверен что не назовете). MaximTG
Зачем парится по поводу "чей сайт лучше?". Разместите на какой-нибудь странице все ссылки на "альтернативные" ресурсы по скире и пускай пользователь сам выбирает что ему по душе, а что есть лучше- покажет время MaximTG
Есть две другие функции, которые сообщат нам какого типа числа в строке, с запятой или без – isIntNumber и isFloatNumber. Вы можете проверить их работу прямо сейчас, но эти функции лучше использовать во время "более"сложного программирования который предполагает принятие конкретных действий если результат true, и принятие других действий в противном случае. Мы будем работать с такого рода вещами немного позже.
Конкатенация строк. Термин “Конкатенация ”(Объединение) означает процесс объединения строк вместе, то что очень часто делается в программах.
Итак, мы хотим например поместить текст в m_edtString, ещё какой-то текст в m_edtString2 а затем поместить объединенный результат этих двух "edit box'ов" m_edtString3. Мы уже знаем, как получить содержимое объекта строки – GetText – но как объединить эти две строки вместе? Это очень просто - мы просто используем знак плюс (+) как будто мы плюсуем их вместе. Мы не занимаемся здесь математикой. Знак "плюс" здесь работает как клей для "склеивания" двух строк вместе. Код можно напечатать в одну строку:
Кроме того запомните, если вам нужен пробел между запятой в конце первой строки перед второй, вам нужно завершить эту строку пробелом когда вы печатаете что то в m_edtString1. Также вы можете объединить три вещи в своем коде – содержание первого "edit box'а", пробел (в двойных кавычках) и содержание второго "edit box'а" – все это разделить знаком "плюс".
Добавлено (09.08.2011, 11:28) --------------------------------------------- Переведен 25-й, 26-й и 27-й абзацы:
Unicod строки. Вспомним начало этого урока, где я показал вам как выбрать объект из Object List (я снова показываю иллюстрации здесь). Вы теперь знаете, как выбрать объект строки, но если вы присмотритесь, немного ниже по списку вы увидеть что-то, что называется UniString. Что это такое? Ну “стандартная” строка использует нечто под названием ASCII (American Standard Code for Information Interchange). Это атавизм от старых времен телеграфных кодов. Каждый символ в тексте, находящийся в объекте строки занимает один байт. Это означает, что может быть выбран один из 256 различных видов символов - управляющих символов (например "carriage return"), цифр (0-9), прописных букв (А-Я), их строчные эквиваленты (а-я) и различных знаков препинания.
Проблема в том, что этот диапазон символов можно использовать только к полностью поддерживаемым языкам, чьи символы не акцентированные (например, английский - не удивительно, так как код был разработан американцами). Но как насчет французского, русского, хинди, иврита и так далее? С распространение компьютеров, эта проблема стала более серьезней, и поэтому был разработан новый способ представления символов в мировой системе писем - Unicode. Есть несколько стандартов Unicode и, если вам интересно, есть хорошая небольшая статья на Wikipedia по адресу http://en.wikipedia.org/wiki/Unicode. Символы хранятся не только в одном байте, а в двух, четыре или больше, чтобы расширить количество символов для разных языков. Seccia использует два байта для кодирования каждого символа в тексте, хранящийся в объекте UniString, кроме того объект UniString и объект String идентичны.
Посмотрите на предыдущей иллюстрации Object List.Там есть три объекты, которые явно представляют характер цифр:
Integer (целое число) Float (число с плавающей запятой) Money (деньги)
Как я сказал в начале урока, в других ЯП часто присутствуют много других типов чисел, делая обучение новичкам затруднительным. Seccia состоит из максимально простых вещей, но здесь нет такого понятия как "бесплатный обед". Эта простота является ценою более продвинутых программистов - как правило, отображаемой в производительности и предотвращение ошибок. Но это меньше всего должно беспокоить Seccia программистов.
Integers (Целые числа). Этот тип числа не имеет дробной части - например 13 является целым числом, а 13,2 - нет. На самом деле, последняй пример это пример числа с плавающей точкой. Целое число использует для хранения значения 8 байт и содержит ряд частей функций, которые позволяют пользователю манипулировать этими значениями. Это функции сложения, вычитания, умножение, деление, возведение в степень и так далее. Другого и не следовало ожидать.
Давайте попробуем какието простые вычисления. Удалить весь код, оставьте только обработчик событий для события OnClick объекта m_btnDoTask. Мы собираемся ввести одно число в m_edtString1 и другое в m_edtString2. После ввода чисел, выведем результат в m_edtString3. Вы заметили, что мы не может просто взять содержимое двух "edit box'ов" и объединить их вместе? Здесь можно было бы все объеденить как показано чуть выше. Но нет, мы должны внести контент первого "edit box'а" как объект целого числа, сделать арифметические действия над ним и поместить результат в третий "edit box". И так, вызовите диалог Object List и создайте новый объект целого числа. Имя его будет m_integer его я и буду использовать.
Протестируйте эту программу - введите числа в два верхних "edit box'а" и нажмите кнопку "Do Task". Должно получится так как и ожидалось. Всё в порядки - или здесь что то не так? Тех из вас, кто знаком с другими ЯП , будете говорить "подожди минуту - строки и целые числа несовместимы ", и вы будете правы. Новички же будут говорить “Ну и что?”
Видите ли, строка это просто текст - один байт на символ. В то время как целое число хранится в 8 байтах, независя от его величины (в разумных пределах). Я могу написать число из 16 цифр в m_edtString1 но оно все равно будет занимать 8 байт, как и приписано объекту целого числа. По этой причине, мы как правило конвертируем между собой форматы текста объекта m_edtString1 и чисел объекта m_integer. Это называется сортирование. Если вы посмотрите на функцию обработчика в m_string1, вы увидите GetIntValue. Это позволяет нам взять текст из "edit box'а", поместить в объект строки и затем установить значение целого числа, используя GetIntValue объекта строки. Дело в том, что Seccia автоматически сортирует целые числа, с запятой, строки и юникод-строки но есть функции, которые позволяют вам контролировать этот процес, если это действительно нужно.
Добавлено (11.08.2011, 21:39) --------------------------------------------- Перевел 32-й (по нему у меня есть сомнения, если не смогу его потом исправить, так и останется ):
Попробуйте некоторые другие функции целого числа внося изменения в код. Пробуйте так же вычитание, умножение, деление и не стесняйтесь вносить изменения в среднюю строчку кода указаного выше. Запомните, что также можно “add one” ("добавить один") (то есть увеличить значения целого числа) и “sub one”. По настоящему интересные (для новичков) модули (modulus) (или кратко “mod"). Это есть остаток, являющимся результатом деления целого числа. Например, если мы поделим 100 на 3, мы получим результат 33, здесь очевидно что число остается без 1(единицы). Попробуйте это
Заметка для опытных программистов, здесь вы можете использовать более традиционный подход: 1. string=”cool” 2. year = 2000 3. year += 2 4. year++
Перевел 34, 35,36-й абзацы:
Floats (Числа с плавающей точкой). Как вы видите, они являются десятичными. Они также хранятся в 8 байт. У них те же функции что и у целых чисел, но дают в результате десятичные числа. Создайте новый объект с плавающей точкой и измените код, чтобы его отделить, используя пример рядом ...
m_float.Set(m_edtString1.GetText())
m_float.Div(m_edtString2.GetText())
m_edtString3.SetCaption(m_float.Get())
Используйте в качестве параметров числа 100 и 3. Вместо 33, какой вы видите результат? Попробуйте также функцию округления.
Числа с плавающей запятой и деньги это очень похожие объекты - оба представляются в десятичном виде. Разница в том, что объект денег используется с весьма специфичной целью - работать с валютой – и по этому имеет свойства устанавливать и брать себе символ той же валюты, это как разделение её в разных странах.
Насчет него у меня есть сомнения в его правильности.
Деньги. Наконец мы подошли к деньгам. Они работают так же, как и числа с плавающей точкой, кроме того они имеют дополнительные функции для установки символа валюты и их разделитель. В основном всё работает так же.
The Value Object (Значение объекта)
В дополнение к strings, UniStrings, integers и floats, есть также объект под названием “Value” ("Значение"). Он может принимать любой вид из выше названых объектов, а также выводить результат работы в качестве любого из них. Как вариант, вы могли бы обойтись без других объектов, используя только объект Значения. Что впрочем не считается хорошим тоном в программировании – используйте правильный тип объекта к соответствующим типам данных.
Именно с именами фаилов связан этот объект, это может быть не сразу очевидно, но это особая форма строки которая используется для хранения имен путей и имеет дополнительную функциональность, позволяющая пользователю разделить имя файла на свои составные части. Это очень полезный объект, и мне приходилось писать код с такой функцией много раз на многих языках, неоднократно делая то же самое. Seccia имеет этот замечательный объект, который делает все это для вас.
Давайте попробуем несколько примеров. Удалите любой код находящийся в Code Editor'е. Создайте "Path object" обычным способом. Мы собираемся установить его значение, а затем отобразить расширение файла в m_edtString3. Код такой ...
Протестируйте программу и введите полный путь, как в примере приведенном рядом.
Вы видите, как часть функции "отделила" расширение файла. Это полезно, когда вам нужно понять тип файла для того, чтобы правильно с ним работать.
Если вам нужен "весь" файл, используйте GetFile - это даст вам имя файла и расширение. Функция GetFileName вернет только часть имени. Но как насчет пути к файлу? Мы используем GetParent для этого, как например здесь ...
m_edtString3.SetCaption(m_path.GetParent())
Если вы поробуете предыдущий пример с "путем", вы увидите следующее.
Попробуйте некоторые другие функции самостоятельно.
Color (Цвет)
Цвет сложен для вычислений - и здесь только вводный туториал для начинающих. Достаточно сказать, что существует много систем вывода цвета. Seccia работает только с двумя из них:
RGB - представляет цвет в количестве 3-х штук (красный, зеленый и синий), интенсивность каждого варьируется от 0 до 255 единиц.
YUV - более сложный. “Y” компонент представляет то, что называется luminance (освещенность) – другими словами, насолько bright (яркий) цвет. "U" и "V" вместе, используются как х-и у-координаты на графике возможных цветов, как показано здесь.
Давайте начнем с RGB, поскольку это наиболее известная среди программистов система. Мы собираемся измененить цвета фона m_dlg с помощью функции SetBackColor. Это получится только при правильных манипуляциях со значениями RGB.
Продолжаем дальше, как всегда удаляем любой код оставшихся в Code Editor'е. Создайте новый объект цвета – m_color. Мы собираемся использовать SetRed, SetGreen, и SetBlue функции m_color изменяя их значения в трех "edit box' ах". Когда мы нажмаем кнопку “Do Task”, цвет диалогового окна изменится. Код должен выглядеть следующим образом:
m_color.SetRed(m_edtString1.GetText())
m_color.SetGreen(m_edtString2.GetText())
m_color.SetBlue(m_edtString3.GetText())
m_dlg.SetBackColor(m_color)
Вставьте этот код в редактор, затем проверить его. Введите три числа "edit box'ы", каждое в диапазоне от 0 до 255, а затем нажмите кнопку "Do Task". Что произошло? Ничего! Ну, на самом деле "оно" хочет сделать что-то, но изменение не произойдет, пока диалоговое окно не перерисуется "Windows'ом". Просто переместите окно по экрану. Когда вы отпустите кнопку мыши, диалоговое окно перекрасится и в текущем местоположении будет с другим цветом. Существует однако, более элегантный способ сделать это. Вы можно заставить ОС Windows перекрасить окно с помощью функции Redraw . Просто внесите инструкцию ...
m_dlg.Redraw()
... после внесения кода, пртестируйте приложение. Изменение цвета должно произойти незамедлительно после нажатия кнопки кнопки. Вот пример.
А что делать, если мы хотим сохранить этот цвет и но сделать его более темным? В RGB вам придется вычесть равные числа для каждого из значений цвета. Таким образом, вместо значений 100 200 100, вы можете внести 75,175,75 (то есть "отминусовуем" по 25 единиц с каждого элемента цвета ). Попробуйте и посмотрите на разницу. Вы можете видеть на иллюстрации рядом, что верхняя часть окна, немного темнее тени того же цвета.
Что насчет YUV? Как вы видите на иллюстрация рядом, он имеет диапазон от -0,5 до +0,5 по U и V осям. Эта же система имеет диапазон от 0,0 до 1,0 для Y оси. Однако в Seccia на данный момент используются значения от 0 до 255 во всех трех осях. Sylvain намерен изменить это в будущих версиях Seccia на 0.0-1.0 для значения Y и - -0,5 до +0,5 для двух других осей. Можете попробовать команды SetY(), SetU() и SetV() так же как вы это делали с RGB.
Table (Таблица)
Объект таблицы позволяет нам создавать своего рода таблицы значений в памяти. Я оставлю эту тему на потом для главы по структуре сетки, нам легче будет понять этот объект, когда мы сможем использовать регулирование структуры.
Summary (Вывод)
Итак, что мы узнали в этом уроке? Мы увидели, что:
В Seccia собран разумно-ограниченный набор типов данных
В Seccia текстовые типы данных включают в себя: o String (Строку) o UniString (Unicode строку) o Path (Путь) Мы можем соединять строки вместе, используя знак плюс. Это называется конкатенация Части функций Strings и UniStrings имеют такие возможности работы со строками, как разделение перемешивание, поиск, и другое. Объект пути содержит конкретные команды для управления обработкой имен путей и типами файлов Объекты типа число, включают: o Integer (Целое число) o Float (Число с плавающей точкой) o Money (Деньги) Мы можем объединить возможности строк и чисел в единый тип: o Value (Значение) Тип данных Color (Цвет) позволяет использовать спецификации двух стандартов RGB или YUV
Поиграйте с тем что вы узнали - закрипите свои знания различных частей функций работая с ними.
Как обычно, любой отзыв на эту статью приветствуется. Удачи!
Перевод второго урока закончен, сейчас "запихиваю" все это обратно в PDF (так как бесплатного редактора этого формата файлов не нашел, пользуюсь портабельной версией фоксита). Первый туториал практически готовый, возможно совсем скоро добавлю его сюда на сайт. На будущее (как показала практика) не стОит пробовать делать колективные переводы, это не особо интересует товарищей игроделов . (Надеюсь что это была не очень интересная тема, я просто подумал - "ведь столько постов печатается каждый день на форуме, ведь если бы каждый учасник перевел бы по одному абзацу, перевод был бы готов за неделю!", но увы, посмотрите на дату создания первого поста...). Имена учасников перевода первого туториала будут обязательно указаны. Спасибо всем кто помогал. Тему можно закрывать. Но на последок скажу что есть еще третий туториал, а также справка по языку программирования в Seccia, если у кого-то будет желание их перевести, я помогу,напишите об этом в ЛС . MaximTG
Сообщение отредактировал burlachenko - Пятница, 06 Января 2012, 13:12
Если бы скачивание было легальным (то есть официально не наказуемым), программа имела бы особую ценность (например поиск для просмотра в интернете, а такие вполне легальные сервисы уже есть, с возможностью занесения уже просмотренного - кому то тоже пригодилось бы). Но это мое мнение. MaximTG
Здравствуйте Xe[N]o, если вас интересует эта игра, пройдитесь по ссылке http://ufo2000.sourceforge.net/, там же можно скачать игру и исходник к ней (проект опенсорсный). К данной игре никто не запрещает делать моды. ---------------------------------------------------------------------------------------------------- И еще, загляньте на страничку http://en.wikipedia.org/wiki/Ufo_defense, а именно в низ (там где написано Fan projects), там указаны ссылки на бесплатные игры по тематике (некоторые проекты с исходным кодом). MaximTG
Сообщение отредактировал burlachenko - Четверг, 05 Января 2012, 00:09
На вид может быть. Но на данный момент под Линукс не очень много простых конструкторов для игр (по сравнению с виндою), например это сдерживает меня переходить на бесплатную ОС. MaximTG
Есть еще один проект по адресу http://gluon.gamingfreedom.org/, но судя по описанию (или по тому что я понял из английского), это целая система, цель которой "поддержка идеи от автора, до играющего в игру человека". Проект чисто "не под виндоус" (Линукс), попробовать что это такое не имею возможности, снизу есть ссылка на скрин, может кого заинтересует. Добавил-бы в базу материал о нем, но не знаю как его подать (попробуйте его кто-нибудь, напишите мне ЛС пожалуйста). screen MaximTG
Сообщение отредактировал burlachenko - Вторник, 03 Января 2012, 22:53
Вобще то о вкусах не спорят, но если интересует чужое мнение, тогда: "Ловко устроился" (Американский, черно-белый) и "Таможня дает добро" (Франко-Бельгийский, или наоборот, в лицензии на дисках вышел не давно). Два фильма - комедии, при желании можно найти смысл. MaximTG
Если хотите с чего то начать, поробуйте с BASIC ENGLISH. В журнале "НАУКА И ЖИЗНЬ" можно с ним кратко ознакомится. Обратите внимание, с основами можно ознакомится в 6(!) статьях (а именно в выпусках №№1-6 за 2001 год). Найдите время, думаю не пожалеете. Журнал привел как пример, так как другого материала по качеству и по "сжатости" не видел. MaximTG
burlachenko, я про darkflow напоминал уже на предыдущей страничке. Только вот у конструктора есть большой БАГ - Не запускаются и не компилируются исходники, хотя может это только у меня.
Да действительно, я что-то пропустил . Насчет компилирования, Вы пробовали открывать проект с пакменом?, он вроде вполне рабочий (даже у них на странице есть работающая(скомпилированная) html5 версия). Может стоит пересмотреть рабочий исходник? MaximTG
Еще один конструктор по адресу http://darkflow.net/. Поддерживает ныне модный Html5, а также андроид, пиэспи, айпад, айфон, нитдендо (вии и дс) и конечно виндоус. Бесплатен, но для повыщения функционала требует создания какого то аккаунта. На его тестдрайв не хватает времени, добавлю его описание чуть позже. MaximTG
Ммм, я думал, она только жизнь автономных часов на материнской плате поддерживает... Как она к этому относиться может?.. Кстати, ей уже должно быть года 4, пора разрядиться...
Батарейка так же отвечает за сохранения параметров биоса (потому и привел пример с неработавшими портами usb), после замены батарейки все заработало нормально (вот вам и связь между батарейкой и железом). MaximTG