forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на BlitzMax (http://forum.boolean.name/forumdisplay.php?f=106)
-   -   Vivo (http://forum.boolean.name/showthread.php?t=16218)

Nex 31.01.2012 08:40

Ответ: Vivo
 
Цитата:

Сообщение от Program23 (Сообщение 218182)

Градиент в таких маленьких изображениях не есть хорошо.

Цитата:

Сообщение от Nikich (Сообщение 218184)
А, и насчёт сети. Пока ответить не могу, так как вообще ничего об этом не знаю. Для меня интернет пока сравним с магий вуду.

Там не особо сложно. Надо лишь понять принцип работы. :)

Nikich 31.01.2012 09:20

Ответ: Vivo
 
Сейчас прочитал статьи, вроде понял, но не знаю что выбрать: UPD или TCP? По-моему ТСР лучше, хотя пинг больше будет. Но и информации нужно минимум передавать:) А если схитрить, то даже карту передавать не надо будет. Пусть игроки которые хотят играть вместе, пишут один и тотже сид мира. Тогда такой же мир сгенерируется на всех машинах, и надо будет передавать только информацию о координатах игрока, новых блоках и разрушении старых:)

Nex 31.01.2012 09:57

Ответ: Vivo
 
В UPD информация может потеряться, а в TCP всегда дойдет поэтому и пинг больше. В общем используй TCP.
Передавать можно и много информации главное чтобы одним "пакетом" все передавалось.

Program23 31.01.2012 10:39

Ответ: Vivo
 
Вложений: 6
UPDATE:

Иконки:
Вложение 16083 - кровать
Вложение 16084 - яблоко(красное)
Маска иконок: 255,0,255

Текстурки:
Вложение 16081 - деревянный пол
Вложение 16085 - камень(без границ)
Вложение 16086 - камень(с границами)
Вложение 16087 - пенек

reumep 31.01.2012 14:01

Ответ: Vivo
 
Цитата:

Сообщение от Nikich (Сообщение 218184)
Супер!
И можете поделиться идеями о том, каким сделать крафт? Как сделать его максимально удобным?
А, и насчёт сети. Пока ответить не могу, так как вообще ничего об этом не знаю. Для меня интернет пока сравним с магий вуду.

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

Program23 31.01.2012 14:04

Ответ: Vivo
 
Согласен с reumep, крафт в Терарии намного удобен,как в реализации,так и в использовании.

reumep 31.01.2012 14:10

Ответ: Vivo
 

вот такой крафт в террарии, извините за читерство(сделал много патронов и проводов, остальное добыто честным путем)

Colossus 31.01.2012 14:24

Ответ: Vivo
 
в меню все повисло, у тебя в игре ничего еще толком и нет а хавает 250метров оперативки, оптимизировать надо как бэ...

Nex 31.01.2012 15:01

Ответ: Vivo
 
Цитата:

Сообщение от Colossus (Сообщение 218237)
в меню все повисло, у тебя в игре ничего еще толком и нет а хавает 250метров оперативки, оптимизировать надо как бэ...

Это все из за того что для каждого тайла загружается картинка, а не берется хендл картинки.

Nikich 31.01.2012 15:32

Ответ: Vivo
 
Ок, тогда буду делать как в Террарии. И можете сказать подробнее, как оптимизировать загрузку картинок? Я думал может сделать так, чтобы картинки загружались когда игрок подходит близко к объекту.

reumep 31.01.2012 16:20

Ответ: Vivo
 
Слушай, выложи исходник

и еще: шел влево, через некоторое время осталась только земля, блоков нет

Nikich 31.01.2012 17:50

Ответ: Vivo
 
Colossus, попробуй в cnfg.txt поменьше поставить 3 последних значения. И игра не виснет, а генерирует камни и деревья.
А на счет камней, это из-за того что они появляются только рядом с игроком.
Исходник выложу сегодня или завтра.

Nex 31.01.2012 18:10

Ответ: Vivo
 
Цитата:

