![]() |
игра по мотивам ККИ "Берсерк"
Вложений: 2
Работа над Дюной пока заморожена, решил занятся немного другим, и вот результат того что получилось. Это попытка перенести на телефон ККИ (коллекционную карточную игру)"Берсерк"(www.berserk.ru). Пока только учебный сэт "Легенды Руси", ибо пока строится каркас. Программа расчитана на игру в 2-ем на 1-м аппарате. На данный момент в программу перенесена только половина сэта, нельзя назначать защитника, нету кладбища, карты не покупаются а оявляются произвольно в независимоти от их уникальности и цены, есть глюки. Программу пытался зделать мультиэкранной (176 на 220 это минимум, на е50 с 320 на 240 тоже ничего), хотелось бы потом добавить возможность игры через блютуз и зделать хоть какойто АИ, но это все потом - потому как недостаточно опыта и библиотек.
PS Переключать тип атаки "7" |
Ответ: игра по мотивам ККИ "Берсерк"
Я фанат берсерка, правила знаю. Но вот КАК играть не понял.
Я долго рандомно тыкал по клавишам в эмуляторе, но так и не разобрался. Можно небольшой ман? |
Re: игра по мотивам ККИ "Берсерк"
МАН:
Значит так: В загаловке окна "Поле боя" болтается циферка, если она говорит о том какой игрок щас ходит первый или второй. Также Поле боя условно поделено на верхнюю и нижние половины (половина игрока который ходит обведена синей рамочкой) Верхняя половина 6 на 3 клеток - это поле второго игрока Нижняя половина 6 на 3 клеток - это поле первого игрока. Правая крайняя 6-я колонка (т.к. по горизонтали на поле боя в Берсерке только 5 клеток) это поля для летающих или месности (пока нитого нидругого увы нет но место оставил) соответственно того игрока на чьей половине поля они будут находится Карты игрока который ходит подсвечены бирюзовой мигающей рамочкой. В связи с тем что программа планируется мультиэкранной и минимальный экран 176 на 220 (кажись) то место на картах ограничено и я вывел на них только: Цвет карты= цвету стихии, которой принадлежит карта; очки хода и очки здоровья. Карты между игроками пока раскидываются рандомно иногда так,что могут "лежать друг на друге"(все это временно) Основной курсор-квадратик мигающий синим управляется джостиком или цифрами 2,8,4,6 если курсор наведен на карту то можно вызвать меню действий которые можно произвести с этой картой, нажав на джойстик илицифру 5. Если карта принадлежит игроку который ходит в данный момент то ему будут доступны большинство действий, а так всегда доступны пункты: "описание карты" (пока там только текст, значки уникальности стихии и отравления в разных углах портрета карты) "отмена"-закрыть меню и вернутся назад к полю боя "закончить ход" - закончть наконец игроком ход и передать управление другому игроку Пунка "защита" хоть и присутствует - не зделан, может быть вапще его выкину из этого меню и зделаю так что назначить защиту можно будет при "атаке". Если карта принадлежит тому игроку который ходит, то карту можно двигать по полю ("движение")-просто выбрав соответствущий пункт и используя управление курсором передвигать карту до тех пор пока у нее есть очки движения(курсор при этом мигает зеленым). Можно проделать атаку или действие или выстрел выбрав пункт атака "атака", курсор станет красным для выбора цели, во время атаки можно переключать атаки|действия кнопкой 7, атака происходит пока только с самой слабой силой без всяких бросков кубика (ибо пока всеравно не введенеа защита! потом все зделаю). Если карта атаковала - она закрывается до следущего хода игрока -перечеркивается красной чертой; если карта отравлена она перечеркивается зеленой мигающей чертой (ну не помещаются на картах все значки при минимальном расширении экрана). Пока вот както вот так, играть в это пока конечно нельзя, собсно пока это и не планировалось... |
Ответ: игра по мотивам ККИ "Берсерк"
Не играл в Берсерка, но в свое время возился с Magic: The gathering, даже карты сами печатали. С удовольствием поучаствую в проекте. Могу помочь с написанием библиотек :)
Ведь в зависимости от размера экрана можно комплектовать игру разными ресурсами, тогда существенно улучшится графическая часть, что несомненно добавит игре атмосферы. ЗЫ: пошел на berserk.ru :) |
Re: Ответ: игра по мотивам ККИ "Берсерк"
Цитата:
|
Re: игра по мотивам ККИ "Берсерк"
Вложений: 1
Новая версия, теперь можно назначить защитника если это возможно.. Результат обычной атаки теперь зависит от бросков кубиков в соответствии с правилами игры, правда закрытые карты щас тоже сражаются и иногда при назначении защитника программ виснет
|
Re: игра по мотивам ККИ "Берсерк"
Если есть желание, можно попробовать занятся переносом игры в сетевое пространство по ЖПРС
|
Ответ: игра по мотивам ККИ "Берсерк"
Это, я думаю, сделаем обязательно. Единственный вопрос, как будут обстоять дела с авторскими правами. Ведь игра, то российская, и правообладатель активно ее продает. :) Berserk Online существует к тому же.
|
Re: игра по мотивам ККИ "Берсерк"
Вложений: 1
эээ да я пока тока делать начал)) а вапще я за жопарез у меня идея ранее была зделать пошаговые бои через электронную почту, вместо сервака общий почтовый ящик.
...теперь расчет повреждений реализован полностью как в игре, накопилось много мусора в тексте в выходные добавлений вероятно небудет, а будет чистка кода и оптимизация... |
Re: игра по мотивам ККИ "Берсерк"
Вложений: 1
возможно теперь перестанет виснуть, за выходные нашол несколько ошибок
|
Ответ: игра по мотивам ККИ "Берсерк"
На ROKR E2 (320x240) строки текста совершенно вплотную, ощущение что даже накладываются. И строка подсказки внизу вылезает за экран пикселя на 2-3.
Запрещенные действия крестиками как-то не очень, может их другим цветом или просто перечеркнуть? Хорошо бы справку по карте на отдельную клавишу, как мне не знающему каждый раз приходится лазить :) ЗЫ: А что такое на клавише "3"? |
Re: Ответ: игра по мотивам ККИ "Берсерк"
Цитата:
|
Ответ: игра по мотивам ККИ "Берсерк"
Виснет, если нажать "Накопить фишку".
Поймал один раз такую ошибку: передвинул карту вперед, она осталась на старой позиции и появилась на новой. :(, Хм. Перечитал мануал и понял, что это две карты лежали друг на друге, просто они оказались одного номинала :) |
Re: Ответ: игра по мотивам ККИ "Берсерк"
Вложений: 2
Цитата:
Вот подправил немного графики, добавил иконки существ. Смотрится неплохо как под 176 на 208 так и 320 на 240. При движении карт по краям поля программа может зависнуть. |
Ответ: игра по мотивам ККИ "Берсерк"
Баги:
1.При движении показывается, что можно перейти и по диагонали и не учитываются карты, стоящие на пути. Часто виснет при выборе пункта "Движение". 2.Слишком узкое по высоте окно результатов атаки. Когда не вмещается текст в последней строке ничего не понять. 3.Иногда, после движения остается не запрещенным пункт "Движение", даже если больше нет очков. Может быть стоит задействовать библиотеку Lib_softkeys, хотя бы в меню? И сделать его динамическим, зачем каждый раз пропускать "Движение" если оно уже совершено. Для тестирования хорошо бы добавить пункт "Новая игра" |
Re: игра по мотивам ККИ "Берсерк"
Вложений: 1
Поправил косяки с движением-вроде больше не виснет, раздвинул текст в описании карты и при броске кубика-поползли ГУИ%(
По значкам движения можно определить максимальный радиус хода, игнорируя карты (аналогично было в героях магии и меча). Сделал пункт в меню "начать заново", если после сдачи карт будут глюки (хотя вроде не должно) то это из-за не полного обнуления старых переменных (хотя вроде учел все-глюков не видел) ЗЫ: ктонить знает как в убунте 7.04 (хотя скорее это в гноме) поставить нормальную раскладку клавиатуры при наборе на русском, раньше вроде попадалась клавиатура windows теперь чето немогу найти? |
Ответ: игра по мотивам ККИ "Берсерк"
У меня вроде ничего не поплыло. Из-за накладок карт сложно тестировать :) Реакция на нажатие клавиши очень длинная, по крайней мере у меня.
ЗЫ: на будущее надо наверное что-то похожее на XML описание карт, чтобы любые наборы включать в игру, а не зашивать это в код |
Re: игра по мотивам ККИ "Берсерк"
Вот для этого и пригодится инет :)
Поскольку сеты могут рости до бесконечности, то рационально по имеющимся у игрока идентификаторам карт загружать их данные с сервера. Таким образом минимизируется мидлет... |
Re: игра по мотивам ККИ "Берсерк"
Дело в том что бывают такие карты которые так просто програмно не опишеш, ибо очень своеобразные. Их по любому придется вшивать в клиент.
Потом чем новее сет тем труднее его будет описать - много нового вводят. Насчет того что базу карт надо держать в виде отдельного файла, который можно было бы дополнять при помощи ручек, а не при помощи вшивания в код новых карт - может быть, но тогда можно будет читерить просто подредактировав базу в клиенте. Потом сильно придется ограничить диапзон сэтов для карт которые могут быть внесены в базу из-за невозможности допустить и учесть все моменты взаимодействия их с друг другом. Потом можно ли будет держать такой сервак не нарушая авторских прав, ведь уже есть Берсерк-онлайн? Есть над чем еще подумать) |
Re: игра по мотивам ККИ "Берсерк"
Вложений: 1
Вот последняя версия программы на сегодняшний день. Уже весь учебный сэт "Легенды Руси" внесен, пока не работают только "ауры карт" (+1 к удару у Змея Тугарина и +1 к броску кубика у Князя Владимира), атака при помощи выстрела работает но сделана она пока криво - нельзя стрелять в карту стоящую рядом(см. правила). Див пока не летает. Уже можно попробовать сыграть вдвоем на 1 аппарате. За силы добра выступают стихии леса и гор, за силы зла-болота и степи.
В программе опять набралось немного маразма который надо разобрать втечении следущей недели) |
Ответ: игра по мотивам ККИ "Берсерк"
Атакую закрытого Добрыню Никитича и получаю по три повреждения каждому атакующему. Никаких модификаторов по этому поводу не нашел.
Если я правильно понял стрельба по клавише "1"? ЗЫ: может быть стоит, чтобы активный игрок был всегда внизу? Как то привычнее :) |
Re: игра по мотивам ККИ "Берсерк"
Закрытая карта - это когда она перечеркнута, для пробы решил поиграть с женой. Подобных глюков вроде того что перечеркнутая карта давала сдачи не было, зато заметил другой))) Кащей Бессмертный - действительно получился БЕССМЕРТНЫМ)) не дох и все, чинился, хотя у него только -2 от атак. Переключать аатаки/действия/выстрел -все одна кнопка во время атаки - внизу пишется что выбрано. У меня кнопка переключения = 7 ( на других аппаратах может быть и 1, незнаю)
|
Re: игра по мотивам ККИ "Берсерк"
Последняя версия: http://minidune.narod.ru/bin.zip
В выходные сваливаю в отпуск. обновления будт через неделю) |
Re: игра по мотивам ККИ "Берсерк"
Начнем с того, что сеты можно делать полностью свои. Далее, если привнести в игру новые фишки и изменить какой то существующий механизм, то с точки зрения авторских прав это будет другой продукт.
|
Re: игра по мотивам ККИ "Берсерк"
Появилась небольшая проблема на последних телефонах Nokia (в часности 6233,5300 помоему еще 6280) постоянно рябит изображение (мигает белыэм экраном) в эмуляторе и на телефонах е50 N73 такого нету, в чем может быть дело? На нокиевском сдк тоже рябит((
использую библиотеки game,cnv2,canvas картинки вывожу стандартными средствами loadimage |
Ответ: игра по мотивам ККИ "Берсерк"
Если я правильно понимаю, суть проблемы, ты используешь два объекта Canvas одновременно, и переключаешься между ними, в процессе отображения. Думаю нужно адаптировать нужные тебе функции из cnv2 и canvas под GameCanvas. Напиши, что ты используешь.
|
Re: Ответ: игра по мотивам ККИ "Берсерк"
Цитата:
uses game,cnv2,canvas,modul,dBase,main; var texture:image;//фон begin cnv2.fullscreen_mode(1);//включение фулскрина game.init; game.set_clip(0,0,GetWidth,GetHeight); game.show; texture:=LoadImage('/batle.png');//320х240 fon:=resize_image(texture,GetWidth,GetHeight); repeat DrawImage(fon,0,0); game.refresh;// отображение всего until false; end. Только я в джаве честно не очень поэтому если не трудно скажите что делать на пальцах))) |
Ответ: игра по мотивам ККИ "Берсерк"
Вложений: 1
попробуй заменить класс Lib_game вот этим
|
Re: Ответ: игра по мотивам ККИ "Берсерк"
Цитата:
Судя по всему это проблема всех телефонов Нокии серии 40!! Поставил СДК 40 серии и решил небольшой тест провести - вот простенькая программка)) //uses game{,cnv2}; var img:image; begin //cnv2.fullscreen_mode(1);//включение фулскрина //game.init; //game.set_clip(0,0,GetWidth,GetHeight); //game.show; img:=LoadImage('/icon.png'); repeat Setcolor(0,0,random(255)); drawText('Hello world!', 0, 0); DrawImage(img,random(GetWidth),random(GetHeight)); //game.refresh;// отображение всего repaint; until false; end. в таком виде она в СДК 40-вой серии запускается не в полноэкранном режиме без марганий экрана!!! подключаю библиотек CNV2: uses {game,}cnv2; var img:image; begin cnv2.fullscreen_mode(1);//включение фулскрина //game.init; //game.set_clip(0,0,GetWidth,GetHeight); //game.show; img:=LoadImage('/icon.png'); repeat Setcolor(0,0,random(255)); drawText('Hello world!', 0, 0); DrawImage(img,random(GetWidth),random(GetHeight)); //game.refresh;// отображение всего repaint; until false; end. Результат: мерцаний нет при полом экране!!! Результат конечно радует но хотелось бы обойтись без ресурсоемкого repaint!!!! Теперь отключу cnv2 и включаю game (причем как новый так и старый): uses game{,cnv2}; var img:image; begin //cnv2.fullscreen_mode(1);//включение фулскрина game.init; game.set_clip(0,0,GetWidth,GetHeight); game.show; img:=LoadImage('/icon.png'); repeat Setcolor(0,0,random(255)); drawText('Hello world!', 0, 0); DrawImage(img,random(GetWidth),random(GetHeight)); game.refresh;// отображение всего //repaint; until false; end. В результате получаем мерцания в обоих случаях в компиляции пробовал ставить Midp version 2 и 1 и NokiaAPI fullscreen мерцания так и остаются!!! выручайте( ЗЫ: кстати последняя версия:http://minidune.narod.ru/mbers27.zip добавлен магазин |
Re: Ответ: игра по мотивам ККИ "Берсерк"
Цитата:
|
Ответ: игра по мотивам ККИ "Берсерк"
Живые, то есть. Только вот с идеями плохо. В последнем классе для отрисовки используется отдельный поток, синхронизированный с классом Display, т.е. по идее лучше сделать уже нельзя. Единственное, что могу предположить, это что ты обновляешь экран чаще, чем в принципе может JVM Нокии. Попробуй ввести задержку побольше для тестов.
PS: на моторолах и сонериках все идет красиво. |
Re: игра по мотивам ККИ "Берсерк"
delay?
Ладно фиг с этой серией 40) Потом какнить. Щас вот другая проблема нашлась. Точнее пример мне нужен по работе с файлами ресурса. Задача такая: есть текстовый файл с бзой карт (да я хочу зделать именно так) с примерно таким содержанием: kolvo_card=3 //первая карта card_name='Карта 1' card_portret='card1.jpg' card_live=3 card_damage=5 //вторая карта card_name='Карта 2' card_portret='card2.jpg' card_live=4 card_damage=2 card_osob=1 //третья карта card_name='Карта 3' card_portret='card3.jpg' card_live=5 card_damage=3 card_regeneration=3 ... и т. д. а в программе хочется читать при старте программы параметры для карт из этого файла примерно какнить так var card_name:array .. of string; card_portret:array .. of image card_live,card_damage,card_osob,card_regeneration: array .. of integer for i:= 1 to количество карт указаное в файле do begin card_portret[i]:=loadimge(из файла) card_live[i]:=из файлаж card_damage[i]:=из файла card_regeneration[i]:= из файла есл оно упомянуто card_osob[i]:= из файла есл оно упомянуто end; Как првильно такое написать чтобы работало)) может есть какие нить примеры?? |
Re: игра по мотивам ККИ "Берсерк"
Поиск на форуме ничего не дал(( Примерно что то похожее накидал мож кому пригодится:
программа смотрит тестовый файл с таким содержанием: 40;300;500;600; и получает из файла 4 переменные, которые потом складывает. var res:resource; line,symbol:string; i,num,p1,p2,p3,p4,summa:integer; var_array:array [0..3] of string; begin res := OpenResource('/222.txt'); line:= ReadLine(res);//считываем строку с переменными из файла ресурса CloseResource(res); num:=0; repeat for i:= 0 to Length(line) do begin if (num<=3) then begin symbol:=getchar(line,i);//считываем посимвольно ранее считаную строку if (symbol<>';') then var_array[num]:=var_array[num]+symbol;//временная переменная складывается из текста строки DrawText(var_array[num],0,20*num);//выводим процесс обработки repaint; delay(100); if (symbol=';') then num:=num+1;//Если разделитель то переключаемся к следущей элементу массива временных переменных end; end; until num>3; //обрабатываем получая необходимые переменные из временноо массива переменных p1:=StringToInteger(var_array[0]); p2:=StringToInteger(var_array[1]); p3:=StringToInteger(var_array[2]); p4:=StringToInteger(var_array[3]); //считаем сумму вписаных в ресурс значений summa:=p1+p2+p3+p4; Setcolor(0,0,0); DrawText(IntegerToString(summa),0,100); repaint; Delay(1000); end. |
Re: игра по мотивам ККИ "Берсерк"
Теперь пытаюсь намутить каким образом определить сколько букв в 1 строчке влезет на экран мобилы. А то перенос текста у меня работает както кривовато-через подгоны. Что можно зделать????
|
Re: игра по мотивам ККИ "Берсерк"
Вложений: 1
Вот решил выложить последние исходники по "легендам Руси" на сегодняшний день. Глюкавый. Кривой. Но рабочий. Не знаю что с ними можно зделать. На данный момент я на основе этой "поделки" заново перелопачиваю весь код. И решил занятся реализацией первого сэта игры
|
Re: игра по мотивам ККИ "Берсерк"
Вложений: 1
не получается:(
давно не брался за код, за это время у меня родилась дочка) Совсем не до компа стало. Выкладываю последние наработки. Точно не помню что было сделано, из того что помню - был почищен код, добавлены летающие. База до сих пор берется из отдельного модуля-как сделать чтение базы вне мидлета я так и не понял. Потом произошло еще одно радостное событие-я переехал жить в линукс) решил занятся изучением СИ) и переписываю берсерк уже в линух, используя связки SDL+OpenGL. Начал с нуля - но уже готов полностью рабочий магазин. Как будет чтото цельное - выложу... |
Ответ: игра по мотивам ККИ "Берсерк"
aureli0, попробуй сделать версию без Lib_game, не в обиду Pilgrim'у, её проблематично использовать в более менее сложных играх.
А на счёт чтения базы могу посоветовать код из своего Сталкера, он конешно требует переделки, но всё же лучше, чем посимвольное чтение)) делал для чтения внутримидлетского xml-файла, но думаю переделать не сложно будет. Мой вариант считывает любой параметр с текущей строки txt ресурса Res (пример параметра CardName="Мразень", пример считывания name:=reads('CardName'); ), плюс любую строку можно интерпретировать в мидлете как условие или команду(но это надо писать самому). PHP код:
PHP код:
|
Ответ: игра по мотивам ККИ "Берсерк"
В принципе можно будет работать и с твоим примером базы, немного видоизмененным:
<set="Легенды Руси" kolvo_card="3"> //первая карта name="Карта 1" portret="card1.jpg" live="3" damage="5" type="simple" //вторая карта name="Карта 2" portret="card2.jpg" live="4" damage="2" type="rare" param="osob" value="1" </card> //третья карта name="Карта 3" portret="card3.jpg" live="5" damage="3" type="unique" param="regeneration" value="3" param="exp. in attack" value="1" param="dec dice" value="-1" </card> </set> То есть в строчке с именем карты можно будет хранить стандартные параметры(img карты, цена, hp, дамаг, кол-во шагов, ... и тип карты). Взависимости от типа карты можно будет подгружать особые параметры, которые хранятся по одному на строчку в формате имя_параметра="regeneration" значение_параметра="3". Строка </card> означает конец чтения особых параметров карты. |
Re: Ответ: игра по мотивам ККИ "Берсерк"
Цитата:
|
Часовой пояс GMT +4, время: 04:46. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot