Comments 16
Потом расскажите как вы патчами правили баланс.
Я делал уже карточную игру. Механика как в Orions: Legend of the Wizards, но вместо насилия - любоф. Ссылку, ессно, не дам (Ибо там затрагивается тема, которая, одному Богу известно - почему-то является запретной, в отличии от убийств и членовредительства). Но делал на ванильном JS, запилил где-то за неделю. На ней же и вывел код стайл, который хорошо ложится на сетевое взаимодействие: через "state" и "controller". А действия - через "history". Т.е. state - содержит лишь информацию (состояние игрового поля), controller - действия с полем. Все действия записываются в history. GUI читает новые события из history и отображает их. Еще и немного механику AI проработал - minmax.
Я считаю, что реклама — это устаревший маркетинговый инструмент для продажи игр.
Тут - любо бешено соглашаюсь. Идеальный маркетинг - превентивный. Изучаем потребности ЦА - проектируем потребность - реализуем продукт. Но в вашем случае - все равно: "сначала я сделаль, потом заставиль это кушац". Т.е. желание разраба превалирует над желаниями потребителей. Это уже чисто творчество, но не бизнес. Ибо результат работы в первую очередь удовлетворяет создателя, но не публику.
Я обожаю тратить деньги на бустеры для Мотыги, но понимаю, что это нечестно.
Если это в правилах игры - то честно. Честно то, что не обман. Читерить - бесчестно. Харстон тоже "донатная помойка" - но это лучшая многопользовательская ККИ.
Блин, реализация вашей игры довольно интересно звучит. И кажется, действительно лучше подходит для сетевых игр. Я в программировании новичок и пока на таком уровне делать сложно. Делаю по принципу: "нужно, чтобы на экран вывелась эта штука, иду гуглить, как это сделать". Потом понимаю, что появляются усложнения - иду переписывать код
С "изучаем потребности ЦА" не до конца согласен. Такой подход имеет место быть. Но мне больше нравится путь "изучаю свои потребности". То есть, делаю все так, как понравилось бы мне и попутно рассказываю об этом везде, где дадут возможность. Возможно, звучит наивно. Но посмотрим, что в итоге выйдет
Соглашусь, да. Понятия "честный" и "нечестный" относительно МТГ или Хартстоуна с их донатными механиками неприменимы. Тут скорее "нравится" или "не нравится". Мне вот не нравится Харт, я хочу сделать такую игру, которая мне бы полностью нравилась
Тогда на коммерческий успех расчитывать тоже наивно. Делать для себя - значит для себя.
Про прогу - нужно разделять логику и интерфейс. Можно игровую логику написать вообще без графики, в консоли или на юнит тестах. А графическую часть - отдельно. Кароч - гуглим MVC или DDD. Хотя, это для профи уже.
Я шарп мейню, но игрушки на жс пишу - особо не требовательные к производительности. Хотя ща пришлось шарп расчехлить (думал даж плюсы или раст). Нейросетку учить надо, скорость нужна, хочу нпц на нейронке сделать.
Я прост знаком был с Юнити, а там шарп. Поэтому для меня это самым легким путем было что-то начать делать
Вот код для плавного перемещения карты в нужную позицию: c.position.x - где должно быть, c.container.position.x - где есть сейчас.
const handCardPositionInterval = setInterval(() => {
hand.cards.forEach(c => {
c.container.position.x += (c.position.x - c.container.position.x) / 10
c.container.position.y += (c.position.y - c.container.position.y) / 10
})
app.stage.sortChildren()
}, fps)
И позиция: aRad - "угол карты", чтобы было "веером". Тут не оптимизированно т.к. dx и rdx можно сохранять, но я ж говорю - на оптимизацию забил)
handGraphicsInfo = {
sx: 200,
ex: 1200,
sy: 850,
ey: 900,
fps: 1000 / 60,
zindex: 5000,
zoom: 1.05,
}
const rotationDiff = Math.PI * 0.3
function updateCardPosition(i, card1, cardsCount) {
let di = (i + 1) / cardsCount
let dx = handGraphicsInfo.ex - handGraphicsInfo.sx
let dy = handGraphicsInfo.ey - handGraphicsInfo.sy
let rdx = handGraphicsInfo.sx + di * dx
let rdy = handGraphicsInfo.sy + di * dy
let aRad = -rotationDiff + (di * rotationDiff)
const handposition = { x: handGraphicsInfo.sx + rdx, y: rdy }
card1.handposition = handposition
card1.aRad = aRad
card1.index = i
card1.position = {
x: card1.handposition.x,
y: card1.handposition.y
}
card1.container.rotation = aRad
card1.container.zIndex = i + handGraphicsInfo.zindex
return aRad
}
Про то, как на жс по быстрому написать игру - Что такое игра? Как ее написать?
И код - абстрактный, чистая математика. Детали реализации графического UI - не существенны. Хоть юнити, хоть анрил энжин. Разве что синтаксис поменять на <язык>.
Вт кста, вот за пару дней (36 часов) для GMTK делал карточную игру.
Даже в статике все чрезмерно пестрит и глаза разбегаются. И дело не в большом количестве карт на столе
Я бы не назвал Арену идеальным примером UI, однако она более чем удобна. Глаза разбегаться разве что с непривычки могут, доска считывается достаточно легко. Даже в шакальном качестве совершенно понятно, чем играют оба и какова ситуация.
сначала сделать трейлер, потом демку без мультиплеера, потом демку с мультиплеером, потом добавить все остальное в игру
Неправильно ты, Дядя Федор
Что бы делал я:
Прототип на бумаге, поиграть с друзьями
MVP с мультиплеером, без анимаций и графики
И уже потом (если играбельно и цепляет) - альфа для обкатки на незнакомых людях.
Но вот движков для карточных игр я не видел.
Tabletop Simulator - движок/симулятор для любых настолок в принципе (сам изнутри не щупал).
Я считаю, что реклама — это устаревший маркетинговый инструмент для продажи игр.
Верю, что игру можно продать большому числу людей, если игра хорошая, и ты методично про нее везде рассказываешь.
Тут у вас противоречие. Если вы кому-то рассказываете о вашем продукте для того, чтобы этот кто-то купил ваш продукт, вы его рекламируете.
Бумажный прототип уже делал, играл с друзьями. МВП с мультиплеером звучит логично. В принципе, сейчас его и делаю, только мультиплеер не сетевой, а на одном экране. Правда на графику и анимации все же отвлекаюсь
По поводу рекламы: для меня реклама - это когда я покупаю место (на доске объявлений, в поисковой выдаче, в ленте соцсети), чтобы туда вставить объявление о своем продукте. Когда я рассказываю о своем продукте - это уже контент-маркетинг
Сразу скажу несколько предупреждений - подписочная модель - значит чтобы привлечь и сохранить пользователей нужно продумать постоянные обновления контента. Советую сразу подумать над этим как будут выглядеть эти обновления, и как не упереться в "слишком много карт" - ротация а-ля харстоун\мтг, введение новых механик а-ля Legends of runeterra или что-то еще.
Также, спрашивать с пользователей регулярную плату за ноу-нейм игру в которой возможно, особенно первое время, в принципе не с кем будет играть - достаточно рискованно. Я бы предложил модель дешевая база + регулярные платные контент-паки. (Но тогда новые пользователи могут столкнуться с огромным пейволлом в лице "тебе нужно купить все уже вышедшие контент паки").
Ну и еще - ККИ ОЧЕНЬ чувствительны к тому, чтобы на каждом этапе "прокачки" ты мог поиграть против игроков того же уровня, что для маленькой игры может быть ОЧЕНЬ сложно. В кратце - первая пачка игроков заходит и прокачивается весело, потом хотят зайти новички - и по ним бульдозером катаются уже опытные игроки.
Да, пока что только морально готовлюсь ко всем этим проблемам. План такой: первый уровень сделать бесплатным и сначала вложить побольше времени в его развитие. Когда будет достаточно классно все выглядеть и наберется база игроков, запускать следующие уровни с новым контентом и их уже продавать по подписке. Чем больше будет изначальный спрос, тем выше брать цену для подписки. Уровень ограничивает тех, с кем ты можешь сражаться (только игроки твоего же уровня), и карты, которые ты можешь использовать
Удачи тебе в твоих начинаниях!
Я являюсь фанатом MTG, ну и в целом люблю ККИ. Иногда тоже задумываюсь заняться разработкой своей игры, но по ка дальше желаний дело не уходит.
В первую очередь конечно нужно создать внутреннею механику игру, которая одновременно была бы проста и открывала большие возможности для колодостроения.
Если говорить о монетизации при условии выпуска дополнительного контента, то есть причина из-за, которой PvP ККИ игры не предлагают подписку за доступ к картам. Для обычных игроков, не киберспортсменов, важно чувствовать прогрессию в игре. При подписке ты вывалишь на них куча карт и они буквально в них утонят. Постепенное пополнение коллекции обеспечивает ту самую дозу эйфории, ради которой игроки возвращаются. Есть в принципе примеры постепенного пополнения коллекции за определённый прайс. К примеру, Heartstone, где есть сюжетные компании, и там можно по порядку познакомиться со всеми новыми картами и механиками.
Сейчас есть возможности получить гранты на разработку игр в РФ. Но я так думаю, туда нужно заявляться с игрой, которая условно пропагандирует российскую культуру. К слову, вспомнил об одной идеи о мире, где пересекаются культуры из различных времён России, и чтобы была магия и наука.
В общем, если нужна будет в чём-то помощь, к примеру, в тестировании, всегда буду рад помочь.
Спасибо!
По поводу вываливания карт при подписочной модели: представлял это не совсем так. В моем понимании игроки будут получать карты все так же постепенно, просто не будут платить деньги за покупку карт. Мне не нравится МТГ тем, что покупка карт превращается в казино, где ты тратишь много денег в погоне за нужной картой.
Делаю в одиночку мультиплеерную PvP-ККИ