Сообщение от Nikich (Сообщение 218247)
И можете сказать подробнее, как оптимизировать загрузку картинок? Я думал может сделать так, чтобы картинки загружались когда игрок подходит близко к объекту.

Если карта больше чем экран, то делай все тайлы карты в одном изображении, загружай через LoadAnimImage () при старте программы (загружать надо только один раз(!)) потом рисуй DrawImage image,x,y,map (x+offset_x,y+offset_y)
image - переменная (хендл) картинки которая загружена через LoadAnimImage.
x,y - координаты. тут все так же надо умножать на размер картинки
map (x+offset_x,y+offset_y) - это массив карты в котором содержатся id клеток.
Дальше надо будет завести 2 переменных, которые отвечают за смещение по X и Y (допустим offset_x и offset_y) и в зависимости от нажатия кнопок увеличивай/уменьшай эти переменные.
В итоге допустим если в массиве map (1,1) =1 (допустим камень), то рисуется 1 кадр загруженного изображения (надо чтобы в первом кадре тоже был тайл камня) и получается что на экране рисуются только те клетки, которые на экране из за чего плюс к fps. Мисус в том, что тайлы будут не много резко двигаться в стороны при движении игрока.

Program23 31.01.2012 20:01

Ответ: Vivo
 
Для начала не помешало бы изменить вот что:
Цитата:

Global R6=ReadLine(file)
Добавить шестой параметр в конфиг.

Цитата:

Graphics R1,R2,32,R6
И этот параметр означает - режим экрана.

П.С. Конечно это очень отменный :shit:-код

reumep 31.01.2012 20:21

Ответ: Vivo
 
блин, код неотформатирован

Nikich 31.01.2012 21:08

Ответ: Vivo
 
Пфф, я вообще удивлён что в нём что-то понять можно. Половина Global вообще не используется, и ещё 25% вычисляются, но тоже бесполезны:) На момент написания большей части кода меня вообще не волновала оптимизация, а когда начала волновать, уже не хотелось что-то переделывать. Скорее всего там и остатки от 3D игры остались:)
UPD:
Кто-нибудь знает почему дебаггер ест 30 фпс?

Nikich 02.02.2012 23:01

Ответ: Vivo
 
Так кто-нибудь поможет с оптимизацией?

reumep 03.02.2012 16:55

Ответ: Vivo
 
я ленивая хурма, я даже не могу свой проект дописать, а твой оптимизировать - тем более.
Просто я открываю сырцы, внимательно смотрю код, запускаю, через минуту типа такой "да ну нафиг" и иду играть в скайрим

Nikich 03.02.2012 18:27

Ответ: Vivo
 
:-D
Я думал я один такой.

Nikich 03.02.2012 19:04

Ответ: Vivo
 
Гм. Не могу изменить первый пост (видимо стоит ограничение на изменение сообщений по дате) так что залью сюда. Во-первых, фпс просто обязано повысится. Во-вторых, новая система генерации мира. Два последних значения в "cnfg.txt" указывают кол-во камней на экране, а не на всей карте. Ну, сами увидите.
И вопрос возник: Dim lol(9000000,9000000) выдаст ошибку при создании. Мол, уж слишком большой массив. Кто-нибудь знает, чему равно максимально допустимое значения для количества элементов массива?

RBK 03.02.2012 19:49

Ответ: Vivo
 
Целое число занимает в памяти 4 байта места, массив размером 10x10 займет 10*10*4=400 байт. Аналогично можешь посчитать для другого массива.

Nikich 03.02.2012 20:24

Ответ: Vivo
 
Спасибо, но каков лимит?
И ещё, требуется экран который показывается при смерти ГГ. Надпись "You died!", оформление любое.

Igor 03.02.2012 21:26

Ответ: Vivo
 
Цитата:

Спасибо, но каков лимит?
оперативная память юзера.
Если одна ячейка занимает 4 байта, то массив 30000*30000 уже займёт около (а может и больше) 4 гигабайт оперативки

Nikich 04.02.2012 00:05

