forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   Разработка игры "DooM story" (http://forum.boolean.name/showthread.php?t=8939)

cherepets 18.08.2009 14:15

Разработка игры "DooM story"
 
Привет! Делаю игрушку на мидлет паскале. Многое сделал, скоро выложу демку. Но возникла проблема: сохранения.
Нормально использовать для этой цели хранилища не вышло. Хранить сейвы в файловой системе телефона более чем глупо...
Тут приходит в голову решение знакомое людям помнящим древние консоли: пароль.
Игра - рпг, так что в пароль в неявном виде должны входить и характеристики героя. Сделать такой пароль оказалось достаточно просто.

Но есть опять же проблема! :SOS:
Введенный пароль (11 символов) необходимо разбить необходимо разбить на части. Простое решение:
Цитата:

...
a :string[3];
b :string[5]
...
В мидлет паскале оказалось нельзя так делать. А как же поступить то?

cherepets 18.08.2009 15:12

Ответ: Помогите разобраться с длиной пременной
 
Уф, решение нашлось. Если у кого будет похожая проблема, то:
Цитата:

...
a:=copy(c,0,3);
b:=copy(c,3,5);
...

{0,3 и 3,5 - первый и последний символ}

DIMMON4IK 18.08.2009 18:41

Ответ: Помогите разобраться с длиной пременной
 
Ждём DEMO:pure_magic:

Трава 18.08.2009 20:52

Ответ: Помогите разобраться с длиной пременной
 
Знаете чё, друзья, прежде чем задавать вопрос - полистайте мануал по МП. Хорошая штука знаете ли

Tadeus 18.08.2009 21:13

Ответ: Помогите разобраться с длиной пременной
 
Цитата:

Сообщение от Трава (Сообщение 115079)
Знаете чё, друзья, прежде чем задавать вопрос - полистайте мануал по МП. Хорошая штука знаете ли

Да уж мы видели твою любовь к его чтению...

Трава 18.08.2009 21:16

Ответ: Помогите разобраться с длиной пременной
 
:-D Ну-у-у... Не надо мне напоминать грешки той недели :-D

cherepets 19.08.2009 17:21

Ответ: Помогите разобраться с длиной пременной
 
Давайте я вам скрины чтоль пока покажу:


Думаю идея игры сразу становится понятна...

NitE 19.08.2009 19:22

Ответ: Помогите разобраться с длиной пременной
 
о боже как плохо ты владеешь графикой

demon112 19.08.2009 19:45

Ответ: Помогите разобраться с длиной пременной
 
идея непонятна)

cherepets 19.08.2009 20:00

Ответ: Помогите разобраться с длиной пременной
 
NitE, а что именно так тебя ужасает?
Просто я сомневаюсь пока, что лучше: скрины моделей (то что ты видишь) или спрайты из дум64.

Если прям очень уродливо, то попробую спрайты....

cherepets 19.08.2009 20:01

Ответ: Помогите разобраться с длиной пременной
 
demon112, идея проста: дум + фф

NitE 19.08.2009 20:34

Ответ: Помогите разобраться с длиной пременной
 
конкретно просто ужасно вылядит первый скрин, гд ты попытался кривым шрифтом и невписывающимся шрифтом чтото дописать

cherepets 19.08.2009 20:49

Ответ: Помогите разобраться с длиной пременной
 
О_о
Я ожидал, что ты скажешь либо про уродца на 2ом, либо меню выбора на 2ом и 3м...

Сверху собственно надпись дум взята из оригинала, а слово стори тип хайтечно))
Ладно, пасиб, что сказал, постараюсь как-нить посимпотяшней сделать...

NitE 19.08.2009 20:55

Ответ: Помогите разобраться с длиной пременной
 
не, меню конечно тоже не конфетка, но его ещё можно стерпеть, в отличие от надписи на первом - если поправишь будет здорово ))

cherepets 19.08.2009 21:10

Ответ: Помогите разобраться с длиной пременной
 
Ну, вот, слегка изменил.

Теперь шрифт точно в тему (id software тот же юзали). Пример

NitE 19.08.2009 21:16

Ответ: Помогите разобраться с длиной пременной
 
дай плиз исходную картинку без изменений

cherepets 19.08.2009 21:22

Ответ: Помогите разобраться с длиной пременной
 
