Simple LED driver, transistor and GPIO
BJT's as switches aren't complicated.

One input is the value of your power supply voltage -- call it \$V_\text{CC}\$. Another input is the desired operating current of the LED -- call it \$I_\text{LED}\$. Another input is the worst-case voltage drop of that LED when running at that desired operating current -- call it \$V_{\text{LED}_\text{MAX}}\$. Another input is the best-case voltage drop of that LED when running at that desired operating current -- call it \$V_{\text{LED}_\text{MIN}}\$.

With those in hand, you need to "design" a resistor to be used as a current limiter and placed in series with the LED, itself. The value of this resistor can be determined in any of several ways. If you need to be absolutely sure that you get at least \$\ge I_\text{LED}\$ then \$R_\text{LIMIT}=\frac{V_\text{CC}-V_{\text{LED}_\text{MAX}}}{I_\text{LED}}\$. If you need to be absolutely sure that you get at most \$\le I_\text{LED}\$ then \$R_\text{LIMIT}=\frac{V_\text{CC}-V_{\text{LED}_\text{MIN}}}{I_\text{LED}}\$. But it's probably better to just take the middle-point and set \$R_\text{LIMIT}=\frac{2\cdot V_\text{CC}-V_{\text{LED}_\text{MIN}}-V_{\text{LED}_\text{MAX}}}{2\cdot I_\text{LED}}\$. (That uses the average voltage drop across the LED in setting \$R_\text{LIMIT}\$.)

(If all you have is one voltage for the LED, \$V_\text{LED}\$, then \$V_{\text{LED}_\text{MAX}}=V_{\text{LED}_\text{MIN}}=V_\text{LED}\$, and you can use those above equations in that way, instead.)

Regardless of how you compute the value, you will then have to find a nearby standard value for the resistor. Depending on your reasoning for the calculation itself, whether you round up or round down is your call about meeting your goals. Just use your better judgment when selecting the standard value. Once you have chosen that value, you need to work out the dissipation in the resistor. I could bog this down by worrying about how much voltage is dropped also by the BJT. But it's small and I'm going to ignore it. It's also better to assume all of the excess dissipation is in the resistor, anyway. So the power rating you select should be \$P_R\ge\frac{\left(V_\text{CC}-V_{\text{LED}_\text{MIN}}\right)^2}{R_\text{LIMIT}}\$. I've used the minimum LED voltage drop so that I maximize this power calculation value. Select a power rating in the area of about twice this number. You can get by with less. But it is better to be sure.

If this power value is unusually high for some reason, you should consider taking a different approach. High dissipation in the current limiting resistor is a strong suggestion that you find a means using a more efficient design topology (and pretty much always a more complex one.)

Given \$I_\text{LED}\$, it's safest to assume \$\beta=10\$ for the purposes of "saturating deeply" the BJT. That's the goal when using a BJT as a switch. So the base current will be \$I_\text{BASE}=\frac{I_\text{LED}}{\beta=10}\$. (Sure, once you select an actual standard value resistor, you may get a somewhat different LED current. But this calculation is using a very approximate and relatively certain value of \$\beta=10\$. So this calculation is sufficient.)

If this value of \$I_\text{BASE}\$ is too high for your I/O pin to deliver, then this design topology needs to be modified.

Assuming you can supply \$I_\text{BASE}\$ with your I/O pin, then you can proceed on to working out the base current limiting resistor: \$R_\text{BASE}=\frac{V_{\text{IO}_\text{HIGH}}-V_\text{BE}}{I_\text{BASE}}\$. Again, select a nearby standard value for this. Going smaller will supply more base current. Going larger will supply less. This isn't a critical decision, so either way will probably be fine. (It's unlikely that you need to worry about the power dissipation in the base resistor.) The value of \$V_\text{BE}\$ is often taken as \$700\:\text{mV}\$. But you could use something \$\pm 100\:\text{mV}\$ around that, too. It's usually not all that important. And clearly, I mean \$V_{\text{IO}_\text{HIGH}}\$ to be the high output voltage for your IO pin -- which you must also have as an input to this process.

You've included also a resistor to ground in the base circuit. You can keep that, if you want.

I'd compute \$R_\text{LIMIT}=\frac{6\:\text{V}-3\:\text{V}}{100\:\text{mA}}=30\:\Omega\$. You've selected \$27\:\Omega\$, which is just fine. I'd also compute \$R_\text{BASE}=\frac{3.3\:\text{V}-800\:\text{mV}}{10\:\text{mA}}=250\:\Omega\$. I'd use a standard value of \$270\:\Omega\$.

But note that this may require \$10\:\text{mA}\$ from your IO pin! It's not necessarily a bad thing to set \$\beta=20\$ for these purposes (if it works.) That would allow you to increase \$R_\text{LIMIT}\$ and reduce the IO pin current, substantially. So feel free to test that out.

As far as your simulation goes, I don't use that one. But it looks like you might have a simple diode there instead of an LED requiring \$3\:\text{V}\$ voltage drop across it. So that may be your problem in the simulation.