KBVE / kbve

KBVE Monorepo
https://kbve.com/
11 stars 11 forks source link

[Concept] : CryptoThrone.com - King of the Hill App/Game #2267

Open h0lybyte opened 3 months ago

h0lybyte commented 3 months ago

Core Concept/Theory CryptoThrone.com - King of the Hill App/Game is an innovative gaming application where players fight to hold and defend a throne. The core gameplay involves defending against waves of NPCs while other players build up their settlements and prepare to challenge the throne. The game draws inspiration from the Game of Thrones series, incorporating elements of strategy and tower defense games. The aim is to create a dynamic and competitive environment where players must balance offense and defense to become the ultimate ruler.


Alternative Ideas

Alternative Examples/Sources

Additional Information


h0lybyte commented 3 months ago

Deployment of the source code will be here.

We will have to create a cryptothrone.mdx with more of the docs, game logic and things of that nature, but for this instance... just making sure that the project is up and running would make the most sense.

Afterwards we could at least make sure that the throne can be rendered and taken.

h0lybyte commented 3 months ago

The color scheme that I will aim for is a wizzy black & yellow.

For the game engine, we will just use React + Phaser , keeping it simple and easy to manage.

We wont be building most of this anyway, this will be a dope side hobby project xD

h0lybyte commented 2 months ago

This is the roadmap that I am following, CryptoThrone Roadmap.

Getting a playable but fun demo is the goal for now, I am going to try and get it running as fast as I can. Afterwards, I will wrap it in either Electron or Unity and release it as a Steam game.

h0lybyte commented 2 months ago

Current zod structure for the itemdb


import { z } from 'zod';

const bonusesSchema = z.object({
  armor: z.number().optional(),
  intelligence: z.number().optional(),
  health: z.number().optional(),
  mana: z.number().optional(),
});

const IObjectSchema = z.object({
  id: z.string(),
  name: z.string(),
  type: z.string(),
  category: z.string().optional(),
  description: z.string().optional(),
  img: z.string().optional(),
  bonuses: bonusesSchema.optional(),
  durability: z.number().optional(),
  weight: z.number().optional(),
  equipped: z.boolean().optional(),
  consumable: z.boolean().optional(),
  effects: z.string().optional(),
  stackable: z.boolean().optional(),
  rarity: z.string().optional(),
  levelRequirement: z.number().optional(),
  price: z.number().optional(),
  cooldown: z.number().optional(),
  action: z.string().optional(),
  craftingMaterials: z.array(z.string()).optional(),
});
h0lybyte commented 2 months ago

Pixel image of each item in inventory will be 32px for now.

h0lybyte commented 2 months ago

Should we use theo's uploadthing to store all our assets? This might make it easier for us to hold the copyrighted assets and also handle some of the edge cases when building out the game?

Let me know if this is something we could look into, Right now, its just a suggestion for the future.

h0lybyte commented 2 months ago

Building out the NPC Engine right now, going to use dexie as a helper library and store all the data into a cache. The NPCDB will contain all our NPCs, moving a decent amount of that logic out of the game and into its own system.

The process then of creating a new NPC or updating an existing one can be done all outside of the core game.

h0lybyte commented 2 months ago

Reference for Loading NPCs

h0lybyte commented 2 months ago

Here is the base of the Dialogue system that I have right now:


export interface IDialogueObject {
  id: string;
  title: string;
  message: string;
  actions: IDialogueAction[];
  options: IDialogueOption[];
}

Yet I am thinking we might want to include a style option too for the dialogue.

h0lybyte commented 1 month ago

The z-index for the navigation seems to be a bit buggy , maybe we could push it up?