Вложений: 1
Вот из этого я собирал:
Марс
Лого
Немного другое лого

+ см прикрепленный файл

cherepets 19.08.2009 21:56

Ответ: Помогите разобраться с длиной пременной
 
Как только окончательно разберусь с перемещением персонажа, сразу будет демо.

NitE 19.08.2009 22:27

Ответ: Помогите разобраться с длиной пременной
 
Вложений: 1
\\\\

cherepets 19.08.2009 22:40

Ответ: Помогите разобраться с длиной пременной
 
Спасибо за попытку помочь, но лого дум3 + марс из дум3 лучше не вставлять. Игра основана на сюжете первого дума (вернее даже книги по первому думу).
Но в принципе симпатично)))

temned 19.08.2009 22:40

Ответ: Помогите разобраться с длиной пременной
 
ну вот надпись стала лучше

NitE 19.08.2009 23:10

Ответ: Помогите разобраться с длиной пременной
 
Вложений: 1
марс - настоящий
лого - старо как мир

cherepets 19.08.2009 23:21

Ответ: Помогите разобраться с длиной пременной
 
Да, теперь совсем здорово)))
О_о мир появился в 1993???

Чегот меня глюкнуло кстати в думе не был глав гер на марсе... Ну лан, небольшая отсебятина - не страшно)))

Может склероз пробил... 93й все таки давно был...

cherepets 20.08.2009 21:35

Ответ: Помогите разобраться с длиной пременной
 
Вложений: 1
Вот демка.
Я бы это назвал тек демо, т.к. она только показывает что в принципе реализовано/будет реализовано.
(т.е. доделано все будет не скоро)

+ ищу желающих помочь (нужна помощь в рисовании сцен для боя и перемещения персонажа)

cherepets 20.08.2009 21:40

Ответ: Помогите разобраться с длиной пременной
 
Тема Помогите разобраться с длиной пременной :-D

ViNT 20.08.2009 22:13

Ответ: Помогите разобраться с длиной пременной
 
Цитата:

Сообщение от cherepets (Сообщение 115521)
Тема Помогите разобраться с длиной пременной :-D

Переименовал и перенес в "Проекты на MIDlet Pascal".

cherepets 20.08.2009 23:08

Ответ: Разработка игры "DooM story"
 
ViNT, спасибо)

cherepets 22.08.2009 13:56

Ответ: Разработка игры "DooM story"
 
Возник у меня еще вопрос:
Нужно написать текст, выровненый по правому краю.
В хелпе подобного не нашел, т.е. в мидлете таких функций нет.
Кто знает, может в либе какой есть? Или просто как сделать?

abcdef 22.08.2009 21:43

Ответ: Разработка игры "DooM story"
 
глянь алгоритм из fallout qest в моих исходниках.

___
хотелось бы чтоб твой интерфейс адаптировался под разрешение экрана, a то не помещается в 176х208

cherepets 23.08.2009 13:36

Ответ: Разработка игры "DooM story"
 
abcdef, прочитал целиком исходники. Выравнивания не нашел.
Или ты к тому что можно использовать шрифт наподобие курьера и считать символы?

Насчет разрешений: вся графика в игре растровая, т.е. под 176х208 надо её всю переделать. Под 176х208 будет отдельная версия, а владельцы 176х220 вероятно будут довольствоваться ей же, но с черной полосой внизу.

Вобще я советую пускать игру через кемулятор, но при запуске нажимать alt+r, т.к. иначе последняя строка текста с экрана не видна.

abcdef 23.08.2009 19:24

Ответ: Разработка игры "DooM story"
 
чтобы сделать выравнивание по правому краю достаточно выводить строку с конца

cherepets 23.08.2009 20:53

Ответ: Разработка игры "DooM story"
 
В смысле как-то так?
Код:

program abcdef;

procedure right(str :string; x,y :integer);
var 
  i :integer;
begin
  for i:=0 to length(str)-1 do
  begin
drawtext(getChar(str,length(str)-1-i),(x-i*8-8),y);
  end;
end;

begin
right('abcdef',240,20);
repaint;
delay(10000);
end.

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

Tronix 23.08.2009 23:23

Ответ: Разработка игры "DooM story"
 
Есть такая функция function GetStringHeight(text: string): integer;
, как написано в хелпе: Returns the height (in pixels) for showing the 'text' on display in the current font. Поэтому я думаю, что с помощью нее труда вывести текст справо не составит труда..

cherepets 23.08.2009 23:30

Ответ: Разработка игры "DooM story"
 
Спасибо))
Только в нашем случае getStringWidth нужно. Высота нам любая подходит.
В хелпе искал подобное в строках, а оно в рисовании оказалось...

Tronix 23.08.2009 23:36

Ответ: Разработка игры "DooM story"
 
Цитата:

Сообщение от cherepets (Сообщение 115928)
Спасибо))
Только в нашем случае getStringWidth нужно. Высота нам любая подходит.
В хелпе искал подобное в строках, а оно в рисовании оказалось...

Да, сорри, после свадьбы я, перепутал. Конечно getStringWidth я имел ввиду. ;)

abcdef 24.08.2009 09:54

Ответ: Разработка игры "DooM story"
 
я бы написал для всей строки сразу: drawtext(s, maxw-getStringWidth(s),ypos);
где s - строка текста, maxw-граница правого края, ypos - у координата
и для посимвольного вывода:
Код:

var
  cw : array[0..255] of integer;
  i,p,c : integer;
begin
  for i:=0 to 255 do cw[i]:=getStringWidth(chr(i));
  // затем подставляем сюда ширину русского шрифт желательно в cp1251 (win) или cp866 (dos)
  ...
  p:=maxw;
  for i:=length(s)-1 downto 0 do
  begin
    c:=ord(getChar(s,i));
    p:=p-cw[c];
    ... делаем преобразование русских символов в utf8 и выводим
    drawtext(chr(c),p,ypos);
  end;

___
p.s. png нужно оптимизировать, 500 кб слишком много. Лучше сразу делать графику под разрешение 176x208 (176x220) т.к. они наиболее распространены, или 128x128 чтоб работало практически везде.

cherepets 24.08.2009 12:32

Ответ: Разработка игры "DooM story"
 
Насчет png: часть картинок оптимизирована, а те для которых важна полупрозрачность - нет.
Все ресурсы сейчас 575кб. Думаю полная игра будет ~1.5мб.
Т.к. сначала делаю под 240х320, а там телефоны в основном мощные, то думаю это норм.

176х208 уже не так сильно распространены. Года 2 назад еще может быть, а сейчас уже почти у всех 240х320, так что я даж не запаривался о разрешении. И вобще уже стоило бы задумываться о разрешении как на 5800 и тач скрине.

AVIZO 24.08.2009 13:38

Ответ: Разработка игры "DooM story"
 
А собрать универсальную, под все разрешения от 128*128 до 320*240, никак?

cherepets 24.08.2009 14:18

Ответ: Разработка игры "DooM story"
 
AVIZO, мидлет паскаль умеет ресайз картинкам делать, векторную графику поддерживает или ты предлагаешь запихать туда графики на все разрешения (будет игра на 10 метров)?

В нашем (как и в большинстве других) случае придется делать несколько версий. Я ограничусь 2мя: 240х320 и 176х208. За 176х208 возьмусь когда закончу 240х320.

abcdef 24.08.2009 15:40

Ответ: Разработка игры "DooM story"
 
если делать средствами MP, то картики без прозрачности лучше соединить в однин файл, а разбивать на отдельные при загрузке. А лучше создать свой формат изображений с фиксированным набором цветов. в сети много советов как оптимизировать j2me архивы
__
p.s. на этом форуме у немногих есть устройства с разрешением 240х320, а смотреть в эмуляторе удовольствия мало

cherepets 24.08.2009 16:16

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

Так что лучше продолжать как есть.
К тому же сделано еще далеко не все. И о вещах второстепенной важности задумываться пока не стоит.

Опрос своего кл из аси (разрешение - люди):
<176x208 - 4
176х208/176х220 - 8
240х320 -19
>240х320 - 6

Dj_Alex 25.08.2009 01:23

Ответ: Разработка игры "DooM story"
 
да пускай делает 240х320 если у него тел с таким разрешением. я к примеру делаю для себя 176х220 и тестю на теле, а уже потом делаю версию 240х320. или сразу делаю мультискрин.

насчет демо, то плавающие астероиды в меню лучше сделать под названием игры. а курсор лучше сделать привязанным к пунктам меню, то есть. сначала он стоит на 1 пункте, потом нажимаешь вниз, он перемещается сам ко 2 пункту хоть скачком, хоть плавно, но штоб не приходилось самому двигать до нужного места.

еще
в самом начале появляется лого cherepets game. в ресурсах лежат 2 изображения. один из которых затемненный. затемнить можно с помощью либы effects и тем самым второе изображение не нужно.

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

да и сжать изображения тоже не помешает. 128 цветов и индексной прозрачность спокойно хватит для java игры.

размер архива все же критичен для некоторых телефонов.

cherepets 25.08.2009 13:42

Ответ: Разработка игры "DooM story"
 
Цитата:

а курсор лучше сделать привязанным к пунктам меню, то есть. сначала он стоит на 1 пункте, потом нажимаешь вниз, он перемещается сам ко 2 пункту хоть скачком, хоть плавно, но штоб не приходилось самому двигать до нужного места.

еще
в самом начале появляется лого cherepets game. в ресурсах лежат 2 изображения. один из которых затемненный. затемнить можно с помощью либы effects и тем самым второе изображение не нужно.
Хм, а вот насчет либы - мысль очень хорошая, и в меню пункты подсвечиваться будут тогда))

Цитата:

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

Цитата:

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

Dj_Alex 25.08.2009 14:38

Ответ: Разработка игры "DooM story"
 
Цитата:

Сообщение от cherepets (Сообщение 116180)
Делал отдельными картинками, т.к. стандартными криво выходит - результат на моем телефоне, на чужом и на эмуле всегда разный выходит... Нормально только если в форме, но это не особо красиво.

юзай графические шрифты

cherepets 25.08.2009 14:52

Ответ: Разработка игры "DooM story"
 
Думаю разница будет невелика если я просто зажму картинки до максимума (2 цвета: белый + транспанент)
Собственно помощь показанная в демке - это и есть вообще вся помощь.

cherepets 25.08.2009 17:24

Ответ: Разработка игры "DooM story"
 
Ээ... Графических шрифтов вероятно не будет((
При подключении любой либы мидлет у меня отказывается что-либо компилить(((

Хз почему...

DIMMON4IK 25.08.2009 18:11

Ответ: Разработка игры "DooM story"
 
Совместимость с windows 95 или 98 или 2000 ставил?

cherepets 25.08.2009 18:25

Ответ: Разработка игры "DooM story"
 
Да, уже пробовал.
Вобщем-то пофиг, мне они не сильно и нужны))

cherepets 12.09.2009 22:09

Ответ: Разработка игры "DooM story"
 
Вложений: 2
Ну, вот вроде и все!
Смотрите, отписывайтесь))

DIMMON4IK 12.09.2009 22:48

Ответ: Разработка игры "DooM story"
 
:super:

Android 13.09.2009 00:29

Ответ: Разработка игры "DooM story"
 
На эмуле запускается, но разрешение слишком большое :) АДаптировал бы под тач скрин, затестил бы на мобилке ))

Dj_Alex 13.09.2009 20:21

Ответ: Разработка игры "DooM story"
 
О.о вот ет размер. графику не помешало бы сжать, ты бы еще в бмп перегнал.
курсор - 3 кб..... в фш открыл и сохранил - получилось около 300 байт.
остальную графику тоже не помешает сжать, 128 цветов за глаза хватит на телефон, пускай там хоть 16 мильёнов цветов.

abcdef 14.09.2009 00:32

Ответ: Разработка игры "DooM story"
 
в jar-файле без разницы в каком формате хранятся графические файлы, т.к. всё и так упаковывается, а после загрузки хранится в памяти в собственном формате. Единственный минус - в BMP нет прозрачного цвета - его нужно эмулировать.
___
оптимизировать размер лучше созданием одного файла со всеми изображениями (будет меньше служебной информации), содержащего фиксированную, минимальную палитру

cherepets 14.09.2009 12:04

Ответ: Разработка игры "DooM story"
 
Цитата:

фиксированную, минимальную палитру
Вроде это мне много раз советовалось...
Нет, то что сейчас в пнг-28, то в нем и останется, т.к. полупрозрачность на мой взгляд в них важна.

