Войти
ФлеймФорумПроЭкты

Жаба-гринд-2д (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
23:11, 24 фев. 2020

// ---
// Оригинальный враг из демо, можт наносить рану.

При косании, проверяем - если не было отката выдачи урона,
то ставим этот откат, и заодно сэлф-модулате в тёмно-серый вариант.
2.5 секунды идёт откат _убирания серого варианта.
И 4 секунды откат урона - пока враг _серый, это должно
какой-то логичной переменкой указывать, чтобы урон по _серому
отдельно засчитывался (тригеры, или сбор цветных кубиков аля уник).

// Ранение от этого врага игнорит доп-хит-поинты.
// И не исключаю, что рана процентовая (20% или 25%).
// При большом хит-баре, есть смысл таких нубо-врагов пере-прыгивать.

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

Огонёк бегает туда-сюда явно быстрей, чем красный панцирь.
И можно ему не делать человеческий образ - тупо горит костёр,
и скользит над землёй - возможно, к нему привязаны два спрайта,
которые копируют аниму из основного спрайта, но масштаб меньшэ,
и как-бы хвост - оба спрайта логически опрашывать на попадание туда
игрока - не делать ему физ-движковые элементы - через него можно
пробегать, но ранение, аля 35% хит-бар

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


#16
22:04, 26 фев. 2020

// ---
Я сомневался, но волей судьбы, закреплю такие кнопки в игре..

= Пауза // аля ESC // переключение игры и меню.
= Влево // движуха // нет комбо с шыфтом.
= Вправо // движуха // нет комбо с шыфтом.
= Шыфт
= Стрельба // комби с шыфтом = 1-й активный чип-талант.
= Прыжок // комби с шыфтом = 2-й активный чип-талант.
= Альтэр-действие // с шыфтом = циклинг избирания альтэр-предмета.

Итого..
три явные кнопки (пауза, влево, вправо), и 5 абилок.
// Одна из абилок аля использование предметов.
Такое можно к дэнди-паду привинтить, если шыфтом будет _вниз.


Слепил свой код управления (с паузой, и учётом шыфта)..

# in file t_toggle.gd
extends Node
class_name t_toggle

var flag := 0
var tog := 0

func trig_zero( control_val: int) -> int:

  if control_val  &&  tog == 0 :
    tog = 1

  elif control_val == 0  &&  tog :
    tog = 0
    return 1

  return 0
#---------

# ---

# кусок из файла global.gd, которы подразумеваем приставкой g1

const game_need_pause_start = 1
const game_need_pause_fin = 3


const shoot_block_max3 = 0.2 # большэ нельзя, но и меньшэ не надо.
const shoot_block_max2 = 0.4
const shoot_block_max1 = 0.8
var shoot_block_max := shoot_block_max3 # минимальный интервал вылета пулек.
var shoot_block := shoot_block_max


const t_toggle = preload( "res://t_toggle.gd")
var tog_shoot_k: t_toggle
var tog_shoot_j: t_toggle
var tog_shoot2_k: t_toggle
var tog_shoot2_j: t_toggle
var tog_pause_k: t_toggle
var tog_pause_j: t_toggle

var priv_upr


func _ready():
  var root = get_tree().get_root()
  current_scene = root.get_child( root.get_child_count() -1)

  tog_shoot_k = t_toggle.new()
  tog_shoot_j = t_toggle.new()
  tog_shoot2_k = t_toggle.new()
  tog_shoot2_j = t_toggle.new()
  tog_pause_k = t_toggle.new()
  tog_pause_j = t_toggle.new()

  priv_upr = t_uprav2.new()
#---------

#17
22:04, 26 фев. 2020
# --- новый кусок из файла global.gd

class t_uprav2:
#{
#private: // friend for global.gd

  # Влево // движуха // нет комбо с шыфтом.
  var move_left_key := KEY_LEFT
  var move_left_joy := -1 # this OR (-1) for JOY_AXIS
  #var move_left_joy := JOY_L
  var move_left_joy_ax := JOY_AXIS_0
  var move_left_joy_dev := 0

  # Вправо // движуха // нет комбо с шыфтом.
  var move_rit_key := KEY_RIGHT
  var move_rit_joy := -1 # this OR (-1) for JOY_AXIS
  #var move_rit_joy := JOY_R
  var move_rit_joy_ax := JOY_AXIS_0
  var move_rit_joy_dev := 0

  # Шыфт // третий сигнал, который можно на крестовину повесить.
  var shift_key := KEY_S #SHIFT
  var shift_joy := -1 # -1 == up_dir // -2 == down_dir
  #var shift_joy := JOY_BUTTON_11 # trash_joy_9
  var shift_joy_ax := JOY_AXIS_1
  var shift_joy_dev := 0


  # Стрельба // комби с шыфтом = 1-й активный чип-талант.
  var shoot_key := KEY_Z # KEY_CONTROL # shoot_norm
  var shoot_joy := JOY_XBOX_B
  var shoot_joy_dev := 0

  # Прыжок // комби с шыфтом = 2-й активный чип-талант.
  var jump_key := KEY_UP
  var jump_joy := JOY_XBOX_A
  var jump_joy_dev := 0

  # Альтэр-действие // с шыфтом = циклинг избирания альтэр-предмета.
  var alter_key := KEY_X # shoot_alter
  var alter_joy := JOY_XBOX_X
  var alter_joy_dev := 0

  # Пауза // аля ESC // переключение игры и меню.
  var pause_key := KEY_ESCAPE
  var pause_joy := JOY_SELECT # trash_joy_6
  var pause_joy_dev := 0
#};



func sig__move_left() -> bool:
  var p = priv_upr
  if Input.is_key_pressed( p.move_left_key):
    return true

  if p.move_left_joy > -1:
    if Input.is_joy_button_pressed( p.move_left_joy_dev, p.move_left_joy):
      return true
  else:
    var flo = Input.get_joy_axis( p.move_left_joy_dev, p.move_left_joy_ax)
    if flo < -0.1:
      return true

  return false
#---------


func sig__move_rit() -> bool:
  var p = priv_upr
  if Input.is_key_pressed( p.move_rit_key):
    return true

  if p.move_rit_joy > -1:
    if Input.is_joy_button_pressed( p.move_rit_joy_dev, p.move_rit_joy):
      return true
  else:
    var flo = Input.get_joy_axis( p.move_rit_joy_dev, p.move_rit_joy_ax)
    if flo > 0.1:
      return true

  return false
#---------


func sig__priv_shift() -> bool:
  var p = priv_upr
  if Input.is_key_pressed( p.shift_key):
    return true

  if p.shift_joy > -1:
    if Input.is_joy_button_pressed( p.shift_joy_dev, p.shift_joy):
      return true
  else:
    var flo = Input.get_joy_axis( p.shift_joy_dev, p.shift_joy_ax)
    if p.shift_joy == -1:
      if flo > 0.1:
        return true
    else: # -2
      if flo < -0.1:
        return true

  return false
#---------


func priv_shoot_sig( key, dev, joy) -> bool:
  var t := 0

  if 1: # if hero_slot__tal_pasiv() == tal__turbo_fire:
    if Input.is_key_pressed( key):
      t = 1
    elif Input.is_joy_button_pressed( dev, joy):
      t = 1
  else:
    if tog_shoot_k.trig_zero( Input.is_key_pressed( key)):
      t = 1
    elif tog_shoot_j.trig_zero( Input.is_joy_button_pressed( dev, joy)):
      t = 1

  if t:
    return true
  return false
#---------


func sig__shoot_x( is_alter: int) -> bool:

  var result := false
  var p = priv_upr
  if is_alter:
    result = priv_shoot_sig( p.alter_key, p.alter_joy_dev, p.alter_joy)
  else:
    result = priv_shoot_sig( p.shoot_key, p.shoot_joy_dev, p.shoot_joy)

  if not result:
    return false

  if not sig__priv_shift():
    return true # not shifting.


  if is_alter:
    #print( "next item")
    pass # выбор предмета - вызвать процу циклинга по альтэр-слотам.
  else:
    #print( "abil-1")
    pass # вызвать процу абилки от чип-талант-слот1.

  return false # нет простого выстрела - вместо него спец-вызов был.
#---------


func priv_jump_sig( key, dev, joy) -> bool:
  if Input.is_key_pressed( key):
    return true
  elif Input.is_joy_button_pressed( dev, joy):
    return true
  return false
#---------

func sig__jump_x( is_alter: int) -> bool:
  var result := false
  var p = priv_upr

  result = priv_jump_sig( p.jump_key, p.jump_joy_dev, p.jump_joy)

  if not result:
    return false

  if not sig__priv_shift():
    return true # not shifting.

  #print( "ab-222") # вызвать процу абилки от чип-талант-слот2.

  return false # нет прыжка - вместо него спец-вызов был.
#---------


func sig__listner_pause() -> int:
  var p = priv_upr
  var a := 0
  if tog_pause_k.trig_zero( Input.is_key_pressed( p.pause_key)):
    a = 1
  elif tog_pause_j.trig_zero(
    Input.is_joy_button_pressed( p.pause_joy_dev, p.pause_joy)
    ):
    a = 1
  if not a:
    return 0

  if get_tree().is_paused():
    #print( "pause off")
    get_tree().set_pause( false)
    return game_need_pause_fin
  else:
    #print( "pause on")
    get_tree().set_pause( true)

  return game_need_pause_start
#---------
#18
22:05, 26 фев. 2020
# in file Main.gd
extends Node2D

onready var stage_root = $Viewport2

func _ready():
  g1.include_scene_to = stage_root
  g1.include_scene( "Stage1.tscn", 1)
  $Menu.hide()

  self.pause_mode = Node.PAUSE_MODE_PROCESS # важно работать, при паузе.
  stage_root.pause_mode = Node.PAUSE_MODE_STOP # важно НЕ работать.
#---------

func _process( delta):
  var a = g1.sig__listner_pause()
  if a == g1.game_need_pause_start:
    $Menu.show()
    $GUI.hide()
  elif a == g1.game_need_pause_fin:
    $Menu.hide()
    $GUI.show()
#---------


+++


# in file player.gd
var Bullet2 = preload("res://player/Bullet_Fire.tscn")

func _process( delta):
  if g1.shoot_block > 0:
    g1.shoot_block -= delta
#---------

func _shot_bullet( vers: int):
  shoot_time = 0

  var t := 0
  var bi
  if vers == 1:
    bi = Bullet.instance()

  elif vers == 2:
    #вероятно, надо отдельную процу здесь вызвать.

    t = 1 # на какой индэкс _альтэр_указка.
    if t == 1: # Если указка на огне-патроны.
      t = 1 # Вместо единицы, надо узнать, что патронов большэ ноля.
      if t:
        bi = Bullet2.instance()
      else:
        # запуск звука empty_fire // холостой шелчок
        return
    else:
      return # неизвестно
  else:
    return # неизвестно


  var ss
  if siding_left:
    ss = -1.0
  else:
    ss = 1.0

  # возможно, у всяких турелей надо альтэр позицию узнать.
  var pos = position + ($BulletShoot as Position2D).position * Vector2( ss, 1.0)
    
  bi.position = pos
  get_parent().add_child( bi)
  
  bi.linear_velocity = Vector2( 800.0 * ss, -80)
  # ну точно, надо отдельную процу вызывать, при сумонинге турелей.
  ($Sprite/Smoke as Particles2D).restart()
  ($SoundShoot as AudioStreamPlayer2D).play()
  
  add_collision_exception_with( bi) # чтобы пуля не задевала хозяина скрипта.

  g1.shoot_block = g1.shoot_block_max
#---------



func _integrate_forces(s):
  # заменил опрос сигналов управления
  var move_left = g1.sig__move_left()
  var move_right = g1.sig__move_rit()

  var shoot = false
  var shoot_alt = false
  if g1.shoot_block < 0.0001:
    shoot = g1.sig__shoot_x( 0)
    shoot_alt = g1.sig__shoot_x( 1)

  var jump = g1.sig__jump_x( 0)

  if shoot || shoot_alt:
    if shoot:
      call_deferred( "_shot_bullet", 1)
    else:
      call_deferred( "_shot_bullet", 2) # alt
  else:
    shoot_time += step


  ... остальная часть процы осталась старой
#---------
#19
0:24, 3 мар. 2020

// ---
https://opengameart.org/content/plums
plums
Как из этой текстуры делать стилизацию в мой формат..

Сначала, я сделал серый бублик-розетку, которая будет отдельной
текстурой, а можт быть её продублирую внутрь норм-тайл-сэта
под названием solid2 - колизия залезает на половину соседнего тайла,
чтобы через один тайл - была сплошная полоса колизий - надёжность.
// Это можт быть стильно, и добавит сюриализма - клёпки на краю этапа.

Создать две копии крестовины из оригинала (серо-серебряные трубы).
-100 яркость бублику, и прилепить норм-яркую крестовину, в середину.
Склеить крестовину с бубликом - размывка пикселизацией (2 пикса).
И поверх этого, норм крестовина, с прозрачностью 50.

Для всей тексы труб, применим подобную стилизацию..
Назначить выборку пикселей по цвету самого чёрного, и залить это
чёрным чуть посветлей (50, 50, 50) - края стали мягче.
Делаем копию слоя - нижний слой размывка-пикселизация (2 пикс),
а верхний слой - 50% прозрачности - такое месиво в моём стиле.
Но, чтобы прятать за трубами монетку (у которой шырь 14 пикс),
надо расшырить ...

Хотя, посмотрел текстуру монетки - поправил её - сделал coin-hide.png
(прятать лиш за вертикальными трубами - высота монеты большэ шырины).
Итого - расшырять трубы не нужно.

Можно ешё злато-медный бублик сделать.
// И этот медный - запланировать использовать в _пешерах развилочного,
// считая что колона будет, как свеча - наверху огонёк из частиц жэчь.
// А в начальных этапах - флюгер детский в 4 зубчика-лепестка.
//
// Тоесть, как-миним два тайл-сета труб - серый и медный.


// ---
Смысл бублика-розетки в том, что к нему надо крепить псевдо-колоны,
и псевдо-проводку по тригерам, аля намёк - откуда точ-филд-кнопка.

Вдобавок, все механизмы получения талантов, можно в рамочку заключать,
чтобы подчеркнуть _важность этого кусочка этапа.
// рамочка квадратная - без использования загнутых труб.

В любом случии, бублик-розетка нужна в отдельном слое - она не должна
исчезать, когда абилкой убираем рисование слоя x_ray, где трубы.
// Тайл-мэп с трубами можно лепить чилдом к основному.
// Тонкая деталь - трубам можно чуток тон менять через модулате,
// например слегка темнить, чтобы трубы сильно не отвлекали внимание.

#20
0:24, 3 мар. 2020

// --- шаблон сцены - с него начинать каждый этапчик.

Stage // корень для всех нод этапа.
= ParallaxBg // фон
= VisLow // спец
= VisRit // спец
= x_far // частично скрываем за тайлами главного слоя.
= TileMap // главный слой.
= Coins // набор монет, чтобы отключать визуалку слоя.
= Logic // набор яшиков, точ-филдов с тригер-сигналами.
== Logic.Coin_Exit // первый выход с этапа.
= Props // всякие лифты - собираем, чтобы отключать их видимость.
= Enemies // слой врагов, чтобы отключать видимость.
= Player // главный герой (единственый - скрипты костыльные)
= hell // слой для собирания всех пулек.
= x_ray // особые закрывашки, которым отключаем видимость от _просветки.
= x_near // всякие стабильные пятна и закрывашки _поверх_всего.
= Teleport1 // вход с другого этапчика // можно дублировать

#21
17:22, 9 мар. 2020

Подумал, и достаточно накопилось для новой версии.

Картинка игры из 102-й версии..
https://funkyimg.com/view/32XAr

Архив 102-й версии игры (40 мегабайт).
https://yadi.sk/d/CR1SkdswixTXWA
Там исходники и пара скомпиленых версий.
// Возможно, у виндос-версии проблема со звуком, но каждый
// можт сам воспроизвести или компильнуть, используя Годот.

Скачать маленький движок-редактор Годот (не требует установки).
https://godotengine.org/

И открыть в нём вот эти исходники игры.
https://github.com/slatazan/br1/blob/master/src_jaba_grind_v102.zip

#22
3:02, 12 мар. 2020

Думаю, что мой проект можт быть полезен новичкам.
Я там слегка изменил официальное демо, и добавил базовых фигур.

Допустим, любитель скачал Годот, и запустил его, без установки.
(маленький движок - работает шустро)
(но если, по глупости, загрузить модель _города, то он будет лагать).

Нужно (скачать мой архив) и найти файл (через кнопку Import, Browse)
physics_platformer/project.godot
После этого, нажать кнопку Import & Edit.


В экране движка, надо найти вкладку FileSystem - кликнуть её,
и там, раскрыть папку locations, и двойной клик на st001.tscn .
И теперь, в основном окне показан этапчик (сцена), а в боковых панелях,
надо найти-раскрыть вкладки
Scene = здесь видно дерево _элементов (игровые ноды - парэнты-чилды).
Inspector = набор свойств _элемента, которого отметили в дереве,
или на основном окне этапа.
(Нажав колёсико мышки, можно двигать этап).

Кликни (внутри списка Scene) на элемент TileMap - проявилась колонка
тайлов - эти картинки можно кликать (левой), и потом, кликать левой
в основную картинку этапа - будет пропечатка картинки в указаном месте.
Правым кликом - чистим ячейку.
Зажми Контрол (Ctrl) и сделай левый клик по картинке в основном экране.
Таким образом _меняем_кисть, как-будто скопировали тайл, и теперь эту
копию можно левым кликом тиражировать.

Нажми на кнопку Play (F5) и это будет запуск игры - там должны быть
видны перемены от кликов по TileMap.


Раскрой ветку дерева сцены Coins - там элементы Coin, Coin2.
Отметь Coin2, нажми Контрол + Ди
(или от правой кнопки мышки - пункт меню Duplicate)
так добавим новый элемент - повтор монетки, под именем Coin11
(авто-назначение названий).
// Двойной клик на игровом элементе = на него зафокусят камеру редактора.
Отметь новый элемент, перенеси крусор мышки в основное окно, и жми
стрелочки на клавиатуре - новая монетка должна выехать со старой позиции.

Отметь ветку Logic, и найди, над списком, значок звена цепочки,
либо через клик правой мышкой по Logic, и выбор строки Instance Child.
Попадаем в спец-меню, где выбираем строку "coin/AreaBox.tscn".
Спец-меню исчезло - в дочернии элементы Logic добавлено AreaBox,
который можно кликнуть двойным - увидим, что позиция элемента в нолях.
// Лучше на него не кликать - будет задет спрайт Player/Sprite_Fog.
Можно зажать Шифт и нажать стрелочки, чтобы двигать вправо-вниз.

Но я рекомендую отметить элемент в списке сцены, и заглянуть
в панель Инспектора свойств этого игрового элемента.
Там надо раскрыть вкладку Transform, посмотреть на линейки по бокам
основного окна редактора, и назначить примерную позицию, а потом
стрелочками скоректировать на нужную позицию.
// Кликай по нолю, рядом с иксом - ставь нужное число, ентэр.

Суть поправки позици, чтобы можно было стрельнуть в элемент-бочку.
Жми Play (F5) и стреляй по бочке пару раз - появился зелёный кружок.
Если его подобрать, то будет прибавка - опыт станет 2, вместо 1.

#23
3:03, 12 мар. 2020

Новая версия функции

func _ready(): # file Lift_dmg.gd
  default_position = position

#  if move_type > 2:
#    move_type = 2
#  if move_type == 2:
#    motion.x = position.x + motion.x
#    motion.y = position.y + motion.y
# это был баг в 102-й версии.

#---------

#24
0:45, 13 мар. 2020

// ---

unit_take_damage
unit_take_gift
Перенёс в global.gd

пиксель_снэп - зря включил - паралакс-фон колбасит из-за этой опции.

Создал промежуточную ноду игрока, чтобы можно было там удалить
ригид-версию, и загрузить другую версию - подобие смены героев.
// Кинематик-героя внедрил из соседней офиц-демо, чтобы было.

Камеру убрал из ноды игрока - вручную ставим на позицию игрока.

Всё-таки трудно тем авторам, которые не дружат со скриптами.
Возни с кодом достаточно.

Лифтам добавил гибкости - теперь у них есть тряска и проваливание.


// ---
Я считаю, что приём _вал_оф_нафин не надо визуализировать, кроме
использования абилки _просветка - при ней, убираем видимость слоя x_ray.
Тоесть, без всяких просветок, пытайся войти в стену - если там нет
колизий, то герой проходит, но его накрывают спрайты.
Невидимый проход выводит в комнату, которая не закрыта слоем x_ray.

// -- альтер-выход из локации..
Если спрятать Coin_Exit за некой полу-трубой, и сделать высоту
этого хода минимальной, под героя, чтобы прыжков не позволять,
то герой уходит вбок, в трубу, и нас перекидывают в новый этап.

Если растянуть колизию Coin_Exit по горизонтали, то можно сделать
зону прыжков - игрок падает на Coin_Exit, и появился в начале этапа.
(Это не локальный телепорт - этапчик загружаем заново).

#25
0:41, 16 мар. 2020

Сделал 4 первых этапчика.
версия-103

1-й этап - игрок подбирает монеты, делает малый прыжок,
думает что очередная монета - а это телепорт в новый этап.
// технически, встречаем монетки и монетку-телепорт.

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

3-й этап - яму можно пере-прыгнуть, но для новичков сделана
ступенька, которую можно _включить, если задеть мигаюший квадратик.
Игрок решает мини-загадку, и получает огне-патроны.
// бочка с респауном, дверь, супер-предмет.
// можно достать высокую монетку - забавная физика движка.

4-й этап - герой прыгает, падает - его быстро ставят в начало этапа.
Если прыжки удачные, то познаём Авто-кастинг.
// кастинг для тригера лифта, и для получения предметов.
// Возможно, надо было здесь приклеить хлипкий лифт,
// на который прыгаеш, а он трясётся, и само-изчезает.

#26
22:01, 18 мар. 2020


Реакция на изначальные текстовые наброски.

[  = коридор, без помех - разгончик]
Вместо этого были созданы 4 этапчика, как рельс обучалки,
в который игрока не вернут.


[  включить генератор запасных броне-пластинок]
Наверно, не надо усложнять, и звать этот предмет - броня (armor).
И рисовать броню стандартным индикатором (значок + число).

Факт включения запоминаем в масив откатов, выставив большое число
из константы, которую нужно сравнивать с остатком отката, чтобы
понять накопленую броню, внутри механизма, который не мог работать,
когда его этап не был загружн.
(две переменки - макс_откат, и доля_отката на единицу брони).
(не исключено, что откат уходит в ноль - все накопления сгорели).

Вероятно, отказ от ваншотов - гибель от одной пульки - это грустно.
Хит-бар большой - броня не очень актуальна - надо прибавить позитива.
За единицу брони, при покупке, выдавать 3 ед. опыта.
// Пока не ясно - сколько монет за единицу брони.

Нельзя купить свышэ максимума - его развиваем до 9, наверно.
Закупил опыта на 27 единиц, сбегал, истратил бронь - снова закупил.
Если будут умножатели получения опыта, то такой изврат выгоден - надо
выбирать мирные места для постановки магазинов брони.
// Хотя каждый магазин не можт выдавать бесконечные единицы брони.

За нахождение яшика опыта - дарить около 100 опыта.
За исполнение квэста - примерно 200 опыта.
Тратим опыт на усил талантов, которые экипированы.


[  лечение за монетки]
Такая пасивка ужэ работает.
Если у каждого таланта будет 10 левелов, то +1 хит-поинт, сначала.
+10 хитов за монетку - макси-усиленый талант.
Если развитый хит-бар будет около 500, то 2% за монету - нормально.


[  бег в сторону основного лабиринта]
Придумал забавную схему псевдо-лабиринтовости.
Хотя многие детали так и остались мутными.

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


[  черепок с двумя золотыми звёздами, вместо глаз]
жадный_дух. // бывшый золотой дух
+1 монета за 30 секунд - изначально.
+10 монет за 30 - макси-усил.
Работает через особый индекс отката.
Допустим, что каждый тик можт мизерно ранить героя

Денежный узел - для захвата, надо иметь супер-предмет _теневая_рука.
Работает через особый индекс отката.. прибавлять от 3 до 5 в минуту.
Вдобавок, каждый откат денежного узла, стартует хаос-ядо-пульки,
которые пролетают через экран, по горизонтали (ранят лиш глав-героя).
Малый доход из-за возможности захватить много таких узлов.


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

#27
(Правка: 28 мар. 2020, 18:55) 19:31, 21 мар. 2020


Исходники - версия 104 (архив 8 мегабайт)

картинка..
https://yadi.sk/i/tgux-RiNY7xMQA

#28
18:56, 28 мар. 2020


архив с исходниками (версия 105)

// ---
area_item.gd :: item_znak // исправлено название картинки

Исправлен баг с откатами - теперь их сбрасывают,
если они сбылись (пришли к нолю).

Создан забавный игровой элемент DmgFly.
Из него можно делать пульки, сосульки, мины, и волновые головы_вании

#29
19:45, 4 апр. 2020

архив 106-ая версия

Архив с исходниками дву-мерного платформера. Делай свою игру поверх моих исходников.
Добавлена абилка подныривания в узкие щели, и абилка двойного прыжка. Кнопки управления упомянуты в файле about.txt - прижми шифт-кнопку плюс прыжок = взрывной прыжок ...

Страницы: 1 2 3 4 Следующая »
ФлеймФорумПроЭкты