Ответ: Vivo
 
С великой гордостью сообщая Вам о выходе новой версии - 0.0.7 alpha. Это просто нечто.
-Голод.
-Деревянный пол.
-Система крафта.
-Фиксы багов с сохранениями и загрузками.
-Интерес=8990

Randomize 04.02.2012 00:37

Ответ: Vivo
 
В целом
1) В папке беспорядок. Неплохо было бы разложить ресурсы по папочкам. Тебе самому будет потом проще разгребать ресурсы.
2) BMP. Без спорно хороший формат, но может стоит для маленьких изображений использовать png, а для больших(свыше 256x256) jpg? Это уменьшит в целом вес проекта.
3) Файлы сохранений текстовые - это не совсем оправдано. Может использовать WriteInt WriteFloat вместо WriteLine? Это увеличит скорость чтения файла и уменьшит его вес.
4) Где оконный режим?
5) Где ReadMe.txt описывающй управление? (может есть кнопки о которых мне не известно?)


Геймплей
1) При переходе с экрана на экран есть большая вероятность оказаться в камне
2) При движении наискосок двойная скорость перемещения
3) При выходе в меню не возобновить игру никак кроем Load
4) При любом клике герой начинает "бить". Может стоит делать анимацию удара как минимум только в том случае если мы кликнули рядом с героем?
5) Глав герой афроамериканец? :)

В целом работает не тормозит. Переходы с экрана на экран - хороший подход к генерации большого мира :)

И напутствие: Не спеши с сетью. Сделай сингл проходимым и насыщенным сначала.

Nikich 04.02.2012 01:15

Ответ: Vivo
 
Большое спасибо за советы. Пожалуй сейчас и займусь исправлением этих недочетов.
На счет WriteInt да, согласен, но пока менять не стану, так как WriteLine удобнее отслеживать.
И герой не афроамериканец, это коричневые волосы:)
И для тех кто хочет помочь: нужно животное. Какое, выбирайте сами( конечно кроме всяких полярных медведей, пингвинов и тд.(герой как ни как на острове тропическом:) )). Можно и без анимации. Размеры произвольные, но желательны в какой-нибудь степени двойки(256х64, 128х32 и тд). Самым подходящим является краб.
И ещё. Сколько может переносить один человек килограммов груза? 25 кг? Речь идёт не о спортсмене.

Nikich 04.02.2012 19:08

Ответ: Vivo
 
О да, новый апдейт. Смена оконного и полноэкранного режимов("cnfg.txt" последнее значение( 1-полный экран,2- оконный режим)). Шерсть. Новый генератор мира( не знаю как будет на других разрешениях, но на 1280х1024 очень хорошие горы выходят). Оптимизация инвентаря. Ну и фиксы багов, конечно.

reumep 04.02.2012 21:05

Ответ: Vivo
 
Килограмм 30, если в рюкзаке

Program23 04.02.2012 23:45

Ответ: Vivo
 
Вложений: 1
Вложение 16114
попытка создать крабика на нетбуке

Nikich 05.02.2012 00:23

Ответ: Vivo
 
По-моему забавный:) Значит он и будет первым мобом в игре.
25кг пока сойдёт, может потом, если дисбаланс будет, больше поставлю. А, и что добавлять в следующем апдейте? Либо вникать в создание AI и добавить крабика, либо сделать кровать и сон, либо добавить лужи с водой? Расположены варианты по сложности, от самого сложного к лёгкому.

Nikich 05.02.2012 00:49

Ответ: Vivo
 

И ещё. Что посоветуете моему другу? Вот что он пишет:
Код:

Graphics 1366,768,32,1
global x=1
global y=1
setbuffer backbuffer()
global player=loadimage("player.bmp")
midhandle player
maskimage player,0,0,0
drawimage player,x,y

function updateplayer()

if keydown (200)
y=y-5
drawimage player,x,y
endif
...
End function
while 1=1
updateplayer()
flip
cls
wend

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

shybovycha 05.02.2012 00:54

