А так сделайте чтоб дерево рассыпалось на древисину, но увеличте хп блоку под деревом.
Сделано. теперь хорошо. Начаты работы по ресурсам - пока что это уголь, серебрянная руда, золотая руда, мифриловая руда, алмазы. Сделано 2 рецепта - порох, получаемый из земли , и динамит, получаемый из пороха. Вот скрин небольшой карты, с генерацией ресурсов. осторожно! большая картинка!
Добавлено (17.11.2012, 05:10) --------------------------------------------- Заодно провел небольшой стресс-тест на количество нпц - при 3.5к нпц, фпс начал падать, вероято от большого количества их на экране, загрузка процессора выросла с 10-15% до 30%.
Сделано получение опыт и уровней. Вот тут прошу совета - опыт должен же капать практически за каждое действие? созданный блок, скрафченный итем, убитый моб, взорванный динамит и тд верно? Или ограничиться убитыми мобами да созданными блоками?
К примеру, майнкрафте опыт выпадает с мобов и (в новых версиях) из добытой руды (но почему-то только с угля). Давать опыт за установку блоков и разрушение земли/камня смысла нет, тем более игроки в таком случае будут тупо набивать "пустые" блоки (типа земли), чтобы получить халявного опыта... Ну а крафт предметов - это вещь спорная; теоретически, опыт должен добавляться, но на практике этот опыт нужно куда-то тратить, и крафт/изменение/улучшение предметов делают платным, за счёт опыта...
Quote (x-and1988)
На данный момент, если разрушить блок, на котором стоит дерево, оно просто пропадает. Стоит ли изменить это?
Можно как в майнкрафте - оставлять висеть блоки дерева (листва со временем опадает), а можно рушить дерево на блоки сразу; так реалистичнее, но из-за этого добыча древесины в такой квадратной игре получается самым простым занятием...
Quote (x-and1988)
Стоит ли делать так, чтобы в пещерах было не полностью темно, а как в сумерках?
Как в сумерках - это когда откуда-то пробивается тусклый свет, а в полости под землёй без прямого выхода на поверхность света нет. Пусть лучше игроки факелы делают, вместо того чтобы включать яркость на максимум (как это можно сделать в майнкрафте, правда, всё равно полная темнота ощущается, но предметы различимы). Плюс, если в пещере не абсолютная темнота, снижается шанс внезапно наткнуться на спрятавшегося за углом ужасного монстра.
Quote (x-and1988)
Сделано 2 рецепта - порох, получаемый из земли , и динамит, получаемый из пороха.
Главное, сделай ресурсную "стоимость" пороха больше, типа штук 100 кусков земли = 1 горсть пороха, а то получится так, что динамит можно практически из воздуха делать...
Quote (x-and1988)
осторожно! большая картинка!
Почему руда в лаве генерируется? Нет, в принципе, это можно оставить, но тогда лавы должно быть меньше (и возможность охладить её водой)...
Quote (x-and1988)
Начаты работы по ресурсам - пока что это уголь, серебрянная руда, золотая руда, мифриловая руда, алмазы.
Железа нет, а мифрил уже есть.
***
Quote (x-and1988)
загрузка процессора выросла с 10-15% до 30%.
Ты хотя бы процессор назови, а то, может быть, у тебя там 1 ТГц и 33 ядра. Ну и памяти сколько ест игра на данный момент...
Сообщение отредактировал TimKruz - Суббота, 17 Ноября 2012, 21:41
если запускал через батник - в консоли что-то выдавало? И вообще это старая версия уже, выложу сегодня, справку в юникод переведу. Изучаю Java My new project My old project
tureLoader.java:231) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:171) at org.newdawn.slick.Image.<init>(Image.java:196) at org.newdawn.slick.Image.<init>(Image.java:170) at org.newdawn.slick.Image.<init>(Image.java:158) at org.newdawn.slick.Image.<init>(Image.java:136) at terra.ResourceManager.loadImage(Unknown Source) at terra.ResourceManager.addElementAsImage(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.slick.MenuState.init(Unknown Source) at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171) at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at terra.Game.main(Unknown Source) Sat Nov 17 23:58:09 MSK 2012 WARN:class org.newdawn.slick.opengl.PNGImageData fa iled to read the data java.io.IOException: unsupported color format at org.newdawn.slick.opengl.PNGImageData.readIHDR(PNGImageData.java:388)
at org.newdawn.slick.opengl.PNGImageData.init(PNGImageData.java:106) at org.newdawn.slick.opengl.PNGImageData.loadImage(PNGImageData.java:680 ) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:62) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:43) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:277) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:231) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:171) at org.newdawn.slick.Image.<init>(Image.java:196) at org.newdawn.slick.Image.<init>(Image.java:170) at org.newdawn.slick.Image.<init>(Image.java:158) at org.newdawn.slick.Image.<init>(Image.java:136) at terra.ResourceManager.loadImage(Unknown Source) at terra.ResourceManager.addElementAsImage(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.slick.MenuState.init(Unknown Source) at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171) at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at terra.Game.main(Unknown Source) Sat Nov 17 23:58:09 MSK 2012 WARN:class org.newdawn.slick.opengl.PNGImageData fa iled to read the data java.io.IOException: unsupported color format at org.newdawn.slick.opengl.PNGImageData.readIHDR(PNGImageData.java:388)
at org.newdawn.slick.opengl.PNGImageData.init(PNGImageData.java:106) at org.newdawn.slick.opengl.PNGImageData.loadImage(PNGImageData.java:680 ) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:62) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:43) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:277) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:231) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:171) at org.newdawn.slick.Image.<init>(Image.java:196) at org.newdawn.slick.Image.<init>(Image.java:170) at org.newdawn.slick.Image.<init>(Image.java:158) at org.newdawn.slick.Image.<init>(Image.java:136) at terra.ResourceManager.loadImage(Unknown Source) at terra.ResourceManager.addElementAsImage(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.slick.MenuState.init(Unknown Source) at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171) at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at terra.Game.main(Unknown Source) Sat Nov 17 23:58:09 MSK 2012 WARN:class org.newdawn.slick.opengl.PNGImageData fa iled to read the data java.io.IOException: unsupported color format at org.newdawn.slick.opengl.PNGImageData.readIHDR(PNGImageData.java:388)
at org.newdawn.slick.opengl.PNGImageData.init(PNGImageData.java:106) at org.newdawn.slick.opengl.PNGImageData.loadImage(PNGImageData.java:680 ) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:62) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:43) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:277) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:231) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:171) at org.newdawn.slick.Image.<init>(Image.java:196) at org.newdawn.slick.Image.<init>(Image.java:170) at org.newdawn.slick.Image.<init>(Image.java:158) at org.newdawn.slick.Image.<init>(Image.java:136) at terra.ResourceManager.loadImage(Unknown Source) at terra.ResourceManager.addElementAsImage(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.slick.MenuState.init(Unknown Source) at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171) at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at terra.Game.main(Unknown Source) Sat Nov 17 23:58:09 MSK 2012 WARN:class org.newdawn.slick.opengl.PNGImageData fa iled to read the data java.io.IOException: unsupported color format at org.newdawn.slick.opengl.PNGImageData.readIHDR(PNGImageData.java:388)
at org.newdawn.slick.opengl.PNGImageData.init(PNGImageData.java:106) at org.newdawn.slick.opengl.PNGImageData.loadImage(PNGImageData.java:680 ) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:62) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:43) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:277) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:231) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:171) at org.newdawn.slick.Image.<init>(Image.java:196) at org.newdawn.slick.Image.<init>(Image.java:170) at org.newdawn.slick.Image.<init>(Image.java:158) at org.newdawn.slick.Image.<init>(Image.java:136) at terra.ResourceManager.loadImage(Unknown Source) at terra.ResourceManager.addElementAsImage(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.slick.MenuState.init(Unknown Source) at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171) at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at terra.Game.main(Unknown Source) Sat Nov 17 23:58:09 MSK 2012 WARN:class org.newdawn.slick.opengl.PNGImageData fa iled to read the data java.io.IOException: unsupported color format at org.newdawn.slick.opengl.PNGImageData.readIHDR(PNGImageData.java:388)
at org.newdawn.slick.opengl.PNGImageData.init(PNGImageData.java:106) at org.newdawn.slick.opengl.PNGImageData.loadImage(PNGImageData.java:680 ) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:62) at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageD ata.java:43) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:277) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:231) at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTex tureLoader.java:171) at org.newdawn.slick.Image.<init>(Image.java:196) at org.newdawn.slick.Image.<init>(Image.java:170) at org.newdawn.slick.Image.<init>(Image.java:158) at org.newdawn.slick.Image.<init>(Image.java:136) at terra.ResourceManager.loadImage(Unknown Source) at terra.ResourceManager.addElementAsImage(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.ResourceManager.loadResources(Unknown Source) at terra.slick.MenuState.init(Unknown Source) at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171) at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at terra.Game.main(Unknown Source) ItemManager : total loaded 30 NpcManager : total loaded 7 Sat Nov 17 23:58:11 MSK 2012 INFO:Offscreen Buffers FBO=false PBUFFER=true PBUFF ERRT=false Sat Nov 17 23:58:11 MSK 2012 DEBUG:Creating pbuffer(unique) 16x16 Sat Nov 17 23:58:12 MSK 2012 INFO:Offscreen Buffers FBO=false PBUFFER=true PBUFF ERRT=false Sat Nov 17 23:58:12 MSK 2012 DEBUG:Creating pbuffer(unique) 16x16 Map Manager init Total loaded ground definitions : 10 Total loaded biom definitions : 5 generated new map index -10 meter left 320 meter right 330 generated new map index -9 meter left 330 meter right 366 generated new map index -8 meter left 366 meter right 405 generated new map index -7 meter left 405 meter right 398 generated new map index -6 meter left 398 meter right 381 generated new map index -5 meter left 381 meter right 377 generated new map index -4 meter left 377 meter right 379 generated new map index -3 meter left 379 meter right 395 generated new map index -2 meter left 395 meter right 452 generated new map index -1 meter left 452 meter right 407 terra.model.inventory.item.def.ItemDef@d32028 terra.model.inventory.item.def.ItemDef@1a75e1b terra.model.inventory.item.def.WeaponDef@1135607 generated new map index 0 meter left 407 meter right 376 generated new map index 1 meter left 376 meter right 378 generated new map index 2 meter left 378 meter right 405 generated new map index 3 meter left 405 meter right 391 generated new map index 4 meter left 391 meter right 374 generated new map index 5 meter left 374 meter right 366 generated new map index 6 meter left 366 meter right 347 generated new map index 7 meter left 347 meter right 323 generated new map index 8 meter left 323 meter right 336 generated new map index 9 meter left 336 meter right 303 Map -3 height above the sea -2 392 390 Biom choosed underwater Map 6 height above the sea 39 351 390 Biom choosed dirt Map -10 height above the sea 61 329 390 Biom choosed snow Map -2 height above the sea -35 425 390 Biom choosed underwater Map 5 height above the sea 25 365 390 Biom choosed dirt Map 7 height above the sea 59 331 390 Biom choosed snow Map 0 height above the sea 2 388 390 Biom choosed sand Map -1 height above the sea -44 434 390 Biom choosed underwater Map -8 height above the sea 9 381 390 Biom choosed sand Map -9 height above the sea 35 355 390 Biom choosed dirt Map 8 height above the sea 64 326 390 Biom choosed snow Map -7 height above the sea -13 403 390 Biom choosed underwater Map 2 height above the sea -9 399 390 Biom choosed underwater Map 9 height above the sea 72 318 390 Biom choosed ice Map -6 height above the sea 4 386 390 Biom choosed sand Map 1 height above the sea 10 380 390 Biom choosed sand Map -5 height above the sea 9 381 390 Biom choosed sand Map 3 height above the sea 5 385 390 Biom choosed sand Map -4 height above the sea 14 376 390 Biom choosed sand Map 4 height above the sea 8 382 390 Biom choosed sand Created total 20 Generate water for map -3 Generate water for map 6 Generate water for map -10 Generate water for map -2 Generate water for map 5 Generate water for map 7 Generate water for map 0 Generate water for map -1 Generate water for map -8 Generate water for map -9 Generate water for map 8 Generate water for map -7 Generate water for map 2 Generate water for map 9 Generate water for map -6 Generate water for map 1 Generate water for map -5 Generate water for map 3 Generate water for map -4 Generate water for map 4 Sat Nov 17 23:58:24 MSK 2012 INFO:Offscreen Buffers FBO=false PBUFFER=true PBUFF ERRT=false Sat Nov 17 23:58:24 MSK 2012 DEBUG:Creating pbuffer(unique) 1280x512 saving image 390 Sat Nov 17 23:58:36 MSK 2012 ERROR:null java.lang.NullPointerException at org.lwjgl.opengl.GL11.glBindTexture(GL11.java:651) at org.newdawn.slick.opengl.pbuffer.PBufferUniqueGraphics.disable(PBuffe rUniqueGraphics.java:80) at org.newdawn.slick.Graphics.setCurrent(Graphics.java:74) at org.newdawn.slick.Graphics.predraw(Graphics.java:238) at org.newdawn.slick.Graphics.checkPush(Graphics.java:334) at org.newdawn.slick.Graphics.translate(Graphics.java:389) at terra.slick.GameState.render(Unknown Source) at org.newdawn.slick.state.StateBasedGame.render(StateBasedGame.java:199 ) at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:68 1) at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:408 ) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:318) at terra.Game.main(Unknown Source) Sat Nov 17 23:58:36 MSK 2012 ERROR:Game.render() failure - check the game code. org.newdawn.slick.SlickException: Game.render() failure - check the game code. at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:68 4) at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:408 ) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:318) at terra.Game.main(Unknown Source)
судя по всему ошибка произошла при сохранении картики сгенерированного мира. При повтором запуске всё повторяется? Если не трудно - прошу ответ в ЛС. Изучаю Java My new project My old project
Добавь режим игры, в котором можно свободно летать и быстро ломать блоки (как "креатив" в Minecraft). Так будет проще тестировать игру и сейчас, и в будущем. Сделай уже разрушение блоков с зажатой кнопкой мыши (я об этом вроде бы уже писал как-то), а то закликивать каждый блок неудобно. Если очень часто кликать, игра вылетает.
Тебе не кажется, что выход из воды странный? В определённые моменты из неё невозможно выбраться, персонаж просто застревает под поверхностью воды (приходится ставить блок повыше, забираться на него и с него прыгать на сушу).
Во время генерации карты проверяй дырки под морями-океанами, чтобы они туда не стекали, и либо блокируй их землёй, либо заполняй полностью водой. А то у меня сгенерировалась карта с целым океаном в центре, а спаун персонажа на его дне. При этом на дне оказалась расщелина (даже несколько) и из-за неё на поверхности воды образовалась огромная воронка. И, похоже, вода обрабатывается только в определённом пределе, так что вообще там фигня полная с поверхностью получилась. Цунами какое-то сплошное. Вот получившаяся картинка с карты:
Видны ямка на воде и водопад в расщелине, но в игре там было несколько больших волн. А если бы я подождал, то, наверное, там бы почти весь этот океан слился в расщелину... Эти расщелины вообще гораздо реже делать нужно; лучше поработай над классическими пещерами в виде системы залов и туннелей...
А ещё сохранение во время выхода что-то зависло, прошло где-то 70-80% бара и замерло... Ну я подождал какое-то время, потом просто закрыл...
Прыжки поправь, если ещё не поправил. В этой версии можно прыгать в воздухе... В одной карте в расщелине факелы сгенерировались в воздухе, т.е. на расстоянии от стены, но по форме вроде бы повторяют стену...
P.S. Убери блокировку мыши в рамке окна, или сделай её разблокировку после нажатия кнопки паузы...
*** Кстати. У тебя сейчас в режиме на весь экран картинка просто растягивается, а в такой игре она должна сохранять пропорции, т.е. квадраты остаться квадратами. Но при этом не должно быть чёрных полос по бокам и тому подобного - просто расширяется обзор виртуальной камеры. В Террарии, если не ошибаюсь, размеры картинок вообще фиксированы по пикселям, т.е. на очень большом экране видно во много раз больше, чем на очень маленьком... Но можно сделать только небольшое расширение по ширине (просто из значений высоты и ширины получаем отношение сторон, которое служит коэффициентом масштабирования по ширине), а высота подстраивается под высоту экрана, за счёт чего на дисплее 16:9 будет видно некоторые области слева и справа, которые не видно на 3:4 - так, думаю, проще и логичнее... Но это касательно прорисовки игровых объектов; интерфейс можно обрабатывать отдельно, подстраивая под размер экрана; например, в Майнкрафте размер интерфейса имеет всего три возможных размера - необходимый определяется автоматически по размеру окна игры или устанавливается игроком вручную (малый/средний/большой).
Сообщение отредактировал TimKruz - Воскресенье, 18 Ноября 2012, 20:31
Добавь режим игры, в котором можно свободно летать и быстро ломать блоки (как "креатив" в Minecraft). Так будет проще тестировать игру и сейчас, и в будущем.
Сделаю,раньше не приходила в голову такая идея. Думаю, к следующему демо.
Quote (TimKruz)
Сделай уже разрушение блоков с зажатой кнопкой мыши
Тоже сделаю, у персонажа просто будет своя скорость атаки, и можно либо кликать либо зажимать ЛКМ.
Quote (TimKruz)
Тебе не кажется, что выход из воды странный? В определённые моменты из неё невозможно выбраться, персонаж просто застревает под поверхностью воды (приходится ставить блок повыше, забираться на него и с него прыгать на сушу).
При нахождении на воде\под водой управлять надо и вверх тоже, т.е. зажим вверх + прыжок, и всё ок. Как по мне - вроде удобно.
Quote (TimKruz)
Во время генерации карты проверяй дырки под морями-океанами
Quote (TimKruz)
И, похоже, вода обрабатывается только в определённом пределе
Пещеры пока что генерируются в каждой карте, и они одинаковы. Подлежит переработке. А вода, действительно, обрабатывается только в ближних от игрока картах
Quote (TimKruz)
А ещё сохранение во время выхода что-то зависло, прошло где-то 70-80% бара
В консоли при этом было что-нибудь подозрительное? похожее на ошибку. Если сохранение успешно - появляется окно с титрами.
Quote (TimKruz)
Прыжки поправь, если ещё не поправил. В этой версии можно прыгать в воздухе... В одной карте в расщелине факелы сгенерировались в воздухе, т.е. на расстоянии от стены, но по форме вроде бы повторяют стену...
Прыжки да, проверки, что прыжок начинается с земли, пока что нет. Будет. Факелы вообще предметы, которые необязательно прикреплять к чему-то. Видимо, для простоты разработки. Если действительно необходимо, чтобы они крепились на стены, и тд - возможно сделать и так.
Quote (TimKruz)
P.S. Убери блокировку мыши в рамке окна, или сделай её разблокировку после нажатия кнопки паузы...
При нахождении на воде\под водой управлять надо и вверх тоже, т.е. зажим вверх + прыжок, и всё ок. Как по мне - вроде удобно.
Удобно - это когда только одну кнопку жмёшь, а не целые комбинации... [W] - только плавать, пробел - прыжок, но только на суше или на поверхности воды... Игроку проще иметь только одну кнопку (пробел или [w]), которая одновременно заставляет персонажа всплывать в воде и подпрыгивать. Может, в каком-то случае раздельное управление удобнее, но у тебя получается так, что, если не нажимать пробел, персонаж плавает под поверхностью воды. Он же не рыба и задыхается; можно было бы его на половину приподнимать над водой, а только потом заставлять задействовать пробел для прыжка...
Кстати, на счёт удобности. Мне (да и многим другим, наверное), например, неудобно всё время зажимать ctrl/alt для уничтожения/установки блоков, проще сделать как обычно: ЛКМ - ломать, ПКМ - строить (так и в Minecraft, и в Terraria сделано, удобно и логично); двери и остальные предметы используются на ПКМ (ломаются/убираются, соответственно, на ЛКМ), но, в крайнем случае, ещё есть СКМ... Или предполагается сделать какие-то особые действия кнопкам мыши?
И ещё сделай автоматическое подбирание выпавших предметов - постоянно кликать на них, чтобы подобрать, неудобно (тем более, они вроде бы не всегда реагируют на клик, или это я по ним не всегда попадаю).
Quote (x-and1988)
А вода, действительно, обрабатывается только в ближних от игрока картах
Это правильно, так нагрузки меньше; но когда целый океан сливается в дырку в земле, по бокам могут остаться стенки воды... Думаю, следует обрабатывать фрагменты воды, которые находятся за границей экрана, но при этом взаимодействуют с движущимися фрагментами на экране - нагрузка не сильно возрастёт, зато вода не будет застывать за экраном, когда она должна стекать...
Quote (x-and1988)
В консоли при этом было что-нибудь подозрительное? похожее на ошибку.
Да кто её знает, я в этой консоли не разобрался - куча сообщений... Но явно ошибка была, потому что после перезагрузки игра нормально сохраняла - несколько секунд, дальше титры. А сохранение происходит всей карты или только изменённых игроком фрагментов? Вроде бы игра ещё при генерации карты что-то создаёт в папке map...
Quote (x-and1988)
Прыжки да, проверки, что прыжок начинается с земли, пока что нет. Будет.
Не обязательно делать такую проверку. Можно выделить булеву переменную, если её ещё нет - типа jumping. При нажатии пробела и если jumping=false, включается режим прыжка и jumping выставляется в true, после отпускания пробела или после достижения максимальной высоты прыжок завершается, но jumping сбрасывается на false только после столкновения с землёй. Я так делал, работает нормально, только замечается особенность - при умении можно "прыгать головой" по наклонным (не по горизонтальному потолку или вертикальным стенам) поверхностям... Правда, это всё ещё от обработки самого движения влево-вправо и падения зависит. А, ну тут ещё можно в воздухе подпрыгнуть один раз (в некоторых играх такая фишка есть и может уберечь от смерти от падения, но падение происходит быстро и подпрыгнуть всё равно не успеваешь), но это можно устранить включением jumping в тот момент, когда персонажу придаётся вертикальная скорость...
Quote (x-and1988)
Факелы вообще предметы, которые необязательно прикреплять к чему-то. Видимо, для простоты разработки. Если действительно необходимо, чтобы они крепились на стены, и тд - возможно сделать и так.
Ну если они будут крепиться на фоновые стены (помимо обычных блоков) - пусть будет так, главное чтобы они на небо не прикреплялись.
Деревья какие-то слишком прочные... И после срубания листва (довольно много, блоков меньше было) падает будто из воздуха...
Сообщение отредактировал TimKruz - Понедельник, 19 Ноября 2012, 21:05
Консоль подчищу, будет выводить только ошибки. Автоподбор будет, но я думал сделать это как скилл\доп.фичу. Обработка воды будет изменена, просто на данный момент это не главное. Насчет ЛКМ - ПКМ, да, пожалуй вместо альта и контрола сделаю так.
Quote (TimKruz)
роде бы игра ещё при генерации карты что-то создаёт в папке map...
а это картинка сгенерированной карты. миникарта, так сказать.
Quote (TimKruz)
листва (довольно много, блоков меньше было) падает будто из воздуха...
догадываюсь отчего, проверю и исправлю.
Из характеристик планируются стандартные сила, ловкость,выносливость. Это если не вводить магию Тип игры со свободным перемещением уже сделал, исправлю все выявленные баги - выложу.
Quote (TimKruz)
о у тебя получается так, что, если не нажимать пробел, персонаж плавает под поверхностью воды
А вот это странно - под водой, персонаж постепенно тонет, но если выплыть на поверхность воды - он будет сам держатся наплаву. И только после этого можно прыгать (из положения над водой). Изучаю Java My new project My old project
А вот это странно - под водой, персонаж постепенно тонет, но если выплыть на поверхность воды - он будет сам держатся наплаву. И только после этого можно прыгать (из положения над водой).
Ну я не совсем правильно выразился. Всплывает он маленьким кусочком сверху, и, конечно, держится и дышит, но, когда сделаешь ему текстуру - над водой будет разве что верхний кусок головы... Хотя ладно, текстуры пока нет, а потом настроить можно будет...
Когда всплываешь и держишь кнопку вверх, персонаж быстро дёргается. Раздражает. Похоже, ты сначала перемещаешь объект вперёд, потом проверяешь столкновение и, если оно есть, возвращаешь назад. Лучше делать проверку столкновения до перемещения, так будет более гладко перемещаться.
Я понимаю, что текстуры чисто тестовые, но сам механизм получения фоновых стен как-то неправилен. В пещерах-расщелинах какой-то отдельный от всего остального фон, а за блоками камня такой фон, что сливается с самим блоком камня. В той же Террарии генерируемых фонов всего несколько, и они располагаются по слоям. Например, сверху весь фон земляной, ниже появляются прожилки камня и т.д. Подразумевается, что в верхней части камни - редкие гости, вокруг них одна земля, тогда как в глубине наоборот, земля встречается меньше и окружена камнем. Я не рекомендую всё чисто копировать, но однородный фон выглядит приятнее, чем фон с вкраплениями уже удалённых блоков... Да и не будет проблем с сливанием уже удалённых блоков с оставшимися... Можно дополнить идею однородного фона, сейчас не могу сразу придумать чего-нибудь такого...
Красная полоска-указатель в последней версии почему-то часто попадает не туда, куда нужно (не охватывает всю окружность, а занимает только определённые положения), так что трудно попасть по нужному блоку...
Quote (x-and1988)
а это картинка сгенерированной карты. миникарта, так сказать.
Ну я имел в виду файлы карты (*.map), а не картинку, но мне показалось. Немного прошёл вправо и карта уже весит 7 МБ. Специально глянул, сколько весят файлы карты малого размера (они сразу генерируются, по выбранному размеру) Террарии - всего 9.5 МБ, с учётом того, что она довольно большая (несколько минут топать до края, если пешком) и глубокая, плюс там куча ресурсов и дырок в ландшафте. Оптимизируй хранение карты, есть к чему стремиться в этом плане.
Может быть, не стоит делать карту бесконечной и генерируемой по мере исследования... Пусть в Майнкрафте бесконечные карты, ограниченные только ресурсами компьютера, но кому нужны эти дальние дали? Ландшафт всё равно однообразный, ресурсы и враги одни и те же. А в мультиплеере почти всегда карту ограничивают на сервере, и ничего - сотни игроков уживаются на относительно небольшой карте...
Сообщение отредактировал TimKruz - Среда, 21 Ноября 2012, 20:57
демо Изменения: Опция автоподбора. Выброшенные вещи игроком не подбираются автоматически. Опция свободного перемещения. Атака на ЛКМ, создание блока\ действия над объектом ПКМ. Исправлен баг с прыжком. Прыгать можно с земли\из воды. Спрыгнуть с лестницы можно, зажав пробел.
Quote (TimKruz)
Всплывает он маленьким кусочком сверху
Всплывает на 1\2 высоты игрока. Но пофиксить полностью перемещение по воде я пока не смог.
Quote (TimKruz)
Немного прошёл вправо и карта уже весит 7 МБ.
Немного это сколько? Вообще я делал сохранение карты встроенным функционалом джавы, если делать вручную - дописывать массу кода, но и размер будет уменьшен в разы.
Насчет заднего фона тайлов - я надеюсь, если прорисовать их хорошо, чтобы различие было видно - то и будет хорошо. Поменять в сторону однотипного фона всегда можно.
Quote (TimKruz)
Красная полоска-указатель в последней версии почему-то часто попадает не туда, куда нужно
Исправлено, поидее. Надо будет её убрать вообще.
Quote (TimKruz)
Может быть, не стоит делать карту бесконечной и генерируемой по мере исследования...
Теоретически - чем дальше от центра генерируются карты, тем можно более экзотичные биомы создавать в этих картах. Плюс сделать ограничение на размер карты от количества игроков. Дабы не бегало 2 игрока на расстоянии 5000 чанков. Изучаю Java My new project My old project
Система освещения странная. На поверхности вокруг персонажа ореол света есть, но в пещерах он практически не работает. Особенно плохо то, что в пещерах, в боковых ответвлениях, часто невидно блоков, т.е. нельзя определить их тип... Понятно, что там света нет, но ведь персонаж какой-то свет излучает...
Поработай над инвентарём... Сейчас инвентарь никуда не годится. И над крафтом тоже.
Quote (x-and1988)
Опция автоподбора. Выброшенные вещи игроком не подбираются автоматически. Опция свободного перемещения.
Какие кнопки переключения? Не нашёл что-то.
Quote (x-and1988)
создание блока\ действия над объектом ПКМ.
Глючит. Блоки ставит не всегда и как-то кривовато. Например, рядом с персонажем не ставит, а только на определённом расстоянии. Кстати, почему нельзя на воду ставить? Например, у меня вода в дырку стекает, хочу её заткнуть - а не получается поставить блок.
Quote (x-and1988)
Немного это сколько?
Ну совсем немного, наверное, где-то до края той карты, которая картинкой сохраняется.
Quote (x-and1988)
я надеюсь, если прорисовать их хорошо, чтобы различие было видно - то и будет хорошо
Это верно...
Quote (x-and1988)
Исправлено, поидее. Надо будет её убрать вообще.
Ну проблема не в этой красной линии, а в некорректном определении позиции мыши. Сейчас она по-лучше стала определять, но всё равно криво - линия тычется в место несколько ниже курсора, поэтому возникают проблемы выбором нужных блоков.
Да знаю, в чем проблема - освещаются блоки только граничащие с воздухом. К тому же, она очень прожорливая.
Quote (TimKruz)
Поработай над инвентарём
Поподробнее можно?
Quote (TimKruz)
Блоки ставит не всегда и как-то кривовато.
Блоки можно ставить, когда создаваемый блок граничит хоть с 1 стороны с твердым блоком. На воде блок не ставится, но это можно убрать. Если устанавливаемый блок задевает какой-то объект (будь то трава или игрок), он не установится.
Quote (TimKruz)
Какие кнопки переключения? Не нашёл что-то
В файле конфига в папке дата. На кнопки не переносил такое.
Quote (TimKruz)
Ну проблема не в этой красной линии, а в некорректном определении позиции мыши.
Знаю, работаю над этим.
Ну, заодно выложу фикс. Изменения Деревья не могу создаваться ближе чем на 3 блока друг к другу. Оптимизирована система симуляции воды. Изменены картинки тайлов. (1ceberg)
Тщательно проверяй точку спавна. Первый раз появился с башкой внутри кирпича. Мобы тоже в блоках появляются иногда. Затыкай дырки под океанами, или заполняй такие пещеры водой полностью, а то плыть через океан, накренившийся на 40 градусов как-то неудобно...
Quote (x-and1988)
Блоки можно ставить, когда создаваемый блок граничит хоть с 1 стороны с твердым блоком.
А, точно. Я на фоновую стену ставить пытался. Просто я привык, что в Террарии нельзя ставить блок чисто в воздухе (нужно присоединять к блоку рядом; но есть исключения), но при этом на любую стену (задний фон, как сгенерированный, так и установленный игроком) большинство блоков можно ставить беспрепятственно - удобно в пещерах, где эти стены сплошные, т.е. блок куда хочешь ставишь...
Quote (x-and1988)
На воде блок не ставится, но это можно убрать.
В Террарии блок, установленный на воду, как бы впитывает воду, т.е. она остаётся в нём, пока его не разрушишь... Но можно сделать вытеснение воды вбок или удаление совсем. Бесит просто, когда вода тоненькой струйкой стекает в пещеру, а перекрыть её никак нельзя.
Quote (x-and1988)
Пытаюсь исправить выделение блока-цели, но пока не очень успешно.
Да, съезжает от курсора вправо, если идти по карте влево... Впрочем, это выделение только для тестирования нужно, потом его можно выключить - ясно же, что на какой блок курсор указывает, тот и выбран...
Quote (x-and1988)
Поподробнее можно? Жду информации по поводу инвентаря\крафта.
Поиграй в Minecraft и Terraria, поймёшь, что не так и в каком направлении двигаться (главное не копировать полностью)... Например, почему-то в панель быстрого доступа перетаскивается только один объект стопки, так что нельзя узнать количества оставшихся предметов в ней... Чтобы держать инвентарь открытым, приходится удерживать tab, а это не совсем удобно, когда нужно много чего скрафтить или просто тщательно рассортировать вещи... Окно крафта вообще убогое, даже для альфа-версии... Окошко справа вверху с информацией лучше заменить или дублировать всплывающей подсказкой под курсором, так привычнее... Выбор активного предмета на панели быстрого доступа должен быть колёсиком мыши, или, как минимум, кликом мыши, как альтернатива клавишам 1-...-9-0.
P.S. Почему тема всё ещё в разделе "идеи для реализации"? Думаю, можно уже в "проекты в разработке" переместить.
Сообщение отредактировал TimKruz - Суббота, 24 Ноября 2012, 20:40
Возможность установки блока на задний фон обдумаю. Также и с установкой блока в воде. Как вариант - если не все соседние клетки тоже вода, то ставить можно, с вытеснением воды в любой соседний блок воды.
Quote (TimKruz)
почему-то в панель быстрого доступа перетаскивается только один объект стопки
Вообще-то в панель перетаскивается не конкретный предмет, а его тип. Но идея хороша - знать количество очень полезно.
Quote (TimKruz)
Выбор активного предмета на панели быстрого доступа должен быть колёсиком мыши, или, как минимум, кликом мыши, как альтернатива клавишам 1-...-9-0.
Сделаю, скорее всего кликом. ЛКМ выбрать, ПКМ - убрать предмет из панели.
Всплывающую подсказку изменю, будет появлятся около курсора. Инвентарь буде открываться на таб, и на таб закрываться, попробуем так.
По поводу окна крафта - хотелось бы больше конкретики. Как вариант - полностью отделить его от инвентаря.
PS: модератору по поводу переезда в другую ветку написал.
Добавлено (25.11.2012, 03:57) --------------------------------------------- Дырки заткнул, точки спавна проверяются. Начал заниматься инвентарем, и понял, что написал его очень давно, и решил его переписать.
Блоки можно ставить, когда создаваемый блок граничит хоть с 1 стороны с твердым блоком.
По диагонали тоже ставить можно. Но по диагонали блок не граничит с другими. Сначала я подумал - так проще лестницу делать (если обычной с собой нет), но всё-таки блок оказывается как бы подвешенным в воздухе - не очень выглядит. В той же террарии можно ставить, только если грани соприкасаются (4 направления получается).
Quote (x-and1988)
Как вариант - если не все соседние клетки тоже вода, то ставить можно, с вытеснением воды в любой соседний блок воды.
Правильно. Главное, чтобы на дно поставить можно было (мало ли что под водой построить нужно бывает)...
Quote (x-and1988)
Вообще-то в панель перетаскивается не конкретный предмет, а его тип.
Т.е. предметы должны выдаваться из разных стопок (кончилась одна - начала использоваться другая)? Это должно быть удобно... С другой стороны, в Minecraft/Terraria эти ячейки быстрого доступа используются именно для хранения (получается типа карманов, из которых легче достать и использовать вещь, тогда как остальной инвентарь - рюкзак, который нужно сначала снять, и только потом открыть, чтобы что-то взять)...
Quote (x-and1988)
Сделаю, скорее всего кликом.
А почему не колёсиком?
Quote (x-and1988)
Инвентарь буде открываться на таб, и на таб закрываться
Необязательно именно [tab], нужно что-то по-проще, типа [e], если она не используется для чего-то ещё. Хотя какая разница, если кнопки можно будет настроить...
Quote (x-and1988)
По поводу окна крафта - хотелось бы больше конкретики.
Посмотри на крафт в других подобных играх. Например, в Minecraft нужно сложить несколько единиц (можно стопкой, но берётся из стопки только одна вещь) нужных предметов в определённой последовательности в сетке 9*9, вещь появляется (т.е. видно, что собираешься скрафтить) и забирается игроком из другой ячейки, а вещи в сетке исчезают (т.е. не инвентаря берётся, а из сетки, куда их выложил игрок). В Terraria всё намного проще (так же, как в версии Minecraft для XBOX 360, если не ошибаюсь), просто в инвентаре появляется список предметов, которые можно сделать, кликаешь - получаешь предмет, а ресурсы забираются из инвентаря...
Quote (x-and1988)
Как вариант - полностью отделить его от инвентаря.
Если в окне крафта нужно будет выкладывать ресурсы в клетки, то придётся оставить его совмещённым с инвентарём (иначе откуда брать ресурсы?), а если просто выбор нужного предмета из списка - можно и отделить...