[
  {
    "Name": "Cat",
    "Type": 0,
    "Title": "PROJECTS",
    "Period": 0,
    "Images": [],
    "Description": "These are my projects from every period of my life since I have been programming, thanks for checking them out!",
    "Links": [{"Text": "Projects 2026", "Url": "projects26.html"},{"Text": "Projects 2022-2025", "Url": "projects22.html"},{"Text": "Projects 2019-2022", "Url": "projects19.html"}],
    "Suffix": "+link.........+link.........+link"
  },
  {
    "Name": "SintlucasChatroom",
    "Type": 0,
    "Title": "CHATROOM",
    "Period": 4,
    "Images": ["/portfolio/resources/chtrm1.png","/portfolio/resources/chtrm2.png"],
    "Description": "This is a team project we made for school. It was the only web project we had, so we chose to create a chatroom with customizable styles. The tokens are exposed in the JavaScript, which is a sacrifice we took to focus more on the architecture of the website.",
    "Links": [{"Text": "here", "Url":  "https://sint-lucas.github.io/sd1-p4-challenge-agile-2526-boterhamzakje/"}],
    "Suffix": "I'm not allowed to share the github because it's a fork from a school repo, but you can try it +link. It's not functioning as a chatroom because i removed the tokens, but you can check out the page."
  },
  {
    "Name": "CurrentDunge",
    "Type": 0,
    "Title": "\"Dunge\" Dungeon crawler game",
    "Period": 2026,
    "Images": ["/portfolio/resources/dunge1.png","/portfolio/resources/dunge2.png"],
    "Description": "My first actual game, I'm making it in Processing, so that's Java, and this is my first time using Java too.",
    "Links": [{"Text": "latest update", "Url":  "https://youtu.be/j5Et8lXv1Qw"}],
    "Suffix": "I'm keeping the github private, but I am currently working on a Markdown file explaining the inner workings of it, and I post the +link on YouTube",
    "Details": [
      ["Here is a short list of things think are worth mentioning that i added to this game yet."],
      ["For the animations and entityAI i built 2 DSLs, whereof one parses symbols like <kbd><span class='keywrd'>IF</span> <span class='num'>5</span> + <span class='num'>5</span> == <span class='var'>a</span> - <span class='var'>b</span></kbd> into something like this <br> <kbd><span class='keywrd'>SWITCH_SLOT</span> <span class='num'>0</span>; <span class='keywrd'>ADD</span> <span class='num'>5 5</span>; <span class='keywrd'>SWITCH_SLOT</span> <span class='num'>1</span>; <span class='keywrd'>SUB</span> <span class='var'>a b</span>; <span class='keywrd'>IFEQ</span> <span class='var'>result0 result1</span>;</kbd> this makes it easier for the actual compiler to compile it"],
      ["The world generation works by generating noise based on methods I wrote myself, and several algorithms which are customizable via a json file"],
      ["The word ofcourse also needs entities, theyre generated using templates also from a json file"],
      ["The templates and rulesets are kept as simple as possible so they're easy to mutate and give variety throughout the world"],
      ["I'm also planning on adding anything in nature by using something similar to L-systems, and maybe making it so that the code is an array of bytes where every even byte is a function like forward or turn right/left and every odd byte is the argument for that function, making it easy to mutate every even byte to make every plant/tree vary."]
    ]
  },
  {
    "Name": "3DPlatformerWithLanMultiplayer",
    "Type": 0,
    "Title": "3D PLATFORMER IN THE C# CONSOLE APP WITH LAN MULTIPLAYER",
    "Period": 3,
    "Images": ["/portfolio/resources/image-15.png","/portfolio/resources/image-14.png"],
    "Details": [
      ["This is a tool I made for turning .bbmodels into models, animation and rigs files for my engine"],
      ["/portfolio/resources/tool.png"],
      ["I was also working on adding immersive portal, which turned out to be successful"],
      ["/portfolio/resources/portal.gif"],
      ["Physics system: it has AABB collision checking and velocity based movement"],
      ["Rendering system: the rendering has multiple layers, every draw function comes down to drawing a point on the field, which is allowed or not allowed by the program looking at the depth buffer, from there it draws lines and lines draw triangles."],
      ["Models, rigs and animations are done by parsing my custom made filetypes into initialising classes and putting them into dictionaries so they can be used to render the players and enemies and their animations"],
      ["Entities work by having one list with all the entity instances and then updating them one by one, every entity type has its own method and render method."],
      ["Portals were done with a very nice trick, I had 3 cameras, one main and 2 for the portals, and the portals just offset the cameras and made it so the color of the portals were showing the color straight from their cameras output, like a greenscreen"]
    ],
    "Description": "This project is a big one, it has moving platforms, enemies, a text rendering engine, file parsers, rig editor, model editor and functional LAN multiplayer using TCP networking, in the C# console app",
    "Links": [{"Text": "Github", "Url": "https://github.com/FlorisTim/3D-platformer-in-the-c-console-app"}],
    "Suffix": "+link I learned most of C# with this project, I started this one at 5 months of experience with C# and ended it with 7 months, I learned the most in those 2 months"
  },
  {
    "Name": "PizzaShop",
    "Type": 0,
    "Title": "PIZZA SHOP",
    "Period": 2,
    "Images": [
      "/portfolio/resources/image-10-1024x852.png"
    ],
    "Description": "A simple webshop, not functioning as a real one, as a project for school we had to make a webshop, my webshop used a JSON file, calculated the total price and kept the items in the cart when you reloaded the page, there's an “add more” product at the end, its purpose was to show how expansive it was.",
    "Links": [
      {
        "Text": "Github",
        "Url": "https://github.com/FlorisTim/javascript-css-html-challenge"
      },
      {
        "Text": "Test it here",
        "Url": "https://rawcdn.githack.com/FlorisTim/javascript-css-html-challenge/cd5ff765c0c4147d57e0f7a9b7b6056323c69ee5/sd1-p2-challenge-javascript-2526-FlorisTim/project_files%20folder/web_shop_floris.html"
      }
    ],
    "Suffix": "Links: +link, +link"
  },
  {
    "Name": "Portfolio",
    "Type": 0,
    "Title": "PORTFOLIO",
    "Period": 3,
    "Images": [
      "/portfolio/resources/portfolio.png"
    ],
    "Description": "The site you're currently on, I liked building this site because it was my second website ever, although the HTML and CSS are basic, every project itself is generated by the JavaScript, each project is generated from structured data, allowing me to add and remove projects very easily",
    "Links": [
      {
        "Text": "Github",
        "Url": "https://github.com/FlorisTim/portfolio"
      }
    ],
    "Suffix": "+link"
  },
  {
    "Name": "WireframePlatformer",
    "Type": 0,
    "Title": "3D WIREFRAME PLATFORMER",
    "Period": 1,
    "Images": ["/portfolio/resources/image-11-768x606.png"],
    "Description": "This project was a 3D wireframe platformer, it had its own rendering system as it was in the console app.",
    "Links": [{"Text": "Github", "Url": "https://github.com/FlorisTim/3D-Platformer-in-C-Console-App"}],
    "Suffix": "It has moving platforms, and platforms slowly disappear behind you, it was also infinite with a checkpoint every x amount of platforms, +link",
    "Details": [
      ["On the topic of 3D, this is a raycaster I also made in the console app"],
      ["/portfolio/resources/raycaster.png"]
    ]
  },
  {
    "Name": "FinalAssignment",
    "Type": 0,
    "Title": "SIMPLE FIGHTING GAME",
    "Period": 2,
    "Images": ["/portfolio/resources/image-12-768x544.png"],
    "Description": "This project was a game with a simple battle system, item management, and procedurally generated items and enemies, this was the final assignment for the year.",
    "Links": [{"Text": "Github", "Url": "https://github.com/FlorisTim/FinalAssignmentYear1"}],
    "Suffix": "it has items, several stats, player classes and enemies, items get stronger overtime and every time you win you get more powerful, eventually unlocking bonuses, +link"
  },
  {
    "Name": "MusicGame",
    "Type": 0,
    "Title": "MUSIC MIXING GAME",
    "Period": 2025,
    "Images": ["/portfolio/resources/musicmixinggame.png"],
    "Description": "A game where you enable and disable certain sounds which combined created a song",
    "Suffix": "The microphone could be toggled to make other sounds position decide if the sound would be going through the left or right channel"
  },
  {
    "Name": "OperatingSystem",
    "Type": 0,
    "Title": "SIMULATED OPERATING SYSTEM",
    "Period": 2021,
    "Images": ["/portfolio/resources/simulatedoperatingsystem.png"],
    "Description": "An attempt at making my own operating system, it was a very experimental project but extremely fun to make",
    "Suffix": "There was an app store which would later be made online"
  },
  {
    "Name": "ChatApp",
    "Type": 0,
    "Title": "ONLINE CHAT APP",
    "Period": 2019,
    "Images": ["/portfolio/resources/onlinechatapp.png"],
    "Description": "A chat app where you could make your own emoji's, share 10 by 10 binary images, animated symbols and of course normal text too",
    "Suffix": "It had an entire text render engine, with formatting, colors and custom emojis rendered based on a few symbols, this was also my first introduction to networking and encoding and decoding data"
  },
  {
    "Name": "PMSalesGame",
    "Type": 0,
    "Title": "SALES GAME",
    "Period": 2023,
    "Images": ["/portfolio/resources/oldsalesgame.png"],
    "Description": "This was a game where you had to keep track of trends, what products were popular, inflation and hiring and paying managers",
    "Suffix": "Once in a while there was an enemy and at the end of the battle if they had more money you'd lose the game"
  },
  {
    "Name": "Portal",
    "Type": 0,
    "Title": "VISUAL PORTAL EFFECT",
    "Period": 2019,
    "Images": ["/portfolio/resources/portaldemo.png"],
    "Description": "The idea in this project was that you'd be able to see half of the player on one side and the other half on the other.",
    "Suffix": ""
  },
  {
    "Name": "2DWorldGenerator",
    "Type": 0,
    "Title": "2D WORLD GENERATION",
    "Period": 2,
    "Images": ["/portfolio/resources/image-13-768x560.png"],
    "Description": "Inspired by Minecraft I wanted to make a simple world generator, every tile is 4×4 by utilizing the foreground and background colors, it was originally meant to be simulating how fungus grows, but I never got to that point as other, more bigger projects got in the way.",
    "Links": [{"Text": "Github", "Url": "https://github.com/FlorisTim/worldgenerator"}],
    "Details":
    [
      ["A similar project to this"],
      ["/portfolio/resources/topdownworldgeneration.png"],
      ["Here I made a grid where every pixel got randomized and then getting averaged out by looking at their neighbours, I mapped it to colors that resemble terrain"]
    ],
    "Suffix": "it has 5 different tiles, sand, grass, dirt, stone, water and air, it featured mountains and shallow lakes, with grass being replaced by sand if underwater, +link"
  },
  {
    "Name": "PlantGrowth",
    "Type": 1,
    "Period": 2026,
    "Source": "/portfolio/resources/video_1-1.mp4",
    "Description": "Procedural plant growth, I made this one and the next one after hearing about “L-systems”, from what I know they're a way of representing how a plant grows on text"
  },
  {
    "Name": "SalesGame",
    "Type": 1,
    "Period": 2026,
    "Source": "/portfolio/resources/video_1 (2).mp4",
    "Description": "prototype sales game where you have to buy and sell stuff online, I never got to finishing the game"
  },
  {
    "Name": "RagdollGame",
    "Type": 0,
    "Title": "RAGDOLL PHYSICS GAME",
    "Period": 2024,
    "Images": ["/portfolio/resources/image-768x576.png"],
    "Description": "This project uses a built-in physics library, This taught me how to handle joints, gave me a basic sense of physics, and was fun to program too.",
    "Links": [{"Text": "Goto game", "Url": "https://rawcdn.githack.com/FlorisTim/Portfolio-sources/refs/heads/main/stickmangame.html"}],
    "Suffix": "The game has powerups, per limb damage, and sound effects. +link"
  },
  {
    "Name": "Dunge",
    "Type": 0,
    "Title": "DUNGEON CRAWLER",
    "Period": 2025,
    "Images": [
      "/portfolio/resources/image-1-768x429.png"
    ],
    "Description": "Inspired by the average dungeon crawler, I attempted to make one myself, I worked on it for about 8 months, and while developing made several programs that helped me develop the game",
    "Details": [
      [
        "/portfolio/resources/image-2-150x150.png",
        "/portfolio/resources/image-7-150x150.png",
        "/portfolio/resources/image-6-150x150.png"
      ],
      [
        "I made a separate animation program for coding the animations, they were all formula based, the game itself featured a particle system, entities, items, an inventory system, sound effects, achievements, music and a combat system, I also added a system inside the game itself to edit how the generator works, enemy AI works etc, everything was JSON based."
      ],
      [
        "/portfolio/resources/image-3-768x507.png"
      ],
      [
        "/portfolio/resources/image-8-768x576.png"
      ],
      [
        "I created an additional animation program for this game specifically, which included a self made lightweight version of Scratch."
      ]
    ],
    "Suffix": ""
  },
  {
    "Name": "Sales",
    "Type": 0,
    "Title": "SALES TRACKING SOFTWARE",
    "Period": 2025,
    "Images": [
      "/portfolio/resources/sales.png"
    ],
    "Description": "This is a project I made for when I worked at GoGetters, I uploaded the chat history at the end of the week to keep track of what my score was.",
    "Suffix": "It had a way to keep track of bonuses, how much I made, how much I made for the company, my average sales in a month, my highest record, and if it's above or below the quota"
  },
  {
    "Name": "MachineCreator",
    "Type": 0,
    "Title": "MACHINE CREATION GAME",
    "Period": 2023,
    "Images": ["/portfolio/resources/image-9-768x458.png"],
    "Description": "Here I created a project that lets the user create entire machines with basic components, like calculators, counters and simple computers, I got inspired by Minecraft redstone",
    "Suffix": "The game had a save and load system, a simple GUI for selecting and editing a project, and control over how many steps the simulation takes every update."
  },
  {
    "Name": "3DRaycasterScratch",
    "Type": 2,
    "Title": "3D RAYCASTER DEMO",
    "Period": 2020,
    "Embed": "https://scratch.mit.edu/projects/436335693/embed",
    "Description": "This project explores the use of raycasting to simulate visibility and spatial rendering, resulting in a simple game built around these techniques, I also added a simple interaction mechanic",
    "Suffix": "The game features footstep audio, a basic interaction system, and multiple rooms with differently colored walls that influence the appearance of the sky."
  },
  {
    "Name": "ShadowEffectScratch",
    "Type": 2,
    "Title": "Live shadow effect",
    "Period": 2020,
    "Embed": "https://scratch.mit.edu/projects/458383227/embed",
    "Description": "Inspired by Among Us, I built a raycasting-based shadow system that dynamically hides areas behind walls when the player turns corners. This project builds on techniques developed in a previous raycasting implementation.",
    "Suffix": "Featured walls and windows with distinct visibility behavior: the player is blocked by both, but can see through windows. Includes a simple objective system where the player collects 4 apples. Developed as a proof of concept for visibility and interaction mechanics."
  },
  {
    "Name": "CarGame",
    "Type": 2,
    "Title": "2.5D CAR Racing game",
    "Period": 2021,
    "Embed": "https://scratch.mit.edu/projects/523874988/embed",
    "Description": "In this project I created a 3D effect by placing a bunch of road segments and applying a size and parallax effect to them, same with the items and obstacles",
    "Suffix": "The game features several obstacles like construction cones and cars, and items like coins, also a day and night cycle, road lights, and car lights"
  },
  {
    "Name": "EscapeMansion",
    "Type": 2,
    "Title": "ESCAPE GAME DEMO",
    "Period": 2021,
    "Embed": "https://scratch.mit.edu/projects/546110279/embed",
    "Description": "This project is a simple game where you have to locate keys, find gates and escape a mansion, you can navigate with the map",
    "Suffix": "Featured keys, gates, multiple levels and a basic inventory system, I used a specific mapping of the players position and the x and y of the room where they're in to draw a point on the map"
  }
]
