Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Eclipse Origins v2 Beta


Robin
 Share

Recommended Posts

  • Replies 3.3k
  • Created
  • Last Reply

Top Posters In This Topic

RichTextBoxes do not support Picture Backgrounds however, there is a work around

Make a PictureBox on the Form. Put the RichTextBox over (or inside) of the PictureBox.

Inside of the Source of frmMain At the VERY top, add

```
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_EXSTYLE = (-20)
Const WS_EX_TRANSPARENT = &H20&

```
Then inside from Form_Load() Add
```
Dim result As Long
result = SetWindowLong(txtChat.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)

```
Link to comment
Share on other sites

@Pikachu!:

> Robin, can we have the old emotes back?

There's never been an emote system. How can I bring it back?

@SnOwFoX:

> Sucks that you cant compress a file and make that code load off the file for loading up the sprites. My friend did it on a java 2d engine that had the same graphics folder and shit and he did that but he never told me how to do it.

Google 'vb6 file compression'.

@Raiko:

> Why in the item editor the armors have demage shound be defense ?

It should be 'Defence'. It's simply a label, ignore it.

@Pikachu!:

> I finally managed to get VB6 to work for me :D
>
> Now to definitely start learning.

Good luck with that.

@Marlos:

> How do I put image in the chat?

This thread is not for asking for support, it's for development discussion.
Link to comment
Share on other sites

Right, found the cause of the main memory leak, the average FPS dropping over time and the sporadic nature of the FPS, especially in maps with lots of players and NPCs.

One line of code. The call to the CreateFont function.

Apparently Jake traced it a while back and was kind enough to tell me. Thanks Jake, you're a wonder as always. <3

Not quite sure where to go with it, to be honest. I can just remove the ability to set the font and we're left with the default, which as far as I can tell is Arial Bold on the game screen and just… well, just Arial when rendering to GDI DCs. That's a bit cheap, however.

I suppose I could also switch to bitmap text rendering. That's what I use in D3D8, so all the procedures are already in place. GDI DC rendering doesn't support masking as far as I'm aware, which kind of destroys rendering text in a picturebox...

For the first time in quite a few years I honestly have no idea what to do with it. For now I'll just remove the custom font system. I'll brainstorm a few ways of getting around this problem.
Link to comment
Share on other sites

@MrMiguu:

> Is the way that DX draws system-based fonts slower than drawing images?

Have you ever seen the way DirectX draws fonts? Because we're certainly not using that.

DirectX locks the DC, renders the text, then unlocks the DC. For every single piece of text. That's why we don't use that.

We changed it so we've got a centralised lock/unlock which happens once per loop. In that we added GDI text rendering. This ran _much_ faster. That's the reason everyone will tell you not to use DirectX text rendering.

In DirectX8 I simply use a texture to render text. That's fine. The problem in using that in Origins is that a lot of text rendering isn't done on the screen, it's done on the pictureboxes.

Is bitmap rendering faster? Of course. Hell, you can see that yourself. You render 770 tiles per loop just fine. Try and render 770 single-letter strings. ;]
Link to comment
Share on other sites

This is kinda a rambling post of things that might be wrong, let me know if I'm completely off base (I often am). What's causing the leak? CreateFont isn't being called in a loop or anything.. [This article](http://www.vbforums.com/showthread.php?t=543781) indicates that the DC is being recreated causing the font to be leaked.

> When stuff like that happens, it is usually an indication you have memory leaks. I see one that you have which is probably causing your problems…
>
> Picture1 is where you are selecting a memory font into. While the font is selected, you are modifying the size of Picture1\. The leak occurs then. When you get enough leaks, you sometimes see this in the fonts and not just your app, could be for all apps eventually.
>
> Why is the code leaking memory/resources? Here is why.
> The Picture1 object has its AutoRedraw set to True. When this is the case, when the DC is modified, VB goes and creates a new DC. Modifying DCs can happen when control is resized, .CLS, etc. What happend to the old DC? It was destroyed. What happend to the font you selected into that DC? It was leaked.

The solution would be to release the memory from the font before any new DC is created.

Is the leak occurring only on frmMain or only on GameFont (I'm guessing GameFont)? It's not anything inherit in CreateFont I'm guessing..
Link to comment
Share on other sites

I honestly haven't looked in to it that far yet, I simply looked in to it enough to find out what was causing the problem.

CreateFont _is_ causing the problem because if you remove it the problem goes away. ;]

If you look at the line it's creating a new object. Drawing the text uses that object. For each call of text drawing, you're creating a new object. Go in the source and look for yourself. Comment out that line and all the problems vanish.
Link to comment
Share on other sites

INT doesn't really affect anything. If you increase it, it doesn't make you do more damage with spells. Same for Will. Str, Agi, End seem to work and do something, but INT and WILL seem to have no use. So INT is pointless. You should make it so that Base Damage of spell + INT = Damage of Spell. Or another formula similar to that. Instead of developers having to make a new move for level ups  that do more damage for a magician class. The damage of a magicians spells will automatically increase with levels. Also, a type of items "Pants" could be added to the item types.

