Making my own game, here's my progress!

Syndrome

You can change this now in User CP.
Reaction score
126
I decided to make my own turn based game much like Pokemon/Yu Gi Oh as a learning experience. Tentative features include multiplayer, AI, and a stable graphic system. I actually don't even have a name for it yet. Meh. I'll think of one soon.

I plan to release this when it's 'done-ish' and keeping it completely open-sourced so someone can see how I did things.

Log 1:

Seeing as my technical artistic skills are a load of poopy-kaka, I decided to create a perl script that ransacked a Japanese trading card game's picture files and cut out the art. So, I'm sorry Square Enix for stealing your Guardian Cross images! They're all pretty nice and what not. I promise not to make this game a commercial product!

Using Java, so I stuck to the old library I was taught in high school. Something called the swing.awt library. It uses JFrames to create image spaces and supports .png and alpha layers, which helps a lot. Still, had to open up Photoshop and modify a ton of pictures to make it look just right.

Four hours later, I have a prototype battle set up. Text took forever to fix, and I have no idea how to make it scroll so the Battle Log just clears itself out whenever it gets full.

There are absolutely no animations yet so far. Just a single sprite image that flashes on and off when I used an attack [which was also dummied. The moves list doesn't really exist quite yet.]



Log 2:

I hated my UI. It was spacious but looked cramped. I made another bot that went through all the images and resized them to 295x375. The party icons are now more spaced out and equally spaced. I also started implementing a move list and the move tab is not functional. Sorta. At this point only mouse clicks works, but I aim to implement some arrow key controls later.

Implemented tooltips, but realized they were extremely obstructive. Will fix later.




Log 3:

I implemented basic keyboard controls, and removed the tooltip. The current active monster now has a glowy yellow thing around it's portrait. You have to now select an attack, which displays information on the selected move, select a target and then hit confirm. The result is a cleaner and more intuitive UI... I think.

This update took the longest. Because you can attack anyone in play there had to be a way to display health information without actually clicking on the portrait. So the party portraits are also HP bars. Chunks of the pictures turn red as the monster takes damage until it is completely killed.

I realize at this point that JFrames aren't gonna cut it. They're slow as hell. Someone suggested to me that I should try out Qt for Java. So far it looks promising, if anyone knows a good library for GUI please let me know.


Log 4:

Busy week at university. Updates will be slower now :(
Implemented a Victory screen [yeah, you couldn't really 'win' before. now you can!]... which means I need to implement a defeat screen. Hmm.

Pseudo loots now work. I say pseudo because items don't really exist yet. And I'm still unsure how I will implement EXP in this game. Perhaps you can choose how to allot them and everytime you win a battle you gain more points to allot? I think I will go with that for now.




More updates coming!
Please let me know how I can improve the UI and what not.
And yeah, the search of a good GUI library in Java continues! Please let me know if you know of a good one.

Log 5:

Implemented map overview system, finalized game concepts.

Map Overview:

This is a LOT more work than you think it is, especially with what I wanted in my game.

First off, each and every new save you make on this game will have completely randomized areas, with completely randomized loots, spawns, paths, locations, what-have-you.

That means, in one game you may stumble on an abandoned ruin within the first few minutes of the game or you may find one much much later. Instead, you may find volcanic areas, jungles, cities long abandoned, graveyards... what have you.

So, in my graph algorithms I had to generate maps 'as you explore'. I also had to weight each 'tile' of the map. Dead-ends and places deeper within hostile territory will have much higher chances of having loot chests or 'special events'. Likewise, weaker monsters and more lesser loot are found on the outskirts. Bonuses are given out on the complete exploration of each sub-area. It's risky to completely explore out deep sections of an area, but the bonuses and rewards are more than worth it. This brings me to my second topic, the game concepts.


Game Concepts:

Battles and Saves:

Battles are brutal, each will [ideally] have you just barely winning with only one monster left with barely any health. You can 'heal' your monsters after battle with Spirit, but you only have a fixed amount. The higher level the monster you are healing, the more Spirit it takes to heal. Spirit is gained by winning battles, exploring areas, random loot chests, or completing quests [not yet implemented, but this is next haha]. You will have to plan out when you recharge your monsters, when to sacrifice them for more Spirit, or when to summon a bunch of new ones to replace your damaged old ones. If you lose a battle, you will have to be able to recharge one of your monsters completely. If you cannot afford this, it's game over.

Following in the footsteps of Faster than Light, you can only save your progress and quit. Loading a save game will 'delete' it. Death is permanent. On death, your party is saved and scored, this party can be used on multiplayer against other players [not yet implemented, will do this last I think.] Some players [including me, and I even made this game] will Game Over within the first five battles. How far can you go?

Battles are highly strategic. Attacks will target a 'position' on the enemy's party side. Monsters can swap positions as well, and the AI will try to keep their glass cannons protected with tanks by swapping the positions of their monsters repeatedly to avoid taking heavy damage. Attacks take time to charge, some attacks are almost instant while some take more than 2 or 3 turns to follow through. The ones that take longer to charge may be able to attack multiple positions, inflict status effects on the enemy party, or buff your own monsters.

Upon defeated an enemy party, you will gain Spirit, EXP, and items. EXP is stored in a pool and you can choose how to allocate it. If you are low in Spirit, a strategy to conserve it while you're looking for more is to hold off leveling your monsters because it is cheaper to heal lower level monsters. You can level up any monster you have in your party, so that level 1 monster you have just summoned doesn't have to be used in battle to get more powerful.

Items:

There are several types of items:

Skill Crests: Gives a monster a new skill [or levels them up if they have it already], as long as it is compatible with the monster and it meets the stat requirements.

Summoning Stones: Summons a new random monster based on the quality of the stone. You will most likely end up using the lower quality summons as either tanks for your higher level monsters or sacrificial fodder for more spirit.

Essences: Increases stats of monsters.

With these items, you can make your dream team of monsters haha.

Fusion:

Monsters can be fused. There are two types of fusion. I don't have names for them yet.

The first type takes a base monster and a sacrificial monster. The base monster gains some of the skills from the sacrifical monster, some stats, and also increases its' Max Level.

The second type takes two monsters and forges a new one entirely. Some monsters can only be summoned, while some monsters can only be forged. Hopefully you can figure out the way to make some really powerful monsters!

Conclusion:

Hopefully this will make you guys want to try out the beta that's coming out SOON(tm) haha. Battles are scary and challenging, but rewarding and fun. Exploration is rewarded and encouraged, but you have to be smart about it.

I wanted to capture the feeling that Realm of the Mad God and Faster than Light had created. Where life is cheap, mistakes are punished, and there are no second chances. yet you will come back for more and more because it's fun, challenging, and rewarding.

Other Notes:

At this point, music works fine, no sound effects yet but I am on the search for them. I'm at 76 different monsters, 69 different attacks/skills/stuff [THANK YOU MAPLESTORY.], 26 different items, 6 different zones with their own theme and backgrounds.

I am currently working on the graphical portion of items, monster stat pages, improving the map overview visuals, securing/encrypting the save files [you can actually 'cheat' by finding the save file and copying it and renaming it. when you die you just rename it back and continue on. You can also open it up and change values around. I want to fix this first before releasing the 'beta'.] and will soon move on to finding some audio files.

I should also look into trying to find bugs...

I need help with:

Finding an appropriate icon for the player on the Map Overview, along with icons for treasure and what not. I am in no way a good artist and cannot draw to save myself. The map overview graphically is... meh to me. I want to improve it and will take any and all suggestions/critique. PLEASE HALP MEH.

Thanks for reading!

Log 6:

Began creating new UI pieces and installed new fonts. Small log, but it's noteworthy.
Added finishing touches to Monster Info, Map Overview, and Fusion screens. More screenshots incoming, too tired =_________=



Acknowledgements:
Monster images were ransacked from a game called Guardian Cross.

Background images are from deviantArtists put under an underpainting filter to standardize their looks.

Sprites courtesy of Maplestory [LOL...]
 

Accname

2D-Graphics enthusiast
Reaction score
1,456
If you want a good 2D graphics library which is fast i suggest to start at the bottom and work with OpenGL directly on the graphics card.
I use lwjgl (the light weight java gaming library) which is a java wrapper for OpenGL, OpenAL and OpenCL functions.
Its hard at first to learn how to work with the open GL functions but after some time your code will be very very fast and efficient.
I had a test programme, a 2D over head view zombie shooter, with 10000 zombies on the map running at me trying to kill me. Smooth 60 frames per second.
 

Varine

And as the moon rises, we shall prepare for war
Reaction score
784
It is really efficient, but you'll probably spend a couple months getting it down.
 

Syndrome

You can change this now in User CP.
Reaction score
126
Months... D:

If that is the case, may I ask for your zombie shooter code? Taking things apart code by code is how I usually learn things.

If it's not too much to ask for, of course.
 

Varine

And as the moon rises, we shall prepare for war
Reaction score
784
I'll see if I can find you any references for it. I'm currently learning Java (never used it before), now that most machines are fast enough that the virtual machine can process it without so much of a delay that the game is lagging trying to compute everything, as I want to distribute it across all platforms and have the network itself run cross-compatible so a PC and play with someone using a phone or Mac, so I'm kind of getting into the same thing you are with learning new libraries.
 

Syndrome

You can change this now in User CP.
Reaction score
126
Yeah, that will definitely help! Please do that xD
I added another fifty or so monsters and have begun working on animations such as damage [the card shakes], powerful attacks [the screen shakes], magic stuff [sprites from maplestory], and smooth hp/mp fluctuations [not done yet].
Slow week, too much uni work...
 

Accname

2D-Graphics enthusiast
Reaction score
1,456
Of course i can give you some examples of code.
The site i got my first lines of code from is this one:
http://ninjacave.com/tutorials

Until now i made somewhat of a 2D game library for myself. I am constantly trying to upgrade it whenever i find something useful to add.
I guess i can give you some source code of that as well.
 

Varine

And as the moon rises, we shall prepare for war
Reaction score
784
FIRECAT HAS SPOKEN! HIS APPROVAL HAS BEEN BEFALLEN UNTO SYNDROME!

Live long and prosper, use your gift wisely, young GD.
 

monoVertex

I'm back!
Reaction score
460
I also agree with the OpenGL suggestion, if you want a fast application you'll have to use OpenGL. Also, pay attention on how the drawings should be done in an optimized fashion (you can still write slow code with OpenGL...) and use things like display lists to speed up rendering.

However, I don't think OpenGL is hard to grasp so if you are a fast learner you should get an application running on OpenGL in weeks. They fed it to us pretty concentrated at university and in a semester we learned a big LOT of it, but we were able to write applications in the first 2-3 weeks.
 

Accname

2D-Graphics enthusiast
Reaction score
1,456
They teached you openGL in university? Wow.
We only get theoretical stuff. (well mostly).
The only coding we get is either a really tiny bit of C for operating systems, namely unix, or robots, a very tiny bit of haskell for functional programming, a very tiny bit of assembler just for the heck of it or pseudo code.
 

Syndrome

You can change this now in User CP.
Reaction score
126
I am in university, 3rd year in Computer Science. Nothing in graphics, which really disappointed me.

In fact, most of my education in the last 3 years was extremely disappointing.
1st year, nothing new at all.
2nd year, a lot of math, still nothing new in terms of computer science.
3rd year, horrible management in course content for two of my classes, and FINALLY something new.

I wasted like... Something like $40k and learned next to nothing.


Anyways, last log before I delve into the OpenGL library:

Animations for 21 spells, 7 different attacks, 3 status effects, and 5 buffs done and it's 'pretty smooth'. Defeat screen done. Screenshots incoming.
 

monoVertex

I'm back!
Reaction score
460
They try to teach us many things from different branches of Computer Science, but you really have to be interested in them, to be able to keep up. I'm in year 3 as well and I can say I learned a lot, but it's been really tiresome.

For example, in functional programming we did Scheme and Haskell, then Prolog, then CLIPS. That semester was packed with so much information I almost failed the class.

Anyway, this is getting off topic, if you need help with OpenGL, drop a post, I'll try to help with what I can.
 

Accname

2D-Graphics enthusiast
Reaction score
1,456
I recently had to write a very very simple openGL program which does nothing but draw a simple rectangular picture on a fixed size display.

So i decided to upload the program here together with the source code. Maybe this can help you learn the use of openGL easier. I think it is very simple and i have added comments to almost every line of code.
I hope this is easy enough to understand:
Code:
package p;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL14;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;

public class Main {
    
    public static void main(String[] args) {
        try {
            FileOutputStream fos = new FileOutputStream("Out.txt");
            PrintStream ps = new PrintStream(fos);
            System.setErr(ps);
            System.setOut(ps);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        
        try {
            // Initializes the openGL context
            doStuff();
        } catch (LWJGLException e2) {
            e2.printStackTrace();
        }
        
        try {
            // Loads the texture and binds it
            bindTexture();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // the main loop and drawing is done here
        loop();
        
        // when the programme is about to terminate
        Display.destroy();
    }
    
    /**
     * Initializes the openGL display and sets all important flags and options.
     * @throws LWJGLException
     */
    public static final void doStuff() throws LWJGLException{
        int width = 800;
        int height = 600;
        
        // A display mode contains the width, height, color depth and frequency of a display
        DisplayMode disMode = new DisplayMode(width, height);
        // This function is used to create a windowed display, use "Display.setDisplayModeAndFullscreen(disMode)" for fullscreen.
        Display.setDisplayMode(disMode);
        // Vertical synchronization
        Display.setVSyncEnabled(true);
        Display.create();
        
        // Enables the use of 2-dimensional textures to be used.
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        // When drawing a shape it will usually be drawn on 2 sides, the back side and front side.
        // You can cull either of these sides to improve the performance if only one side is needed, for example in a 2D application.
        GL11.glCullFace(GL11.GL_BACK);
        GL11.glEnable(GL11.GL_CULL_FACE);
        // The alpha test will not let any pixels be drawn into the depth buffer with an alpha value which fails the test.
        GL11.glEnable(GL11.GL_ALPHA_TEST);
        // In this case each pixel needs an alpha value of greater then 0 in order to be drawn.
        GL11.glAlphaFunc(GL11.GL_GREATER, 0f);
        // Activates blending of transparent shapes drawn on top of each other
        GL11.glEnable(GL11.GL_BLEND);
        // Defines the blend function to be used for the blending. Look that up, its a little more complicated.
        GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
        // The depth test decides whether a pixel can be drawn into the depth buffer or not.
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        // In this case a new pixel needs to have a greater or equal z-value to a pixel already in the buffer
        GL11.glDepthFunc(GL11.GL_GEQUAL);
        // Enables the secondary color to be used when drawing shapes
        GL11.glEnable(GL14.GL_COLOR_SUM);
        // Defines the default scissor test, outside of this rectangle no pixels can be drawn. Can save performance.
        GL11.glViewport(0, 0, width, height);
        // The following steps are needed for 2D-applications only. This is a little bit complicated to explain, please read about it on the internet.
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0, width, height, 0, Double.MIN_VALUE, Double.MAX_VALUE);
        // The color of a pixel which has not been drawn on yet.
        GL11.glClearColor(0f, 0f, 0f, 1f);
    }
    
    /**
     * Binds the texture with the path "Texture.png" and scales the texture matrix appropriately.
     * @throws IOException
     */
    public static final void bindTexture() throws IOException {
        // Uses the slick util to load a png as a texture.
        // Uses a "linear" filter when magnifying the texture.
        Texture tex = TextureLoader.getTexture("png", ResourceLoader.getResourceAsStream("Texture.png"), GL11.GL_LINEAR);
        // Before you can draw from a texture you need to "bind" it to the openGL context. 
        tex.bind();
        // The following steps are needed to use exact pixel coordinations for accessing texture information.
        GL11.glMatrixMode(GL11.GL_TEXTURE);
        GL11.glLoadIdentity();
        GL11.glScalef(1f / tex.getTextureWidth(), 1f / tex.getTextureHeight(), 1);
    }
    
    /**
     * The main loop of the programme.
     * Clears the picture, calls updates on the display and manages keyboard input.
     */
    public static final void loop() {
        boolean exitRequest = false;
        while (!exitRequest){
            // Clears the display with the specified clearColor. This needs to be done every frame.
            GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
            
            draw();
            
            // This is how you use keyboard events.
            while (Keyboard.next()){
                // This int points to the id of the key in question. The Keyboard class has constants for each key.
                int key = Keyboard.getEventKey();
                if (Keyboard.getEventKeyState() && key == Keyboard.KEY_ESCAPE) {
                    // If the getEventKeyState() function returns true then the key was pressed down, other wise it was released.
                    exitRequest = true;
                }
            }
            
            // This needs to be called every frame! Swaps the display buffers and updates the keyboard/mouse input.
            Display.update();
            // This function limits the frame rate to the specified parameter. Its not always 100% accurate.
            Display.sync(60);
            
            // The isCloseRequested() returns true if the window is supposed to be closed. (Via alt+F4 or the close button on the window, etc)
            if (Display.isCloseRequested()) {
                exitRequest = true;
            }
        }
    }
    
    /**
     * The drawing of the texture is done here.
     * Coordinates to be drawn to are fixed.
     */
    public static final void draw() {
        final int srcStartX = 0;
        final int srcStartY = 0;
        final int srcEndX = 400;
        final int srcEndY = 380;
        
        final int drawStartX = 200;
        final int drawStartY = 110;
        final int drawEndX = 600;
        final int drawEndY = 490;
        final int drawZ = 1;
        
        // Before you draw any shape you have to call glBegin with a parameter for the "kind" of shape you want to draw.
        // Possible parameters are GL_QUADS, GL_TRIANGLE, GL_LINE, GL_POINT, GL_POLYGON, GL_TEAPOT, etc
        GL11.glBegin(GL11.GL_QUADS);
        
        // This will set the colour to be used to draw the shape.
        // The secondary color will be added to each pixel of the image. Its parameters must always be between 0 and 1.
        // The "primary" color will be multiplied with each pixel of the image. Its parameters must always be between 0 and 1.
        // You can change the colors between every vertex you specify.
        GL14.glSecondaryColor3f(0f, 0f, 0f);
        GL11.glColor4f(1f, 1f, 1f, 1f);
        
        // You always specify a vertex within the texture and a vertex on the display as a pair.
        // Because we are drawing a quad we need to define 4 pairs of vertices.
        // The order in which you define these vertices is important. Doing these in the wrong order might conflict with the culling of back/front faces.
        GL11.glTexCoord2f(srcStartX,  srcStartY);
        GL11.glVertex3f(drawStartX, drawStartY, drawZ);
        
        GL11.glTexCoord2f(srcStartX,  srcEndY);
        GL11.glVertex3f(drawStartX, drawEndY, drawZ);
        
        GL11.glTexCoord2f(srcEndX  ,  srcEndY);
        GL11.glVertex3f(drawEndX, drawEndY, drawZ);
        
        GL11.glTexCoord2f(srcEndX  ,  srcStartY);
        GL11.glVertex3f(drawEndX, drawStartY, drawZ);
        
        // After a call to glBegin you should never forget to call glEnd after you are finished with drawing.
        GL11.glEnd();
    }
    
}

I also upload the executable jar which can be used with any windows pc.

Credits go to: The guys who wrote lwjgl and slick-util. Also, i took some random picture from google image search as an example.
 

Attachments

Syndrome

You can change this now in User CP.
Reaction score
126
Wow, thanks!
It's midterm season right now so I gotta take a break and actually study, but once I'm free I'm definitely gonna take a look.

...
What's with the Firecat-for-2013 portrait? lol.
 

Syndrome

You can change this now in User CP.
Reaction score
126
Log 5:

Implemented map overview system, finalized game concepts.

Map Overview:

This is a LOT more work than you think it is, especially with what I wanted in my game.

First off, each and every new save you make on this game will have completely randomized areas, with completely randomized loots, spawns, paths, locations, whatever.

That means, in one game you may stumble on an abandoned ruin within the first few minutes of the game or you may find one much much later. Instead, you may find volcanic areas, jungles, cities long abandoned, graveyards... what have you.

So, in my graph algorithms I had to generate maps 'as you explore'. I also had to weight each 'tile' of the map. Dead-ends and places deeper within hostile territory will have much higher chances of having loot chests or 'special events'. Likewise, weaker monsters and more lesser loot are found on the outskirts. Bonuses are given out on the complete exploration of each sub-area. It's risky to completely explore out deep sections of an area, but the bonuses and rewards are more than worth it. This brings me to my second topic, the game concepts.


Game Concepts:

Battles and Saves:

Battles are brutal, each will [ideally] have you just barely winning with only one monster left with barely any health. You can 'heal' your monsters after battle with Spirit, but you only have a fixed amount. The higher level the monster you are healing, the more Spirit it takes to heal. Spirit is gained by winning battles, exploring areas, random loot chests, or completing quests [not yet implemented, but this is next haha]. You will have to plan out when you recharge your monsters, when to sacrifice them for more Spirit, or when to summon a bunch of new ones to replace your damaged old ones. If you lose a battle, you will have to be able to recharge one of your monsters completely. If you cannot afford this, it's game over.

Following in the footsteps of Faster than Light, you can only save your progress and quit. Loading a save game will 'delete' it. Death is permanent. On death, your party is saved and scored, this party can be used on multiplayer against other players [not yet implemented, will do this last I think.] Some players [including me, and I even made this game] will Game Over within the first five battles. How far can you go?

Battles are highly strategic. Attacks will target a 'position' on the enemy's party side. Monsters can swap positions as well, and the AI will try to keep their glass cannons protected with tanks by swapping the positions of their monsters repeatedly to avoid taking heavy damage. Attacks take time to charge, some attacks are almost instant while some take more than 2 or 3 turns to follow through. The ones that take longer to charge may be able to attack multiple positions, inflict status effects on the enemy party, or buff your own monsters.

Upon defeated an enemy party, you will gain Spirit, EXP, and items. EXP is stored in a pool and you can choose how to allocate it. If you are low in Spirit, a strategy to conserve it while you're looking for more is to hold off leveling your monsters because it is cheaper to heal lower level monsters. You can level up any monster you have in your party, so that level 1 monster you have just summoned doesn't have to be used in battle to get more powerful.

Items:

There are several types of items:

Skill Crests: Gives a monster a new skill [or levels them up if they have it already], as long as it is compatible with the monster and it meets the stat requirements.

Summoning Stones: Summons a new random monster based on the quality of the stone. You will most likely end up using the lower quality summons as either tanks for your higher level monsters or sacrificial fodder for more spirit.

Essences: Increases stats of monsters.

With these items, you can make your dream team of monsters haha.

Fusion:

Monsters can be fused. There are two types of fusion. I don't have names for them yet.

The first type takes a base monster and a sacrificial monster. The base monster gains some of the skills from the sacrifical monster, some stats, and also increases its' Max Level.

The second type takes two monsters and forges a new one entirely. Some monsters can only be summoned, while some monsters can only be forged. Hopefully you can figure out the way to make some really powerful monsters!

Conclusion:

Hopefully this will make you guys want to try out the beta that's coming out SOON(tm) haha. Battles are scary and challenging, but rewarding and fun. Exploration is rewarded and encouraged, but you have to be smart about it.

I wanted to capture the feeling that Realm of the Mad God and Faster than Light had created. Where life is cheap, mistakes are punished, and there are no second chances. yet you will come back for more and more because it's fun, challenging, and rewarding.

Other Notes:

At this point, music works fine, no sound effects yet but I am on the search for them. I'm at 76 different monsters, 69 different attacks/skills/stuff [THANK YOU MAPLESTORY.], 26 different items, 6 different zones with their own theme and backgrounds.

I am currently working on the graphical portion of items, monster stat pages, improving the map overview visuals, securing/encrypting the save files [you can actually 'cheat' by finding the save file and copying it and renaming it. when you die you just rename it back and continue on. You can also open it up and change values around. I want to fix this first before releasing the 'beta'.] and will soon move on to finding some audio files.

I should also look into trying to find bugs...

I need help with:

Finding an appropriate icon for the player on the Map Overview, along with icons for treasure and what not. I am in no way a good artist and cannot draw to save myself. The map overview graphically is... meh to me. I want to improve it and will take any and all suggestions/critique. PLEASE HALP MEH.

Thanks for reading! I will put up more screenshots for the map overview soon!
Learning OpenGL was nothing compared to learning assembly mips32. That was killer. :p

Not that I'm saying it was easy though...
 

Syndrome

You can change this now in User CP.
Reaction score
126
Log 6:
Began creating new UI pieces and installed new fonts. Small log, but it's noteworthy.
Added finishing touches to Monster Info, Map Overview, and Fusion screens. More screenshots incoming, too tired =_________=

 

Accname

2D-Graphics enthusiast
Reaction score
1,456
Maybe you should ask a moderator to move this thread from the graphics subforum to, i dont know, programming or general discussion or something.

I think we should have a "members project" forum for general projects somewhere.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • jonas jonas:
    Which company do you work for?
  • vypur85 vypur85:
    Haha yea they'd compare my country as well...
  • vypur85 vypur85:
    Hmm i don't receive any pm? Maybe I'm using my phone. Gonna check it out using my pc later.
  • vypur85 vypur85:
    I'm teaching A Levels in a school in Wuhan.
  • jonas jonas:
    You should see a "private conversations" tab in the chatbox, that's where I sent it to you
    +1
  • jonas jonas:
    Wow
  • jonas jonas:
    Is the school system in your country similar to Chinese school system? I could never imagine being a teacher in a Chinese school, what's expected of students and teachers is just so different from what I'd be looking for as a teacher
  • vypur85 vypur85:
    A Levels is based on the UK syllabus offered internationally. So the syllabus is similar throughout different countries, taught in english.
  • vypur85 vypur85:
    I can't speak or write or read much chinese... Too difficult....... Which also makes my life here in china a lil difficult.
  • jonas jonas:
    Oh, I see. I thought Chinese version of A-levels :D
  • jonas jonas:
    I've been using the translate app a lot on my phone. take a photo, translate. take another photo, translate again :D
  • jonas jonas:
    it also has voice translation, my colleagues sometimes use that
  • jonas jonas:
    You came during the 0 covid policy right? How'd you get through quarantine? Did you have some help with the apps and green codes?
  • tom_mai78101 tom_mai78101:
    If you have any Chinese you need help with, let me know.
  • vypur85 vypur85:
    @jonas Those were the things I did too. Translate app and VPN are always the most important things to have to survive. Lol.
  • vypur85 vypur85:
    Yea I came last year. I was quarantined for about 30 days. Fml. The first day of my quarantine was the eve of Chinese new year last year. Fml again... Lol.
  • vypur85 vypur85:
    @tom_mai78101 IIRC you're from Taiwan right.
  • The Helper The Helper:
    I thought China had cracked down on having any foreign teachers?
  • vypur85 vypur85:
    Yeah I've heard of the news before. My school is still actively hiring foreign teachers. Not sure how things work now.
  • The Helper The Helper:
    yeah it is hard to get reliable information about that kind of stuff
  • The Helper The Helper:
    but you are doing it so it is still doable
  • vypur85 vypur85:
    I think it doesn't affect existing foreign teachers. Then again, its still weird that my school is hiring.
  • The Helper The Helper:
    Happy Monday people hope everyone has a fantastic week!
  • Ghan Ghan:
    Happy Monday?! That's a contradiction.

    The Helper Discord

    Staff online

    • Ghan
      Administrator - Servers are fun

    Members online

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top