I added a way to transform layers with the mouse by pressing the 'G', 'R' or 'S' keys to grab, rotate and scale the selected layers in a similar fashion to blender. I made shift slow the transformation speed by a tenth and ctrl to snap the transformation to intervals. I also allowed users to type in the value for the transformation with the number keys if they wanted a specific value and constrain their transformation to one axis with the 'x' and 'y' keys. You can try the build at https://714e13e8.graphite-master.pages.dev. This was one of my bigger PRs (Collaborating with pull requests - GitHub) at about 550 lines of code available at github.com/GraphiteEditor/Graphite/pull/356/files.
I worked closely with @Keavon to refine the UX with things like reversing an operation if you switch directly to a new transform operation, removing the negative when all numbers are deleted and ignoring presses to decimal point when there is already a decimal point.
I recently made the scrollbar functional in graphite - an open source drawing program for the web. This built on TrueDoctor's work of finding the bounding box of artwork.
The scrollbars where difficult to implement because they needed to allow users to scroll infinitly far by reserving a space at the end of the scrollbar whilst also not just sharply stopping as they reached a certain point but slowing down the position change as it got further up the track (as specified by Keavon).
My initial approach with this caused some strange issues like the going back over the artwork when the scrollbar was dragged very far or when zoomed out very far (thanks to Keavon and TrueDoctor for finding these problems). My initial implementation also caused the scrollbar to stop when the artwork was inside the viewport which combined poorly with the dragging mechanism.
This taught me about planning things out on paper as well as responding to feedback.
I have recently been learning Rust, a programming language similar to C and C++ in speed and syntax but with an emphasis on memory safety; for example handling if a variable is None. I found Graphite whilst looking on a Rust newsletter (gamedev.rs/news/020/#graphite). Graphite is a new vector editor built using Rust. The master branch can be found on the web thanks to WASM, which is a portable binary-code format for executable programs similar to assembly except it can be run on all architectures.
Above is a screenshot of the current master of graphite (editor.graphite.design/). The source code is available at their GitHub repository github.com/GraphiteEditor/Graphite. I have made several contributions available github.com/GraphiteEditor/Graphite/pulls?q=author%3A0hypercube+is%3Amerged including
I was really pleased to receive the following feedback from one of my code reviewers who congratulated me on 'the awesome work you did on this, it's so nicely polished and I hope you're proud of your work on this feature.'
I'm delighted to announce that my game, Runaway Trains, has made it through to the finals of the BAFTA Young Game Designer - Game Making competition.
The list of finalists is available at:
And the BAFTA page for Runaway Trains is here:
I have been learning Haskell with the Programming in Haskell book along with an online video course. I chose to learn a functional language because it gives me a different approach to programming which is very valuable. Whilst programs in Haskell can be beautiful and concise, it is very hard to get your head around writing it as it uses some completely different programming paradigms to something like C++.
I have also been learning Rust, a relatively new programming language with a focus on safety and speed. It has no runtime and it can reach speeds of C whilst maintaining type safety. To achieve this safety, it has no Null, it also has variables as non mutable and it only allows one mutable pointer to a data structure. This means it can catch the most common crashes at compile time.
Although to begin with it felt like I was battling the compiler, I now recognise how useful it is. To learn rust I have been using The Book - doc.rust-lang.org/book/
I am very excited to have won the Oxford Computing challenge 2021 (Intermediate). I would like to thank Mr Cronk and the OUCC for continuing to run this competition in these difficult times.
I have now completed runaway trains, a game made in UE4 for the YGD competition. In the game, you control the points to a model railway and have to stop the trains from crashing.
I am really pleased to say that I have qualified for the finals of the OUCC. I would like to thank my teachers for organising this.
I've passed the TensorFlow in Practice course at Coursera that is taught by Andrew Ng and Laurence Moroney. There were four courses, each of which lasted four weeks, and each week had a coding challenge that I had to pass to progress. I really enjoyed the course and thought the teaching was excellent.
My artwork for Water the Crops was featured in section 3 of "BAFTA Young Game Designers Initiative Impact Report": https://www.bafta.org/sites/default/files/uploads/ygd19impactreport.pdf.
I've joined the Coursera course "Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning". I enjoyed the Udemy course on Unreal Engine/C++ and found it a good way to learn.
I've finished the Udemy course "Unreal Engine C++ Developer".
It took me about a year because I did two big side projects whilst I was doing the course, VR 10 pin bowling and another VR game, Glass Goes in Green.
I thought the course was excellent. Udemy have kept it up to date. The lectures (about 50 hours) are good: they teach, but they also make you do plenty of the work yourself.
Here is a screenshot of the final project in the coarse, Testing Grounds:
And here is the certificate:
I am very excited to say that I won the final of the Oxford Computing Challenge 2020 (Junior) with a score of 70 out of 78. I would like to thank Mr C. for organising this and OCC for running the final in very difficult times.
I scored 66 out of 66 on the first round of the Oxford Computing Challenge and have qualified for the final 20. Thank you to Mr C. for organising this.
I've been quiet on my blog recently, but very busy with a project.
I have finally built my first VR game for Oculus Rift in Unreal Engine / C++. It's a recycling game. Grab items off the conveyor in and throw them into the right recycling bin: keep up your accuracy to keep playing as the conveyor gets faster.
I had nearly completed the game at Christmas and was doing the final debugging when I made a mistake with my back up to github and corrupted the game and the back up. I ended up having to redo all the Blueprints and got a long list of bugs.
I've created a new page for Unreal Engine projects. You can get the build and the source code and (in case you don't have Oculus) watch a video using the link below.
I've spent my summer working on a virtual reality game in Unreal Engine / C++. This one builds successfully (my 10 pin bowling VR game wouldn't build for some reason). I've focused on making it as playable as possible. I'm sorting out instructions and sound effects at the moment.
I had a lovely time in London today at the BAFTA Young Game Designer finals, thank you Mel and colleagues. Congratulations to all the winners, particularly Max Robinson who won my category with LASERASE: Demolition in the future. There's always next year ...
I've been doing a Udemy course "Unreal Engine C++ Developer" (https://www.udemy.com/unrealcourse/). I finished the Battle Tank game today, which takes 121 lectures. After my problems building an .exe of my bowling game, I was pleased that Battle Tank built successfully. I like the Udemy course: it's good at getting you to write the code, has structured challenges and is kept updated. There's another bit of the course, then I'll try another project of my own.
I'm very excited to say that I won the TCS Oxford Computing Challenge, Junior (Years 6 and 7).
There were two rounds, with the top 20 going through to the final round. I was quite nervous before the final round, but forgot about my nerves when I started doing the questions.
Thank you to my teachers for enabling me to do this.
I'm really excited that BAFTA have chosen Water the Crops as one of 10 games to take through to the finals in the BAFTA Young Game Designer - Game Making Award. My game is featured at http://ygd.bafta.org/competition/competition-news/2019/water-the-crops.
I'm also enjoying playing the games written by the other finalists that are available at http://ygd.bafta.org/ygd-winners-and-finalists.
10 pin bowling is my first VR project for Oculus Rift. It's also my first proper project in Unreal Engine / C++.
I've been doing a Udemy course on Unreal Engine / C++ that's great and I wanted to do a project of my own as well as following the tutorials.
The main bowling mechanic was very quick to make. It took much longer to lift up the skittles that were still standing and sweep away the others. Also the scoring took a long time.
I learnt to write the code in really small steps because if you make any errors in C++ the Unreal Editor crashes and you have to reload everything.
I haven't sorted out packaging to make an .exe. It builds with no errors, but crashes when I run it. If I sort this out, I will upload the .exe.
I've created a machine learning page and added my first project. It's a digit recognition program in Unity using a Dense network trained on the MNIST database using Keras / Tensorflow. The main problem was exporting the trained model into Unity (which wouldn't work with a Convnet). I'm going to see if I can do this with Unreal Engine.
I've finished 3 big projects in the last month, Water the Crops, Navigate and Where to Next? I'm going to focus now on trying to learn something new, rather than just getting stuff out. I'm planning to look at machine learning and Unreal Engine.
I've completed Where to Next? a project a worked on with my sister.
Where to Next? makes intelligent recommendations to travellers about where they should visit next.
Users rank places they’ve visited. Then we make intelligent recommendations by looking at other travellers who have given out similar rankings to the user.
Data is input using a keyboard or voice recognition/text to speech (using a Google AIY kit), making it easy to use in places like Tourist Information Offices or railway stations, including by people with limited vision.
The code is on my Python/Other page
I am doing lots of projects every projects all the time and I can't put them all on the website so I've made a blog.