Ну так чего? Какие баги, просто недоработки нашлись?

Dj_Alex 14.09.2009 14:46

Ответ: Разработка игры "DooM story"
 
Цитата:

Сообщение от abcdef (Сообщение 118470)
в jar-файле без разницы в каком формате хранятся графические файлы, т.к. всё и так упаковывается, а после загрузки хранится в памяти в собственном формате.

это мне известно, все же размер мидлета для некоторых телефонов критичен.

DannN 18.09.2009 12:14

Ответ: Разработка игры "DooM story"
 
Супер игрушка !

cherepets 20.09.2009 23:54

Ответ: Разработка игры "DooM story"
 
Dj_Alex, рад что нравится.

Слушайте, а если я буду каждую секунду делать скриншот области 240х320, ресайзить его и выводить на то что есть, то ведь получится мультискрин? Стоит такую лажу делать или же ресайз всех ресуросов и переделывание координат?

Tronix 21.09.2009 11:02

Ответ: Разработка игры "DooM story"
 
Цитата:

Сообщение от cherepets (Сообщение 119241)
Dj_Alex, рад что нравится.

Слушайте, а если я буду каждую секунду делать скриншот области 240х320, ресайзить его и выводить на то что есть, то ведь получится мультискрин?

Мне кажется, что такую фигню можно делать лишь для программ почти статичных, что-то типа вывода информации о чем-то (справочники), возможно "звездного неба", но не более. Иначе будет тормозить что просто ппц. Тем более если считать априори, что у девайсов с маленьким разрешением экрана слабый (медленный) проц. Тут скорее бы наоборот покатило - для экрана 320x200 ресайзить в сторону увеличения для него картинки.

Мне кажется, нужно просто ресайзить все рессурсы заранее; или при инициализации программы.

PS: у меня сименс c75, буду рад увидеть твою игрушку для него )

cherepets 22.09.2009 11:07

Ответ: Разработка игры "DooM story"
 
Просто у меня не выходит нормально текст умещать на 176х. Ресайзить скрины было бы самым простым решением, но наверно не лучшим...
Сейчас думаю как бы это было правильно замутить... Наверно тупо сделать процедуру для такой лажи и перед каждым репаинтом её вызывать...

Игра не особо динамичная, так что сойдет надеюсь...

cherepets 22.09.2009 11:35

Ответ: Разработка игры "DooM story"
 
Вложений: 1
На эмуле пашет только если экран больше чем 240х320, а на мелких нет(((
У кого маленький, проверьте тоже хрень или как?

Tronix 22.09.2009 12:12

Ответ: Разработка игры "DooM story"
 
Цитата:

Сообщение от cherepets (Сообщение 119349)
На эмуле пашет только если экран больше чем 240х320, а на мелких нет(((
У кого маленький, проверьте тоже хрень или как?

На телефоне у меня не пашет, пишет MIDlet initialization failed. java.lang.NoClassDefFoundError: com/nokia/mid/ui/FullCanvas.
Но больше всего пугает размер - 1,5Mb !!! Надо что-то с ресурсами делать, в любом случае. Такая игра ну никак не должна быть больше 200-300 Kb (да и то многовато).

По первой ошибке могу посоветовать использовать либу Lib_scodes, с помощью которой можно определить платформу телефона. Если Нокиа, то вызывать com/nokia/mid/uiFullCanvas, если другие телефоны - не вызывать.

Но еще раз повторюсь - вес в полтора мега - это слишком круто. У меня 100% не запуститься с таким размером мидлета.

cherepets 22.09.2009 13:21

Ответ: Разработка игры "DooM story"
 
Вложений: 1
Судя по ошибке дело в настройках мидлета.
Тоже самое с обычным мидп2 + все ресы сильно пожал (кач-во тошнотворное, но размер вышел 970кб... лажа блин...):

DIMMON4IK 29.09.2009 20:19

Ответ: Разработка игры "DooM story"
 
А если твою игру разделить на несколько эпизодов напр. так :
DooM story episode 1
DooM story episode 2
. . .

И все мисии равномерно разнести по ним?

Trazzy 30.09.2009 04:07

Ответ: Разработка игры "DooM story"
 
#63 - согласен! это наверное лучший вариант..


Часовой пояс GMT +4, время: 05:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot