Skip to content

Releases: SimNine/UrfQuest

v0.19.0

12 Aug 03:01

Choose a tag to compare

Added

  • Multiplayer
    • Separated game into client and server components, each of which can be run independently
    • Multiple clients can connect to a single server
  • Created "Logger" logging management framework
    • There are multiple log levels; ALL, DEBUG, VERBOSE, ERRROR, etc
  • Created static class for constants that are shared between the client and the server
  • Added startup GUI for selection of client or server role, port, client name
  • Added chat overlay, through which a client can send arbitrary chat messages to other clients
  • Added commands and parsing of command messages
    • /me, speaks a chat message in third person
    • /tp, teleports issuing playing to given postion
    • /give, gives issuing player the given item
    • several more
  • Added integration tests of client/server features
  • Added mock interfaces for client/server

Changed

  • The client now scans for keys each tick rather than listening for key presses and releases
  • Manual print statements have been replaced with Logger.log statements
  • IDs are now assigned to every entity
  • IDs are now generated by an incremental value, rather than being randomly generated
  • Map, entity position, and all randomly generated features are now based off of a seed

v0.18.0

11 Aug 20:58

Choose a tag to compare

Added

  • Added two more water tiles, identical in behavior, with slight visual changes
    • The GameBoardOverlay now increments a "tileAnimStage" counter each call to draw
    • The Tiles class now contains additional BufferedImage arrays for animated tiles
  • Added new "Particle" entity type; doesn't interact with other entities at all, purely for effect
    • Added new BulletSplash particles; they are released when a bullet collides with something
  • Added new RPG weapon
    • Fires rockets in direction of facing
    • Rockets do 5 damage, plus 0.15 damage for each tick within their blast radius
    • Rockets release puffs of smoke as they fly
    • Explosions destroy all trees within their blast radius
  • Added new stone tile, can be mined (drops nothing)
  • Added new iron ore tile, can be mined to get iron ore
  • Added new copper ore tile, can be mined to get copper ore
  • Added RPG crafting recipe: 100 gems -> 1 RPG
  • Added new "tick" command
    • Ticks the game a given number of times (without re-rendering each time)
  • Added a new "tile interaction" highlight
    • Highlights whatever tile the mouse is over within three tiles of the player
  • Added ambient blockchanges; done by helper method that executes during QuestMap's update()
  • Added new setblock command:
    • Syntax: setblock x y type
  • Added magnetic item effect: items are now drawn towards all players within a certain radius
  • Added item pickup delay: items can only be picked up after a certain number of ticks (500) of being on the ground
  • Added a 'held' item: this refers to an item that is held by the mouse pointer this feature will be more useful once more/better crafting GUIs are implemented
  • Added a subtype of grass: grass_flower
  • Added preliminary "winter mode" - purely aesthetic so far
  • Added new GameWeatherOverlay
    • functions as a visual filter applied overtop of the board
    • currently adds a blue tint to the board and projects snowflakes
    • drawback: adding this overlay considerably drops framerate

Changed

  • Each entity now contains a "map" property holding the map that it is in
  • Bullets now disappear when they hit trees or rocks
  • Eliminated old AstralRune effect, replaced it with bullets radiating outward from player
  • Bullets can now be given a custom speed
  • Redid cave system; now generates much like the upper world generates, but with closed-off spaces and minable spaces
  • Overhauled the item system
    • Items no longer have their own classes and are now generic
    • Items have an "itemType" property which determines what effects and properties they have
    • Much like the tile system now
  • Redid the crafting GUI
    • It's a bit hackish
    • A display window is added within the crafting window
    • The display window displays the inputs of whichever recipe is selected
  • Minimap now updates immediately once a tile is changed
  • MapLink has been generalized to ActiveTile
  • QuestMap now contains a grid of "ActiveTile"s (most of which are null) that will contain the locations on-grid of MapLinks, Chests, Furnaces, and all interactive tiles
  • Changed magnetic pickup to have a range specific to each player
  • Redid tile display system
    • Tile images are now stored in a 3d array: [type][subtype][animStage]
    • "Type" is the overall type of the tile; all tiles of a type have the same collision properties
    • "Subtype" affects the appearance of a tile, and what items it drops
    • "animStage" represents all the frames
  • Moved the render ticker back to having a delay of 5ms between renders

