2018-05-06 22:42:34 Posted by RetroZelda

Craigslist Jukebox

As i continue down 2018, I have attempted to work on 1 micro project a month. It is already May, but I finally got to a point with April's project that I can close it and move on... I'm still ignoring the fact that there wasn't anything in March. For my latest project, I created a small html parsing library that I didnt know what to do with. Create a bot? To what end could I, or anyone, benefit from a bot? Instead, I decided on the most pointless idea: Scrape craigslist ads to generate music. So, I created a basic chiptune-like system that would generate songs from these scraped ads. After porting to C# and implementing inside unity, this is what I have created. For each ad, it will determine if it will use a major or minor scale. Then, it will decide on a heptatonic scale from a western diatonic scale pattern where, if minor, will be in its "natural minor" form. Once the scale's tonic gets decided, a 1 octave table gets created for each frequency of notes based on an 88 key piano. The final octave gets decided in a range of +2 and -2 from the 4th octave of the piano - this range is fairly arbitrary because certain waveforms at higher pitches sound.... terribly screechy. Finally, the ad will generate the actual phrasing of the song based on 2, 4, 8, or 16 4/4 measure phrases in 2 forms: a bridge and a melody. A bridge is a beat-only phrase that can be 2 or 4 measures that will set a new beat style for the melody phrase - which can be 8 or 16 measures. Beats are hard set to ensure some level of sanity when listening. As of right now, there are 6 possible beat patterns that I created. The melody is generated based on each character in every word of the ad posting. In simple terms: 1 character means 1 note. There are exceptions based on ad length and the algorithm used to ensure songs wont be too long - which could take waaay tooooo looooong to generate. But, each note is essentially an index into the scale table that was generated(or a rest), and a note's time step(quarter, eighth, sixteenth, etc), and the notes final length as a subset of the time step. There are 4 audio layers that are used in each song: Low, Mid, High, Melody. Low, Mid, and High are reserved for beats, and melody is for the actual song melody. This gives me 4 channels of audio of which that I wanted to set. Each layer is given its own waveform pattern. I have utilized the classic 8-bit waveform patterns for simplicity: Sin, Sawtooth, Triangle, and Square, and then I played around and found that adding a Concave and Convex Triangle adds a nice variety. Each note is compiled into the raw sample data that is sent to your audio hardware to be played. This is where using unity has it's advantages because I can just treat the raw data as if it is an uncompressed wav and just fill the buffer with the data and hit play. The sample rate used is 44100hz and I generate sound waves based on the speed of sound in air at 68 degrees at sea level - this is what the temperature was outside according to google at the time :) I published this on the play store so I dont have to host it, and because i wanted to so shut up ;) Anyway, you can download it to your android device here: https://play.google.com/store/apps/details?id=com.retrozelda.jukebox. I'll open source the project at some point soon so you can delve into the randomness that is my mind. Just make sure to ignore the poor UI design - it wasn't my focus :p References: Background wave display Speed of sound Piano Notes Wave Generation Tools: Testing wave patterns Creating different beat types

2018-01-28 21:53:49 Posted by RetroZelda

Experimental Jams