If you don't understand what damage is, it's Vital  -_- Damage is the term Americans use.

Did I post this in the correct place this time Robin?
Link to comment
Share on other sites

@ayevdayev:

> -snip-

Learn to use the search function next time.

@Robin:

> **Attributes:**
> _Strength:_
> Adds to your max melee hit at [STR / 2]
> Adds to your base melee damage reduction from a successful block at [STR / 2]
> Adds to your base parry rate at [STR * 0.25]
>
> _Endurance:_
> Adds to your max health at [END * 5]
>
> _Intelligence:_
> Adds to your max mana at [INT * 10]
>
> _Agility:_
> Adds to your base armour rating at [AGI * 2]
> Adds to your base dodge rate at [AGI / 83.3]
> Adds to your base crit rate at [AGI / 52.08]
>
> _Willpower:_
> Adds to your health regen rate at [(WILL * 0.8) + 6]
> Adds to your mana regen rate at [(WILL / 4) + 12.5]

**Protip:** Just because something doesn't work how _you_ want it to work doesn't mean it doesn't work at all.

@ayevdayev:

> If you don't understand what damage is, it's Vital  -_- Damage is the term Americans use.

Yeah, we have a couple of phrases over here in England that I could call you. ;)
Link to comment
Share on other sites

@Robin:

> Learn to use the search function next time.
>
> **Protip:** Just because something doesn't work how _you_ want it to work doesn't mean it doesn't work at all.
>
> Yeah, we have a couple of phrases over here in England that I could call you. ;)

I guess you win :) but…
In ALL games that I have played with the stat INT, INT increases magic attack AND max mp! It's kind of a drag to have to make new spells for a magician class for let's say every 5 levels to make them do the damage that they should do + all the other spells in the game. A INT based spell damage system would be better than having to constantly make new spells. And fill the server up with a bunch of spells. Just giving you something to think about when you developing the next version of Origins. :) I'm not trying to be mean and I am a noob at this forum (check my post count) and I am an extreme noob at old VB versions. So, since I can't do that kind of change to the source, I think that you can easily make the change and share it with everyone on this forum. Or maybe help people (tutorial) that would want something like this in their game. Thanks for clearing out to me what the stats do because I actually didn't know that info (noob). So thanks and I guess you pwned me. :)
Link to comment
Share on other sites

See my tutorial from last night on how to make Spells Scale according to the player level. http://www.touchofdeathforums.com/smf/index.php/topic,68552.0.html

It would be 'neat' to see it in future versions of Eclipse, but in essence it's very easy to add yourself, at some point the engine needs to stop doing the work for everyone and they need to modify it themselves, else we just get cookie-cutter games.
Link to comment
Share on other sites

@Robin: Your "to do" list is getting awfully short. When you finally complete all there is to debug, are you going to desist working on Origins any further and leave it up to the players to add the extra features?
Link to comment
Share on other sites

@ayevdayev:

> I guess you win :) but…
> In ALL games that I have played with the stat INT, INT increases magic attack AND max mp! It's kind of a drag to have to make new spells for a magician class for let's say every 5 levels to make them do the damage that they should do + all the other spells in the game. A INT based spell damage system would be better than having to constantly make new spells. And fill the server up with a bunch of spells. Just giving you something to think about when you developing the next version of Origins. :) I'm not trying to be mean and I am a noob at this forum (check my post count) and I am an extreme noob at old VB versions. So, since I can't do that kind of change to the source, I think that you can easily make the change and share it with everyone on this forum. Or maybe help people (tutorial) that would want something like this in their game. Thanks for clearing out to me what the stats do because I actually didn't know that info (noob). So thanks and I guess you pwned me. :)

I think this would clear up your suggestion. I did the same suggestion with PV. So I'm with you on that.

>! Str: Adds as a multiplier for Physical Dmg. vs End
Agi: Adds as a multiplier for attack speed/Dodge. vs Dex
End: Add as a multiplier for defense/Hp. vs Str
Int: Adds as a multiplier for Magic Dmg and Magic Def/Mp. vs Int
Dex: Adds as a multiplier for Hit Rate vs Agi.
Luk: Add as a muliplier for Crit/Block Shield.
Link to comment
Share on other sites

Okay, I edited the spell script myself :)

Vital = Vital + Player(index).Level + (GetPlayerStat(index, Stats.Intelligence) * 2)
[Base Damage of Spell + Level of Character + (INT * 2) ]

It works perfectly. Thanks for not helping me Robin. Somehow I figured this out myself, VB 6 is like a basic text scripting system. I actually think newer versions are harder to use.
Link to comment
Share on other sites

@ayevdayev:

> Thanks for not helping me Robin.

You never asked me to help, you asked me to change the engine to your idea of what it should be. Get your head out of your arse. I've got a community of 27,000 people to cater to. I'm not going to make the engine exactly how you want it. That's why the source code is there.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...