Fixed

  • Fixed bug causing the game to crash when digging into a cave
  • Fixed a bug that allowed two players to pick up the same one item

v0.17.0

11 Aug 20:54

Choose a tag to compare

Added

  • Added a second Player entity
    • Enabled switching between the original player and the backup player by hitting 'p'
    • Each player has independent inventory
    • Players now have an associated current map, and maps now contain a list of players
    • Projectiles now remember their source, and damage any mob other than their source
    • The client will only control whichever player is selected
  • Added "Rogue" mob
    • Copied largely from player
    • Given a shotgun, a pistol, and an SMG; chooses a different one each time it stops
    • Attacks in the same manner as cyclops, but is a bit faster
    • 3Has a chance of spawning in caves

Changed

  • Gave hunger and mana fields to all mobs
  • All items can now be (theoretically) used by all mobs
  • Gave cyclopses a shotgun. Because why not
    • The cyclops fires the shotgun when it is 10u away from the current player and it has a line of sight
  • Cyclops now spawns in caves
  • Cooldowns are now managed within items themselves
    • Inventory no longer has to manage item cooldowns

v0.16.0

11 Aug 13:51

Choose a tag to compare

Added

  • Added three methods to entity:
    • distanceTo(e): gets the direct distance from this entity to entity e
    • angleTo(e): gets the angle from this entity to entity e
    • hasClearPathTo(e): computes whether this entity has a direct path to entity e
  • Added two methods to mob:
    • tileCoordsAtDistance(d): returns the coords of the tile 'd' away from the center of this mob in the direction it is facing
    • tileTypeAtDistance(d): returns the type of the tile 'd' away from the center of this mob in the direction it is facing
  • Added several new items:
    • Added log item
    • Added hatchet item
      • When hatchet is used, if the tile one unit in front of the player is a tree, the tree is removed and a log is dropped
    • Added stone item
    • Added pickaxe item
      • When pickaxe is used, if the tile one unit in front of the player is a boulder, the boulder is removed and stone is dropped
    • Added shovel item
      • When shovel is used, if the tile under the player is grass, it becomes dirt, with a 5% chance of a hole being generated
  • Added new "hole" and "dirtboulder" tiles
  • Inter-map link system created
    • Each map now stores a hashmap of links to other maps
    • When holes are created, "cave" maps are generated; each hole links to a unique cave map
  • Added shotgun weapon
    • Has cooldown of 400t
    • Shoots 15-20 bullets in a single direction
  • Added LawRune item
    • Using law rune teleports the player back to their home coordinates on a given map
    • Very long cooldown (1000t - maybe should be longer)
    • Stackable
  • Added item durability for Shovels, Pickaxes, and Hatchets
  • Added rendering of miniature "durability bar" to inventory slots with durability items
  • Added cosmic rune
    • When used, spawns a chicken at the user's position
    • 1000t cooldown (same as law rune)
    • Stackable
  • Added mana mechanics
    • Cosmic rune use drains mana by 5.0
    • Law rune use drains mana by 30.0
    • Mana regenerates automatically, 0.1 per 200t
  • Added a Camera class, which wraps a mob
    • It is now possible to attach the camera to a mob, which it will follow
  • Added a CameraMob (essentially just a dummy mob to attach a camera to)
  • Added grenade item and projectile
    • Short(ish) cooldown
    • Has 1000t long fuse
    • Explodes, creating 20 bullets which spray in all directions
  • Added astral rune
    • 1000t cooldown
    • Disconnects the camera from the player for 1000t
    • The camera remains stationary while the player can move
    • Added appropriate functions in QuestGame, as there was no other reasonable place to put these methods
    • Costs 50.0 mana to use
  • Added an AttackRoutine class in which the attacking enemy goes directly toward the player
    • Set cyclops to have AttackRoutine by default
  • Added a CraftingOverlay
    • Items (such as tools) can be crafted using the crafting overlay
    • The user must have enough of the required items to craft an item
  • Added an InventoryEntry class, a generalized display for items
  • Added crafting system
    • Default key: c
    • Opens CraftingOverlay GUIContainer
    • Contains CraftingRecipies
    • CraftingRecipies contain lists of input items and output items
    • When a CraftingRecipie is clicked, the player finds out if the appropriate items are available. If they are, the required items are removed, and the product items are added
    • Added recipe for Hatchet and Pickaxe

Changed

  • Increased accuracy of pistol and smg from (+- 10 degrees) to (+- 5 degrees)
  • Merged InventoryEntry and Item classes
    • Items now have all the properties and functions that InventoryEntries used to have
  • Slowed down rendering clock (every 5ms to every 10ms)
  • Player now spawns with a toolkit (Pickaxe, Shovel, Hatchet)
  • In caves, when mining, the loot chances are as such:
    • 2% to get SMG
    • 2% to get Shotgun
    • 6% to get Pistol
    • 10% to get Law Rune
    • 80% to get Stone
    • Anyplace besides caves, only stone is dropped
  • Weapons no longer generate on surface map; only Gems and Cheese
  • Cave maps now have their center tile set as home coords
  • Separated the camera completely from the player entity
  • Renamed "Particle" class to "Bullet"
  • Runes now generate in slightly higher frequency under rocks in caves
  • Turned InventoryBar into a GUIContainer
    • InventoryBar now holds ten InventoryEntries
    • Replicates previous behavior, but differently

Fixed

  • Minimap is now generated properly; if the map is smaller than the minimap display window, the minimap is centered in the window
  • Fixed potential concurrency issue with adding new items, mobs, and projectiles.
    • New items, mobs, and projectiles are now added after all processing of current entites is done

Removed

  • Removed the "Overlay" class, replaced it with generalized GUIContainer class
    • GUIContainers are GUIObjects that hold other GUIObjects
    • Setting a GUIContainer to have a null parent makes it behave as an overlay (covering the whole screen)

v0.15.1

11 Aug 13:39

Choose a tag to compare

Added

  • Added a stackable "ChickenLeg" item dropped by chickens on death 50% of the time
  • Added a "fullnessBar" object to GameStatusOverlay, which displays hunger
  • Player now contains a hunger counter with default size of 1000, drains hunger by one point per 1000 ticks
    • Health drains by one point per 1000 ticks once fullness is empty
    • Eating chicken legs increases fullness by 5, cheese increases fullness to max

v0.15.0

10 Aug 19:22

Choose a tag to compare

Added

  • Addition of rudimentary AI system
    • Added MobAction abstract class and MoveAction and IdleAction classes
    • Added MobRoutine abstract class and IdleRoutine and FleeRoutine
      • Within each entity class's update() method, the current scenario is evaluated whenever the Mob's think() method is called
      • The think() method determines which routine will be used, and the routine assembles a (possibly random) order of actions
      • The mob then moves according to the mob's current routine's current action
    • Added AI for chicken; idles until the player is within 5 blocks, then runs away from the player until 5+ blocks away
  • Added a "build mode" to QuestGame; if buildmode is activated, the player's mouse highlights the current block
  • Added helper methods in QuestPanel to convert screen coordinates to game coordinates, and vice versa (some are broken)
  • Added a fullscreen toggle which generates a new JFrame and JPanel when called
  • Added class "Keybindings", a container for keybindings to toggle in-game functions
  • Added keybinding GUI, which allows the user to bind keys to all functions
  • Created another timer; one to tick the game, and one to render everything (surprise: speedup due to multithreading)

Changed

  • Rebuild of entire GUI system
    • Each GUIelement is now passed its relative anchor point (each corner, or the screen center)
    • Moved status bars into their own class extending GUIObject
    • Moved minimap into its own class extending GUIObject
    • Moved inventory bar into its own class extending GUIObject
    • Converted QuestGame into an overlay
    • Minimap can now be toggled off completely
    • Added rendering of the board's grid itself when debug is on
    • Added vertical and horizontal lines to indicate where the mouse is when it is over a GUIObject
  • Moved the gameboard into its own overlay
  • Moved the gui (map, statusbars, inventorybar) into their own overlay
  • The QuestGame is now solely a container for the logic of the game
  • StatusBar GUIObject must now be instantiated with an anonymous getPercentage() method in order to display information
  • Moved the full map view into its own overlay, MapViewOverlay
  • When debugging, clicking on a minimap will tp the player to the point clicked
  • Clicking or dragging while in build mode puts a grass tile down on the spot clicked
  • Decreased bullet size from .2 to .15
  • Bullets now spawn from the center of the player sprite

Full Changelog: v0.14.0...v0.15.0

v0.14.0

10 Aug 19:16

Choose a tag to compare

Added

  • Added boulder variants of grass, sand, and water tiles
  • Added map-specific "home coordinates", initialized as the location of the spawn area
  • Added Bone item, dropped by cyclops on death
  • Added death behavior for mobs
  • Added full map view (opened by pressing M while ingame)

Changed

  • Map terrain is now generated by three simplex noise maps instead of just one
    • A distortion map (essentially just another smaller-factored terrain map) is mixed into the base terrain map
    • A further distortion distribution map can limit the range of the distortion map
  • Spawn area now guaranteed to be on land and not generate in the middle of a lake
  • Console can now be opened by holding CTRL+F and then pressing P (even when not in debug mode)

Notes

  • NEW NUMBERING SYSTEM:
    • majorelease.update.bugfix_checkpoint
    • This was necessary due to the size of the next update.
    • The checkpoint is to ensure I don't break the code and not know how to fix it.

v0.13.0

10 Aug 19:14

Choose a tag to compare

Added

  • Added "tp" command (teleports player to absolute position)
  • Added "tprel" command (moves player by an offset)
  • Added tile collision for mobs, in the same way that it is implemented for the player
  • Added "use()" method to item, delegated pistol and smg's bullet-firing to it
  • Added cooldown functionality to items, using inventory slots
  • Added health functionality to mobs, and health bars that render and fade automatically
  • Added sand tile (walkable and penetrable)

Changed

  • Modified player class (and all mobs, by default) to use a degree-based direction system instead of a hardcoded one

Removed

  • Removed the "getType()" entity method and replaced it with "instanceof" in all applicable cases

Notes

  • Loader has been broken since v0.11.0

v0.12.1

10 Aug 19:13

Choose a tag to compare

Added

  • Added 'mob' class as superclass of player and chicken
  • Added "Cyclops" mob, moves more slowly than chicken, but in the same pattern
  • Added rudimentary console, accessible by pressing F1 when debug mode is on

Changed

  • Cleaned up graphics initialization of entities, tiles, player, etc
  • The tree tile is now initialized as a single bufferedimage; it no longer has to be drawn with two images

v0.12.0

10 Aug 19:12

Choose a tag to compare

Added

  • Added new chicken entity
  • Added entities (other than the player) minimap location indicator
  • Added very elementary movement for the chicken
  • Added new "particle" entity type
  • Added SMG weapon item
  • Added ability to shoot guns (SMG and pistol); bullets currently go in random directions

Changed

  • Modified game rendering so that only entities and items within 30 blocks of the player are rendered (speedup)
  • Changed keybindings; space now uses items, Q now drops items
  • Pistol shoots one bullet per keypress of space, SMG shoots bullets constantly
  • Changed mapbuilding method privacy settings, rewrote QuestMap constructor for cleaner code
  • Debug display now indicated number of items, entities, and particles currently on the map