|
|
|
Канал Elite: «исходник, желательно на с++, игры ELITE» |
|
|
Пассажир
|
|
Облазил кучу сайтов с ссылками на ELIT`у, все битые исходника так и не нашел. Поделитесь, у кого есть, исходником, желательно на с++, игры ELITE любой модификации.
Очень сильное желание посмотреть как там реализована постройка систем, галактик, вселенной и все остальное.
|
|
|
Пассажир
|
|
Нашел на Elite - The New Kind исходник на, с или с++, они как-то похожи.
Тока я не пойму, а как эту тучу файлов теперь скомпилпть, ну шобы когда я сделаю пару изменений в коде, посмотреть че из этого получилось? Может хто подскажет, а?
Шото просматривая код, где строится галактика. НИФИГА не понял и где же обещанная числовая последовательность Фибоначчи и 2 в 48 степени Галактик (280.000.000.000.000 галактик). Даваите пообщаемся по поводу исходника этой игрушки.
Я ще на этом форуме[/url]
|
|
|
Crimson
560 EGP
    Рейтинг канала: 1(8) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Кхмм... а чем и из-под чего вы собираетесь компилить? Для начала надо скачать aллегру нужной версии (предварительно разобравшись, какая из них нужная). Потом, я так понял, newkind.zip предполагается распаковать в allegro\include, и компилить alg_main.c. Только у меня aллегра не компилится из-за отсутствия каких-то хидеров. Разбираться с ней чесгря влом.
Можно поинтересоваться, кто вам обещал генерацию галактик числами Фибоначчи? Хотел бы я на это посмотреть... В new kind, если не ошибаюсь, должно быть 8 галактик по 255 звезд, генерящихся с помощью ГПСЧ. 280Т галактик там не было и быть не могло.
|
|
|
Пассажир
|
|
СМТРЫ:
1. Elite - Меню раздела
Цитата: |
Всего в Элите 281 триллион 474 миллиарда 976 миллионов 710 тысяч 676 галактик! В каждой из них по 256 звезд. Восьмерок галактик соответственно 35 триллионов 184 миллиарда 372 миллиона 88 тысяч 32. Если просматривать каждую галактику всего лишь одну секунду, то для просмотра всех понадобится 535 миллионов 530 тысяч 777 лет. Если кто-то так и не нашел главную диагональ, то могу подсказать, что в первой стандартной галактике она проходит например через планету Lerelace.
|
2. Elite - FAQ от Дэвида Брабена
Цитата: |
13. Как удалось поместить 8 галактик с тысячами планет во всего лишь 22 Кб оперативной памяти?
Все звездные системы в Elite генерируюися псевдослучайно. Для объяснения вообразите числовую последовательность, которая выглядит как случайная — как результат сложения двух последних чисел (перед следующим, которое вы поставите в последовательность) и оставляя в качестве следующего члена последовательности числа из двух последних цифр полученной суммы. Для того, чтобы начать числовую последовательность,вам нужно выбрать два числа, отделив указанное число-остаток. Например, при выборе 12 и 34 вы получили бы последовательность 12, 34, 46, 80, 26, 06, 32, 38, 70, 08 ... Этот числовой метод известен как числовая последовательность Фибоначчи, по имени парня, который первым её придумал (*1). Существуют лучшие методы, но принцип один и тотже. Такая последовательность может быть использован для генерации названий планет, их координат, размеров, типов экономики и так далее, с программными законами исключения «глупых» вариантов. Поэтому сохраняется только «источник» — для Elite это шесть байт для каждой галактики, но в интересах экономии памяти (да — шесть байт считалось много) каждая галактика использовала «источник» со сдвигом на еденицу (это деление на два и возврат «лишнего» в начало бинарных цифр (*2)). (Первоначально в Elite было 2 в 48 степени Галактик (да, это 280.000.000.000.000 галактик), но Дэвид Джонсон-Дэвис из Acornsoft справедливо полагал, что это было бы просто глупо!)
*1. Забавный человек, скажу я Вам, этот Брабен. Называть «парнем» одного из величайших математиков 14 века, давшего основу развитию теории чисел.
*2. Насколько я помню, в Elite для ZX-Spectrum это было так: берется первый байт, сдвигается на еденицу , «выпавший» бит уходил в следующий байт и так далее, а последний «выпавший» байт последовательности становился первым в первом байте. Поскольку в байте восемь бит — вот и получилось 8 галактик, а поскольку 6 байтов по 8 бит составляют 48 бит, а каждый бит может иметь 2 состояния — вот Вам и 2 в 48-й степени галактик.
Кстати, я помню, что в 47-й галактике я бывал. Я поштудирую свои записи по этому поводу и Вам сообщу.
|
|
|
|
Crimson
560 EGP
    Рейтинг канала: 1(8) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Хм... действительно... хотя обычно под числами Фибоначчи другая последовательность подразумевается. По-моему там имелось в виду, что ГСЧ позволяет получить 280Т галактик. При этом последовательность Фибоначи скорее приведена как пример. Не знаю, может в оригинальной Элите и применялся именно этот алгоритм, но в new kind используется обычный rand стандартной библиотеки. А не, не используется. Тамошний ГПСЧ определен в random.c.
А вас, собственно, что конкретно в этих исходниках интересует то?
|
|
|
Пассажир
|
|
Да вот какраз этот самый алгоритм разброса звезд в галактиках игры и интерисует.
Ведь этот разброс только на словах случайный, а на самом деле каждая звезда занимает постоянно одно и тоже место (это при том что их много (звезд)), как если бы мы задали ее координаты (скажем в виде массива с координатами для каждой звезды), а не компьютер расчитывал бы их сам по своему алгоритму.
Мутно я сказанул, верно?
|
|
|
Crimson
560 EGP
    Рейтинг канала: 1(8) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Мутно, но верно Потому такие алгоритмы и называется генераторами псевдослучайных чисел - на самом деле они генерят последовательность чисел по вполне конкретной закономерности, но результат выглядит как совершенно хаотичный ряд чисел.
От хранения координат в масиве это отличается тем, что нельзя задать для каждой звезды определеные координаты - они будут генериться "случайно". Но зная число, которое использовалось алгоритмом "для затравки" (так называемый seed) - можно в точности воспроизвести эту "случайную" последовательность сколько угодно раз.
|
|
|
Пассажир
|
|
Вот именно этот алгоритм, по которому работают ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ мне и нужен.
Где-то на каком-то сайте я видал алгоритм через натуральный логарифм, так-теперь не могу найти ссылку на него, удалил наверное, Б Л И Н!!!
|
|
|
Crimson
560 EGP
    Рейтинг канала: 1(8) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Может через дискретный? Вообще, вам для чего ГПСЧ нужен, что стандартный rand() не устраивает?
|
|
|
Пассажир
|
|
Когда координаты расчитываются по известному алгоритму, то задав начальные параметры (как в ориджинал ELITE, где эти самые начальные параметры - это 6 галактических байтов), я смогу получить нужные мне "ПСЕВДОСЛУЧАЙНЫЕ" (фиксированные для меня, но случайные для игрока) координаты.
А через стандартный rand() комп сам задает свои входные/начальные параметры и по ним выводит действительно случайные числа, т.к. при следующем запуске rand() эти числа будут другими т.к. поменяются входные/начальные параметры.
|
|
|
Crimson
560 EGP
    Рейтинг канала: 1(8) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Есть еще функция void srand(unsigned seed)
|
|
|
Пассажир
|
|
Оппа, стоп.
С ентого места поподробнее, если мона.
|
|
|
Crimson
560 EGP
    Рейтинг канала: 1(8) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Дык, куда ж еще подробнее... при вызове srand задается тот самый начальный параметр, от которого будут плясать последующие вызовы rand.
Вообще, есть еще такие вещи как документация по стандартной библиотеке и справочная система компилятора Желательно хотя бы в общих чертях с ними ознакомиться, чтобы велосипед не изобретать.
|
|
|
Пассажир
|
|
Вод блин и тут книги читать прейдеться
|
|
|
Crimson
560 EGP
    Рейтинг канала: 1(8) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Можно не читать. Но по мне так легче потратить недельку, читая что уже за меня сделано, чем то же самое самому писать и отлаживать.
В чем проблема-то? Вызываем srand(123), и rand'ом по одному генерируем ряд. Если нужен тот же самый ряд на бис - снова зовем srand(123). Результат 100% воспроизводим от запуска к запуску.
|
|
|
Пассажир
|
|
Да ленивый я насчет почитать, мне бы готовый примерчик в кодах и дело с концом.
|
|
|
Пассажир
|
|
А у меня есть ELITE для спектрума, на assemblere
могу подогнать
|
|
|
Пассажир
|
|
Чёта я не поняла , исходник чёли?
|
|
|
AlexD
383 EGP
  Репутация: 82 Сообщения: 1084 Откуда: Тюмень, Россия Зарегистрирован: 25.04.2003
 |
|
Ну у меня есть исходник jjffe28. Только там на Сях только начало, где инициализации экрана под окошко, остальное на асме...
_________________ тетрагидрометаноптерина макарена
метилентетрагидрофолата макарена
ЭЭЭЭЭ МАКАРЕНА |
|
|
Снуч
941 EGP
   Рейтинг канала: 3(34) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
krolik75 : |
могу подогнать
|
подогнать под винды 98 можешь?
|
|
|
|
|
|
Канал Elite: «исходник, желательно на с++, игры ELITE» |
|