Ответ: Vivo
 
Цитата:

Сообщение от Nikich (Сообщение 218623)

И ещё. Что посоветуете моему другу? Вот что он пишет:
Код:

Graphics 1366,768,32,1
global x=1
global y=1
setbuffer backbuffer()
global player=loadimage("player.bmp")
midhandle player
maskimage player,0,0,0
drawimage player,x,y

function updateplayer()

if keydown (200)
y=y-5
drawimage player,x,y
endif
...
End function
while 1=1
updateplayer()
flip
cls
wend

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

Сваливайте на неопытность - понимание логики работы программы приходит не сразу ;)

Nikich 05.02.2012 00:59

Ответ: Vivo
 
Надеюсь:) А это вообще нормально начинать изучение программирования с создания игры?

Nikich 05.02.2012 01:14

Ответ: Vivo
 
Чистый блиц дружит с .png? Что-то у меня не очень. Крабик рисуется кривым каким-от, а вот в .bmp всё нормально:)
P.S. краб очень хороший! Скорее всего, он будет логотипом игры:)
P.P.S. краб выглядит через чур хорошо, так что следующий апдейт точно рассчитан на него.

reumep 05.02.2012 13:33

Ответ: Vivo
 
Я бы тебе посоветовал сначала кровать и еду добавить
И да, не забудь еще криперов сделать(люблю кубач)

Nikich 05.02.2012 14:24

Ответ: Vivo
 
А не будет ли это плагиатом? Может лучше крабики взрываться будут?:)
И тут вопрос возник: чем TileImage от DrawImage отличается? У меня земля DrawImage рисуется, хотя сейчас узнал что TileImage служит функцией для создания заднего фона. Есть ли существенная разница?
P.S. еда уже есть(яблоки).

Nikich 05.02.2012 17:22

Ответ: Vivo
 
И так, первая версия с крабиком. Она только для теста, ничего не добавлено(кроме краба, конечно). Пока он ходит в случайные стороны. Задача для теста - может ли краб пройти через камни, деревья, каменный стены или нет?

shybovycha 05.02.2012 17:44

Ответ: Vivo
 
Цитата:

Сообщение от Nikich (Сообщение 218674)
И так, первая версия с крабиком. Она только для теста, ничего не добавлено(кроме краба, конечно). Пока он ходит в случайные стороны. Задача для теста - может ли краб пройти через камни, деревья, каменный стены или нет?

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

За подробностями см. задачу олимпиады по программированию 'дцатого года "лабиринт".

Nikich 05.02.2012 17:48

Ответ: Vivo
 
Вот как я сделал мозг крабику, вроде не жалуется:
Код:

Function UpdateCrab()
For cr.crab=Each crab
 If MilliSecs()-tcr>200 Then
 tcr=MilliSecs()
 chn=Rnd(50)
 If chn=1 Then
 crdeltax#=1
 crdeltay#=0
 cr\image=crab90
 EndIf
 If chn=2 Then
 crdeltax#=-1
 crdeltay#=0
 cr\image=crab270
 EndIf
 If chn=3 Then
 crdeltax#=0
 crdeltay#=1
 cr\image=crab180
 EndIf
 If chn=4 Then
 crdeltax#=0
 crdeltay#=-1
 cr\image=crab
 EndIf
 If chn>4 Then
 crdeltax#=0
 crdeltay#=0
 EndIf
 EndIf
 crpx=cr\x+crdeltax*crspeed
 crpy=cr\y+crdeltay*crspeed
 If Not CollideStonesCrab(crpx,crpy) Then
 cr\x=crpx
 cr\y=crpy
 EndIf
 
 If ImagesCollide(gert,x,y,frames,crab,cr\x,cr\y,0) Then
 php=php-10
 EndIf
 
 DrawImage cr\image,cr\x,cr\y
Next
End Function

Function CollideStonesCrab(crpx,crpy)
        For w1.swall=Each swall
                If ImagesCollide(crab,crpx,crpy,0,w1\image,w1\x,w1\y, 0)
                        Return True
                EndIf
        Next
        For m.Main=Each Main
                If ImagesCollide(crab,crpx,crpy,0,m\stone,m\x, m\y, 0)
                        Return True
                EndIf
        Next
        For tree.Tree=Each Tree
                If ImagesCollide(crab,crpx,crpy,0,tree\tree1,tree\x,tree\y, 0)
                        Return True
                EndIf
        Next

        Return False
       
End Function

P.S. Да, знаю что название функции CollideStones хотя там не только камни, но меня как-то это не волнует:)

Nuprahtor 05.02.2012 17:55

Ответ: Vivo
 
Скриншоты бы в нулевой пост и в каждый пост с обновлением (если обновлялась графическая часть)

Nikich 05.02.2012 18:04

Ответ: Vivo
 
Я только за, вот мог бы я старые посты редактировать:)

Nikich 05.02.2012 19:03

Ответ: Vivo
 
Гм, возникли проблемы с крабиками. Они, видимо, любители подражать друг другу. Вот с одним крабиком всё хорошо, а когда крабиков несколько - все двигаются одинаково и не вращаются. "Мозги" крабиков можно найти выше. Единственное что лезет на ум: For cr.crab= Each crab - выполняется одновременно для всех крабиков. В общем, это и есть вопрос - For x.z= each z выполняется одновременно для каждого "x" или по очереди?
И ещё. Видимо поздновато, конечно, но всё же. Может перейти на BlitzMax? Есть ли существенные различия между Max'oм и Blitz3D?
Сейчас пытался переделать код под BlitzMax, хотел посмотреть, может ФПС поднимется. Конечно же, ничего не получилось. Как тут For ...= Each ... происходит? Как я понял, такого в BlitzMax вообще нету.

Nikich 05.02.2012 22:20

Ответ: Vivo
 
Вложений: 2
YAHOO!
Наконец новая версия. Еле-еле сегодня успел.
-Крабы( бьются, близко не подходите(конечно подходите, хоть бьются, зато они классные:) )).
-Здоровье.
P.S. но самое важное - крабы.
P.P.S. следующий апдейт рассчитан на сон и жажду( ну и не официальный текстур пак, заменяющий игрока на краба(уж больно мне они нравятся)
И можно ли редактировать старые посты?

Nikich 06.02.2012 17:05

Ответ: Vivo
 
Опять нужна помощь с рисованием. Но этот раз, нужно довольно таки много:
-кирки(деревянная и каменная)
-факел
И самое трудоемкое - измененная анимация того, как человек бьется(не пустой рукой, а киркой)
-уголь(как черные вкрапления в камне, и как просто кусок угля)
-палочки деревянные

Nikich 07.02.2012 18:43

Ответ: Vivo
 
Вложений: 1
Это пре-релиз новой версии, только для теста. Откомментируйте, пожалуйста, освещение. Не слишком ли светло, темно?
И можно ли редактировать старые посты(где-то 2 недельной давности)?

Nikich 08.02.2012 23:42

Ответ: Vivo
 
Если есть желание помочь, пожалуйста, хотя бы попытайтесь нарисовать факелы. Они очень нужны! Размеры 32х32(они стандартны для всех блоков).

NitE 09.02.2012 01:15

Ответ: Vivo
 
Вложений: 1

Nikich 09.02.2012 09:16

Ответ: Vivo
 
NiTe, большое спасибо! А не мог бы ты ещё факел сверху нарисовать, если есть время, конечно? 32х32, маска желательна 38,127,0.

Colossus 09.02.2012 12:56

Ответ: Vivo
 
Nikich, мне кажется проще не делать этого грибоподбного человечка, а взять простого 3д человека анимировать и отрендерить сверху )) намного лучше будет же

Nikich 09.02.2012 16:22

Ответ: Vivo
 
Оно то проще, вот только моделлер я очень хороший:) когда до беты доделаю, если команду соберу, переделаю в 3D.

4yBa4Ok 09.02.2012 20:43

Ответ: Vivo
 
Могу быть архитектором сетевой игры. Ток блитз подучить надо я на шарпе сижу)

Nikich 09.02.2012 21:09

Ответ: Vivo
 
Хорошо:)

Nikich 09.02.2012 23:20

Ответ: Vivo
 
Вложений: 1
Вот и новая версия. Нововведением является динамическое освещение(ну или почти динамическое :) ). Ну и факелы, конечно. За них, кстати, благодарим Nite'a(за те что в инвентаре рисуется, а не за ту чушь что на землю ставится(это моих рук дело)). И хорошо что я вспомнил о такой мелкой особенности: если выбрать в инвентаре факел, то всё рядом с персонажем будет освещаться(наверное многих доставало что в Minecraft'e нет такой функции). Отпишитесь в целом о освещении, если не очень трудно.

Randomize 10.02.2012 01:32

Ответ: Vivo
 
Освещение понравилось.
Огорчило частое застревание персонажа при добыче руды с невозможностью выбраться.

4yBa4Ok 10.02.2012 13:11

Ответ: Vivo
 
Вложений: 1
Освещение прям как с солнцем если везде их понаставить.

Nikich 10.02.2012 16:29

Ответ: Vivo
 
Расскажи подробнее о застревании в камнях. Я не сталкивался с такой проблемой:) Знаю только, что персонаж в камне появится может, но тогда выйти все равно можно - надо лишь разрушить камень.

L-ee-X 10.02.2012 17:38

Ответ: Vivo
 
FPS = 140-160
Впечатлило :)

Nikich 10.02.2012 17:38

Ответ: Vivo
 
Вложений: 1
Так, в новом апдейте фикс бага, когда ГГ появляется в камнях. И крабы теперь тоже не могут в камнях появится. Также, поставил у Flip(False), так что теперь фпс не ограничивается:) .Вот так вот. И ещё: пожалуйста,если не трудно, измените эти убогие факелы. Они всю игру портят:(

Nikich 10.02.2012 21:25

Ответ: Vivo
 
Собираю команду для того, чтобы переделать Vivo в 3D! Абсолютно каждый может помочь проекту! Если есть желание помочь, пишите об этом здесь или в ЛС.

Randomize 10.02.2012 22:43

Ответ: Vivo
 
Цитата:

Сообщение от Nikich (Сообщение 219144)
Собираю команду для того, чтобы переделать Vivo в 3D! Абсолютно каждый может помочь проекту! Если есть желание помочь, пишите об этом здесь или в ЛС.

Хм. Тогда может имеет смысл отказаться от кубизма и сделать ближе к Stranded?
И про 3д ещё интересно - оно будет тоже вид сверху?

Nikich 10.02.2012 23:01

Ответ: Vivo
 
Вложений: 1
Да, и в 3D вид будет сверху. А вот на счёт кубизма не знаю. Кубиками строить удобнее, хотя графика страдает.
Новый апдейт не глобальный - логотип команды при запуске(решил подумать о авторском праве:) ) и изменённые факелы.

Nikich 11.02.2012 00:26

Ответ: Vivo
 
Вложений: 1
Опять мини-апдейт. Убран баг с загрузкой(оказывается раньше, при загрузке, карты могли создаваться даже если карта уже была создана).

Program23 11.02.2012 19:11

Ответ: Vivo
 
эх..а я уже как неделю крабика анимированного сделал.
Но идея на переход в 3d мне нравится,буду по возможности помогать
P.S.игра стала прекрасной!

Nikich 11.02.2012 19:45

Ответ: Vivo
 
Погоди-ка. Процесс перехода на 3D пока не начат, так что яви народу крабика. Я думаю, надо для начала всё( ну или почти всё) сделать в 2D, а только потом в 3D переделывать.
И на счёт 3D: всё что рисуется DrawImage() останется на экране, если поставить Graphics3D, камеру, и что там ещё нужно(я в 3D вообще не работал:) )? Вопрос касается инвентаря.


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

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