In the past 30 or so days, I have done 2 game jams. One of them was because I was bored and I wanted to experiment with various mobile APIs for a future project I hope to develop. and the second was global game jam 2018! The global game jam is where Full Frontal comes together(or in this years' case, remotes together harharhar) to try out a core mechanic for a game and usually fail to further expand on it. As I start doing more and more of these mini projects, I plan to keep pushing myself to keep a "e;shippable"e; quality towards my own work - in a programming sense. I realize that trying to think design wastes time(rhyming is still cool!) when I can think architecture and stretch my logic and my personal code libraries. This is why I have started pushing small jams to the google play store. It pushes me to ensure things keep a higher quality and will leave with with code that I can reuse in the future. One and done code can be fun, but in my eyes, it cant develop my skills and evolve as I strive to do. So when i complete a project, idea, or expiriment, i can have to live with the embarrassment that maybe what I wrote is terrible and it will push me more. Anyway.... You can find the developer page by searching RetroZelda(you should know this by now), or check it out here: https://play.google.com/store/apps/developer?id=RetroZelda So far I have 2 small jams in 2 months. Maybe I wont break the Game Jam Chain this year... and no... I dont think streaker will get a release... ciao fur niao

2017-08-15 22:48:07 Posted by RetroZelda

Unity on Linux

So, about 9 months ago, I decided to change the OS of my main dev machine at home to Ubuntu 16.10 with the goal of mastering a new OS, learning what I can about linux as a dev machine, and to help with some cross-platform development. Essentially, I wanted a new challenge for programming that didnt involve having a million different gcc environments on windows because that just became a mess. So, with a lost of my programming projects utilizing Unity, I reached a point where I needed to have multiple instances of unity inside of Ubuntu. Installing everything was fine, but it was always a pain to launch each version. So I developed a bash script that helps me load up any installed unity version through a single console command. Its a small script, but helps dramatically with launching projects, so I decided it should be shared. I have it attached to this post. To install, do the following: - Place the script inside /bin (or wherever you keep your custom scripts) - run command: sudo chmod +x /bin/unity_editor - Install unity versions via the installation script to /opt - Ensure the unity install folder is named similar to Unity-*Version*. Example: Unity-5.6.1. Now, you can execute the script by running: unity-editor *version*. So, if you have Unity-5.6.1, you will run: unity-editor 5.6.1. If you run without a version set, it will list out all version you have available on your machine. This helps me out greatly, and I hope it will help you out too.

2017-08-15 22:58:52 Posted by RetroZelda

RetroLib - My Unity code tools

Over my time developing games and expirimenting with different things inside Unity, I have found that I would use functionality over and over again. To keep my own changes to these files, I decided to create a project that held them all. Over time, more and more changes would occure and I would have to manually merge these changes across multiple projects(right now, I have 5 that still need updated.... if I get back to them :P). So, with this issue, I decided to push everything onto github. Why github and not bitbucket? Well, I dont have much on my github, so I decided to keep using bitbucket for my projects, and github for my libraries. The github page is located here: https://github.com/RetroZelda/retrolib-unity. The core usage of everything should be documented, with some examples for the more useful portions. Keep in mind, some of this code was initially created back in Unity4 days, and some(the FSM and event system) was originally created in Java for Nyanimals(the source of that can be found on my bitbucket). I had since moved those to C# and into unity, and I have developed it to be much easier to setup. I also have the FSM ported to UE4! But, I have lost that code in the seemingly endless void that is my projects folder(i have 93 folder in there, with some subfolders holding more projects...). These are mostly all personal projects, or contract/freelance projects that I have worked on over the years(ranging from Unity, UE4, my own engines, homebrew stuff for 3DS and saturn, windows tools, etc etc). Anyway... TLDR: New Unity library has been published on github here: https://github.com/RetroZelda/retrolib-unity And I also have the first version attached to this post for the lazies, but please refer to github for the latest version.

2017-02-15 16:53:00 Posted by RetroZelda

Its been a while

I've realized that I have been neglecting to post anything recent, so I have decided to give a recap of what I have been working on the past year and a half. Dont worry, Ill keep it brief with only the highlights. So, first things first, I have done 2 Global Game Jams with some friends from work. For those unfamiliar with the Global Game Jam, its a world wide game development event where you have 48 hours to design and develop a game. In 2016, the theme was "Ritual" and the team consisted of a 3d character artist, a 3d animator, and 2 programmers. The game we came up with is called Stairway to Something(We couldnt come up with a name, so we left it at the temp name). It is a multiplayer game that can handle as many players as controllers you can fit into your computer before you overload your usb bus. Its a game where 1 player is a god, dropping boulders down at the other players. The god is trying to knock the other players off the screen, while the players are running up an aztec pyramid to try and get to the top. Upon reaching the top, that player sacrifices himself to ascend to the heavens to become the next god. I worked mainly on the input system, the gameplay states(menus), the actual game loop(winner detection, player role switching, etc), the god mechanic, as well as assisting everyone else with using bitbucket and git, assisting with content implementation, and basic design. While the other programmer did the other stuff. A link to this game can be found here: http://globalgamejam.org/2016/games/stairway-something. The 2017 Global Game Jam just happened, and I feel like it was more of a success. We had the same 3d artists, but we also had a UI artist and a sound guy. This year, I was the only programmer, so we picked up a student programmer/artist and she handled the camera(which works really well). The theme this year was "Waves", so we came up with out game called Tanks But No Tanks, which is a 4 player Sumo arena game with dinosaurs in tanks with unique weapons for each player. I then handled getting everyone setup on the assembla perforce server, all sound, art, and animation importing and implementation, the gameplay, helping the artists with how content should be handled, working with the sound guy to make sure sound implementation was to his liking, and pretty much working with everyone to make sure we were all on the same page. A link to this game can be found here: http://globalgamejam.org/2017/games/tanks-no-tanks Because of the game jam, I was featured on a local gaming podcast called Rocket Punch. To view the clip, where I sound horribly awkward, you can go here: https://www.youtube.com/watch?v=Fw3ez0J5CdQ. This was the first time I was in front of a mic, so I was not prepared on how I should handle my voice. Maybe next time. Also, I should note that I give my artist friends shit a lot of the time and we do have a back and forth on "Art is useless" and "Who needs a programmer". The art we have definitely drives the game because of their skills and resume's are really impressive and waaaaay beyond my equivalent. I'm not mentioning names because they cant see me admit that. Plus, they should be busy mocapping instead of reading this post :) I have recently started working with a group of guys in a side organization called Redstone Interactive(RSI) where I am the programming lead. Right now, we have 1 released project that I was the sole programmer on called "My Dy - 3D Dice Roller". It is available in the iTunes and Google Play stores. This app is an experiment on publishing to the app stores, handling in app purchases, and handling in app advertisements. With RSI, I have developed many systems that were for various prototypes, including gyro/accelerometer controls, gameplay event recording and real time playback, and a grid based system. I am working on a project right now that is getting close to a vertical slice. I have also started work on a few side projects, 1 with the 2 artist from the global game jam, and another was my own. I dont want to say much about the projects, as time has been limited, but I will put up a screenshot of my mobile game Streaker here: **EDIT: Decided not to have a NSFW screenshot(even edited. sorry). Just ask about it if you care :p ** At work, we have released the Go Army Edge Soccer app that I have worked on. There was also another Go Army Edge app that was in the pipeline that I was heading up. I was able to get a new framework layer implemented and reached out Alpha release. But, sadly, there was complications with funding so it is "temporarily" on hold. I do hope it comes back because it became my baby. I have since moved onto another team where I work inside UE4 instead of unity. I have already saw 1 app to its "release", and have been working on redoing UI for VR/Mobile on another that is at the end of its lifecycle and almost ready to turn in. Whoever said that mobile and PC vr needs to share a UI(or just have those as the available platforms) was a good idea to do(especially with a new UI so late in the development cycle) needs to do something that I cant think of(idk. its just stressful). Oh, the project is also ALL in blueprints. So. yeah. thats great. (I am strongly against large-scale blueprint use). But, on this same project, I am working on setting up a pipeline to easily render a matinee sequence into a 360 degree video. I love learning/experimenting with new things like this. Oh, and I was also able to be the first one in house to get a UE4 HTML5 build running on internal servers. It was easy to do at home, but the environment available at work isnt.... ideal(albeit i do understand the reasons why things are they way they are...). Finally, I have started experimenting with Sega Saturn homebrew, with mild success in the game I have been trying to find time to write. Between work and RSI, I dont have much free time to explore drastically different things like this, but I do love working in a low-level, poorly documented, area of code. Its my mental candy. That is the short version of the programming side of the past year and a half. I left out details on like 5 other projects that I have worked on due to them being radically strange ways of play. anyway.... Ciao fur niao.

0 1 2 3 4 5 6 7 8 Next-->